问题描述
我有一个 Postgresql 表,由 users 和 followers 组成,名为 relations,有 2 亿行,并且它以每周 1000 万新用户和他们之间新关系的速度增长。我在列上设置了一个索引,我需要每一对用户和关注者都是唯一的。一个用户的最大关注数为5000,用户查询是双向的,如:
用户 SELECT users,followers FROM relations WHERE users NOT IN (1,2,3);
关注者 SELECT users,followers FROM relations WHERE followers NOT IN (1,3);
时间:
像 SELECT COUNT(*) FROM relations;
这样的简单查询在我的系统中需要 10 秒,而我需要等待半小时才能执行前面提到的查询。
存储这个图的最佳数据库是什么(高写入率和高读取率)
解决方法
InfiniteGraph 肯定会处理数据量和增长率,并且对于 50 GB 以下的数据库有一个免费版本。我们定期测试其每小时摄取数十亿个节点和边缘的能力。这些测试在多节点云架构上运行,因此您的硬件性能可能会有所不同。
InfiniteGraph 支持索引。
InfiniteGraph 查询语言是“DO”,您的查询将类似于:
MATCH path = (u:User)-[:Relation]->(f:Follower) RETURN u,f;
和
FROM Relation return COUNT(*);
免责声明:我是 InfiniteGraph 的制造商 Objectivity 的现场运营总监。