在我的工作中,我们正在构建一个巨大的应用程序,将使用数十亿的三元组,以优化存储这些三元组所需的空间我一直在寻找一种不同的方式来代表它们,任何更经济的方式都是受欢迎的。 感谢
答案 0 :(得分:3)
还有一整类图形存储系统不像neo4j那样存储三元组。但是,我不排除三重商店仅仅是因为它们存储三元组;-)今天许多当前的解决方案已经存储了数十亿的三元组,所以它不能撤销(尽管你得到比这更高的1或2个订单强硬)。我亲自填补了超过10亿的Allegrograph商店。
看到这个帖子: http://www.semanticoverflow.com/questions/3332/scalable-owl-rdf-database
答案 1 :(得分:3)
我认为存储数十亿个三元组所需的空间实际上并不比在SQL数据库中存储数十亿行所需的空间更差。
大多数系统采用的基本存储/基于SQL的一般方法是将ID分配给节点并将每个三元组存储为3个节点ID。鉴于节点ID生成的良好选择以及节点ID和节点值之间的有效索引,您可以轻松构建大规模扩展的存储。
作为进一步的优化,一些商店以这样的方式生成节点ID:简单的值类型(例如整数,布尔值,日期时间等)将其值直接编码到节点ID中,因此不需要从ID到值(或插入此类数据时反之亦然)
答案 2 :(得分:2)
正如RobV所说,几乎所有商店都将内部值/ node-id附加到三元组的元素。话虽这么说,三重存储的大量空间是由查找所需的各种索引占用的。在关系数据库中,您可以根据所使用的数据模型轻松减少索引数。在三重商店中,这要困难得多,并且商店基本上会以三种元素的元素的不同方式创建大量(6+)索引。
答案 3 :(得分:0)