这个问题似乎很奇怪,但我对如何解决这类问题非常好奇。
问题是我有两个不同的网络平台,让我们说:
Platform A本地网络应用程序(基于Java),带有专用的OracleSQL数据库服务器。
使用postgres SQL的平台B Django
所有系统都在本地网络中。
因此,在平台B中,有一些django视图需要来自系统A的聚合数据,但这些数据仅在每个请求的基础上需要。
我的意思是,系统A是一个只有产品定价信息的ERP软件,而平台B(django)本身就有产品清单。
所以我需要在django中创建一个视图,列出按价格排序的产品。如何做到这一点?
我正在考虑查询产品的django,将产品列表加载到RAM存储器中,然后向平台A询问发送产品ID数组列表的价格,然后在RAM内存中进行合并以生成查询集按价格排序。
对于这个目的,REDIS可能有任何好处吗?
我们可以直接访问OracleDB,并且可以在平台A中开发特定的端点服务。让我们说一个API-JSON端点。
为了澄清我的问题,数据流可以是:
要求:给我产品
-> PlatformB <-> getPrices() <-> PlatformA
PlatformB:Products | Prices:PlatformA
<- result <- PlatformB
问题是如何获得此PlatformB:产品|价格:平台A的表现方式。
非常感谢你的时间,
亲切的问候!
答案 0 :(得分:0)
如果实际传递合并数据的端点位于B(基于django的应用程序)中,您可以像您已经提出的那样:
这也要求Django和A知道相同的产品ID。
或者,您可以选择将数据加载到Redis中。如果您已经拥有可由A和B访问的Redis,并且产品数据非常稳定,那么更是如此。例如,如果产品每天加载一次,您可以在之后立即重新加载Redis中的数据。
这主要是具有高性能的PK查找。如果您需要可搜索的产品,这不是最佳选择。
它还要求A和B使用相同的产品ID,并且在请求时间内知道产品ID。
作为第三种选择,如果您需要可搜索,可排序,可过滤的数据和高性能:
您可以将所有内容加载到搜索索引中,例如SOLR或Elastic,已在您需要交付的结构中完全准备好。这将允许您搜索产品名称,对结果结构进行自动完成,分面,排序,分页等。特别是facetting(也就是Elastic中的聚合)是您可能会觉得有用的东西。
它还会将耗时的工作转移到导入过程并减轻其请求。在导入过程中,如果A和B 不使用相同的产品ID,则可以对齐数据。
您尚未提供有关系统的大量信息,无法真正确定适合您的环境,数据和用例的最佳解决方案。