问题描述
我打算使用 Janusgraph 来构建我们团队处理的不同用途的图,我看到 janus 图可以选择使用 BigTable 或 Cassandra 作为存储后端。我正在寻找有关使用 JanusGraph 哪个后端更优化/性能更好的建议(我主要谈论的是节点的 2 跳邻居上的 gremlin 查询性能)。
我知道性能是非常主观的,并且会因数据大小/图形连接性和用例而异,因此最好的方法是亲自尝试,我打算这样做。但是有没有其他人做过类似的性能比较?这里有关于存储后端的一般建议吗?
解决方法
你是对的,表现是两者兼而有之:
- 主观的
- 很大程度上取决于数据大小
我可以告诉你,我也做过这个练习。为此,我认为分享来自 DB-Engines.com 的这个比较很重要。
就性能而言,我最关注的是每个人如何处理一致性。作为一般规则,强制执行更高级别一致性的数据库通常必须牺牲性能。
- BigTable == 强一致性
- Cassandra == 最终一致
其他值得考虑的因素是 BigTable 将您限制为 Google Cloud (GCP)。如果您不想在网络上损失性能,您还需要为 GCP 上的更多 (Janus) 实例付费以实现数据本地化。
就原始 DB-Engine “得分”而言,Cassandra 目前为 114.112,而 BigTable 仅为微不足道的 3.582。这些分数会逐月变化,但总的来说,这意味着 Cassandra 拥有一个 更强大的社区。同样,Cassandra 在此站点上有 18182 个问题,而 BigTable 只有 449 个。最重要的是,获得支持和问题答案会容易得多。
仅基于社区的潜在实力,Cassandra 是这里更好的选择。
过去几年在 Cassandra 上支持 JanusGraph,我可以告诉你,总体来说它很可靠。这些困难往往与批量数据加载有关。但除此之外,事情似乎运行得很好。