在工作中,我们希望我们的下一代产品基于图形数据库。我正在寻找关于什么数据库引擎可能适合我们的新项目的建议:
Out product旨在跟踪大量商品价格。这里有一个简单的例子 - 假设你想要估算英国的汽油价格 - 你知道汽油是用原油精炼的。如果你在英国新的原油价格,你可以简单地通过增加精炼,运输(等)的成本来估算任何东西的价格。实际上事情更复杂,因为有许多原油来源和数百种成品油产品。石油产品的价格可能受到其他能源(如核能,风能,天然气)和需求的影响。这有点复杂!
我们的想法是,我们想要将各种相互关联的商品及其精炼,运输(等)的成本建模为非循环有向图。这个想法是,当事件导致价格发生变化时,我们希望能够快速确定受影响的事物类型并尽快重新计算这些价格。
基本上我们需要一个可以将各个商品表示为图中节点的数据库。每个节点将存储许多与产品有关的信息曲线和曲面。
我们希望代表各种成本和价格。转换(例如,精炼,运输)作为边缘上的标签。与节点一样,我们想要存储的信息可能非常复杂 - 不仅仅是单个值,还有曲线和曲面。
我们所做的计算都是相对于对象大小的线性,但由于图形可能非常大,我们需要能够非常快速地遍历图形。
我们以Java和Python为中心 - 理想情况下,我们追求的是在JVM上运行的产品,但它具有非常好的Python和Java API。我们对其他语言并不在乎......但是.Net会很好(尽管可能需要几年时间才能完成它的工作)。
我们肯定喜欢高性能的东西 - 但更重要的是系统需要具备一定程度的硬件容错能力。例如,我们希望将数据库分布在多个物理服务器上。如果任何服务器出现故障,我们希望能够在没有中断的情况下继续运行。
哦,我们真的很懒。我们不想花太多时间编写基础设施 - 所以如果数据库附带了工具,这些工具可以让我们尽可能多地完成这类工作,而我们的工作很少。如果存在与图形DB相关联的网格技术,那么这也是一个真正的好处,这样我们就可以将一系列重新计算的作业推送到计算网格上,并且我们的计算大部分是在并行计算中完成的。
所以,这是我们想要构建的东西的描述。我想知道的是,是否有任何成熟的技术可以帮助我们实现这一目标。正如我之前提到的,我们偏爱Python& JVM,但是如果技术真的很好并且附带了很好的Python + Java绑定,我们几乎可以考虑任何事情。
答案 0 :(得分:3)
Neo4J是我所知道的最成熟的graphDB - 并且是java,也是python的绑定,或者是REST