图和关系数据库的横向时间复杂度是多少?
3 回答
计算机或代数哪个更快?
关系模型是一种思考数据的方式,一种向用户表示数据的方式。它没有说明实施。询问关系数据库的时间复杂度就像询问. f(x)
我没有使用过使用元组线性数组来存储数据的 SQL DBMS。他们都使用某种树:B-tree、B+tree。树是图。因此,图形数据库声称的物理优势是基于,好吧,如果你问我的话。
SQL DBMS 在过去几年增加了对所谓的递归查询的支持。这些查询的有效执行不存在理论上的问题,而且我已经看到它完成了。但是查询优化器必须支持它才能正常工作,如果开源项目在该领域有一些工作要做,我不会感到惊讶。
在选择你的武器时,不要询问“关系数据库”,而是询问在特定实现中对递归查询处理的支持,
不过要小心错误的对称性。“图形数据库”中缺少相当长的列表。例如,关系模型基于代数,这是 SQL 所基于的(主要是松散的)。图论缺乏这样的代数,因此缺乏良好的操作语言。约束执行和交易也有类似的故事。
图数据库的一个(也许是)关键点是不必为遍历做任何连接。
两者都有 O(N)?
图形数据库的核心是一个表(https://stackoverflow.com/a/2968931/623735)。RDB 已经发展到在处理表方面非常有效。因此,大多数具有持久存储的大型 GDB 都使用 RDB 来存储节点表。GDB 只是将所有常规数据表行的 id 堆叠到一个“节点”表中(为高效索引而分组和排序)。GDB 的魔力在于用于遍历/探索图形的高效算法。
所以我不认为 GDB 真的像 RDBMS 对相同类型的数据进行相同类型的查询那样对两个表进行连接(遍历)。GDB 只是以链表的方式从一个节点(节点表中的行)走到另一个节点。一旦找到您查询的节点,然后对节点属性表进行一次“遍历”以检索您查询的信息(名称、等级、序列号;)。