书接上文:图数据库 | 4、图数据库三大组件之一 ——图计算 (上)-优快云博客
结合计算效率来评估与设计图计算所需的数据结构。
存储低效性或许是相邻矩阵或关联矩阵等数据结构的最大缺点,尽管它有着O(1)的访问时间复杂度。例如通过数组下标定位任何一条边或顶点所需的时间是恒定的O(1),相比而言,相邻链表对于存储空间的需求要小得多,在工业界中的应用也更为广泛。例如Facebook的社交图谱(其底层的技术架构代码为Tao/Dragon)采用的就是相邻链表的方式,链表中每个顶点表示一个人,而每个顶点下的链表表示这个人的朋友或关注者。
这种设计方式很容易被理解,但是它可能会遇到热点问题,例如如果一个顶点有1万个邻居,那么链表的长度有10 000步,遍历这个链表的时间复杂度为O(10 000)。在链表上的增删改查操作都是一样的复杂度,更准确地说,平均复杂度为O(5000)。另一个角度来看,链表的并发能力很糟糕,你无法对一个链表进行并发(写)操作。事实上,Facebook的架构中限定了一个用户的朋友不能超过6000人,微信中也有类似的朋友人数限制。
现在,让我们思考一个方法,一种数据结构可以平衡以下两件事情。
·存储空间:相对可控的、占用更小的存储空间来存放更大量的数据。
·访问速度:低访问延迟,并且
订阅专栏 解锁全文
595

被折叠的 条评论
为什么被折叠?



