gpt4 book ai didi

ruby - 存储稀疏矩阵的数据库

转载 作者:数据小太阳 更新时间:2023-10-29 07:53:59 24 4
gpt4 key购买 nike

我有一个非常大且非常稀疏的矩阵,仅由 0 和 1 组成。然后我基本上处理(行-列)对。每行/列最多有 10k 对。

我的需求如下:

  • 并行插入(行-列)对

  • 快速检索整行或整列

  • 快速查询(行-列)对的存在

  • 如果可能,一个 Ruby 客户端


现有数据库是否适用于此类限制?

如果没有,什么能让我获得最好的表现:

  • 一个 SQL 数据库,有一个像这样的表:

行(索引)| column(indexed)(但索引必须不断刷新)

  • 一个 NoSQL 键值存储,有两个这样的表:

row => columns 有序列表

column => rows 有序列表

(但同时向列表中插入元素)

  • 其他

感谢您的帮助!

最佳答案

稀疏的 0/1 矩阵听起来像 adjacency matrix ,用于表示图形。基于此,您可能正在尝试解决一些图形问题,而图形数据库将满足您的需求。

图形数据库,如 Neo4J , 非常适合图的快速遍历,因为检索一个顶点的邻居需要 O(给定顶点的邻居数),所以它与整个图中的顶点数无关。 Neo4J 也是事务性的,因此并行插入不是问题。您可以使用 REST API wrapper在 MRI Ruby 中,或 JRuby library实现更无缝的集成。

另一方面,如果您正在尝试分析图表中的连接,并且偶尔进行一次分析并提供结果就足够了,您可以使用图表框架试试运气基于Google Pregel处理.它有点像 Map-Reduce,但旨在进行图形处理。已经有 several open source implementations of that paper .

但是,如果图数据库或图处理框架不适合您的需求,我建议您看一看 HBase ,这是一个基于 Google BigTable 的开源、面向列的数据存储。 .它的数据模型实际上与您描述的(稀疏矩阵)非常相似,它具有行级事务,并且不需要您检索整行,只是检查是否存在某对。有一些Ruby libraries for that database ,但我认为使用 JRuby 而不是 MRI 与其交互会更安全。

关于ruby - 存储稀疏矩阵的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8336354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com