我读了几个话题,但是我迷失了。我对这个非常新。我想存储巨大的稀疏矩阵,并有几个想法,但可以在它们之间进行选择。以下是我的需求:
如果我在某些地方的估计错误,请纠正我。
- 大约5000万个顶点的邻接矩阵。
- 每个顶点的最大邻居数-大约10,000个。
- 每个顶点的平均邻居数-大约200-300个。
- 快速行查询-向量将与此矩阵相乘。
- O(1)复杂度添加边缘。
- 很可能不会删除边缘。
- v相邻的顶点的枚举-尽可能快。
- 可移植性-必须有一种方法将基础从一个计算机转移到另一个计算机。
- 巨大的表格,其中包含成对的(行,列)。非常简单,但是至少枚举顶点将是O(log N),其中N是表的大小。我认为它相当慢。此外,必须对其进行索引。每个RDBMS都适用于此。
- 大量列表:每个顶点一个列表。非常快的枚举,但是存储这些列表需要大量资源吗?此外,我不确定在这种情况下要使用哪个DBMS:可能是一些NoSql?
- 巨大的表格(行|列集)。两者的组合。我不确定是否有任何RDBMS支持任意集合。你知道吗?也许NoSql在这里很有用?
- 邻接列表的集合。任何RDBMS都适用于该集合,并且在复杂度方面的成本很好,但它们可以被针对一个顶点的多个请求杀死。
- HDF5-我认为由于I/O而慢。
- Neo4j-据我所知,它将数据存储在双向列表中,因此实际上与#4相同,我对吗?
如果我在某些地方的估计错误,请纠正我。