我在做一个类似于社交网络的系统。最大用户数最终必须为 50.000 或最多 70.000。
目前我正在使用 mysqli+prepared 语句。 ERD现在有30张 table ,最终可能会达到40张 table 。
所以,我的问题是:我从未使用过图形数据库...我已经通过 mysql workbench 完成了 ERD,并且已经开发了一些代码。对于这个项目中预期的用户数量,建议从 MySQL 更改为图数据库?我的sql代码和数据库模型可以用吗?这种变化有什么好处吗?
你怎么看?
谢谢
最佳答案
如果您可以访问递归查询(在 MySQL 中不是这种情况,但在 PostgreSQL 中可用)并且您的查询涉及最大深度标准(这可能是您在社交网络上的情况),或者它们是否已正确编入索引。
有多种索引图的方法。在您的情况下,您的图表可能并不密集,因为您正在处理几乎独立的多个森林(您通常会处理紧密聚集的用户组),因此您有很多选择。
最容易实现的是传递闭包(基本上就是调用所有潜在路径的预计算)。在您的情况下,它很可能是部分的(例如,深度 2 或深度 3)。这允许在单独的表中完全索引相关节点,以实现非常快速的图形查询。使用触发器或存储过程使其保持同步。
如果您的图表比这更密集,您可能需要考虑使用 GRIPP index .与嵌套集非常相似,如果您删除 (rgt - lft - 1)/2
= number of children 属性,并为 lft/rgt 使用浮点值,则后者效果最好(更新最快)而不是整数。 (这样做可以避免在插入/移动节点时重新索引整个图 block 。)
关于mysql - 社交网络的图形数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6269387/