【发布时间】:2015-07-17 17:40:49
【问题描述】:
在创建我的社交网络数据库之前,我正在做研究,我发现了很多与社交网络的图形和键值数据库有关的问题/资源。我知道有很多不同的选项和方法来实现数据库。我也明白大公司所做的事情很复杂,而且远远超出了我目前的需求(1b+ 用户)。我也知道每家大公司都修改了他们的数据库,以应对他们经历的疯狂扩展。
因为我不知道网络将如何发展,而且我不相信我可以准确地创建一个可以扩展到 100 万用户的模型(由于未知数,例如人们将如何使用它、人们发布的频率、评论等)。但我至少可以尝试创建一个在(如果)需要时最容易扩展的数据库。
大多数公司是否会创建一个数据库来处理多达 1000 个用户,然后一旦它们增长,他们会针对 10000 个用户进行改造,然后是 100000 个用户,等等?如果他们这样做,在这些任意数字中的每一个(由于上面列出的未知数),公司是否通常会更改一些表/节点/等,或者他们是否完全重新创建数据库以利用新技术(例如从 SQL 迁移图表)?
我想选择最佳解决方案,但我发现在图形、键值、SQL 等之间做出决定非常困难——尤其是在没有数据知道哪些关系/数据最重要的情况下。我相信我可以使用可以支持多达 10k 用户的图形创建一个可靠的系统,但我担心随着系统的增长必须完全重新创建数据库。这是现在担心避免问题,还是现在实施并适应以后的类型问题?
进一步说,如果我确实需要计划完整的数据库重组,使用多模型 NoSQL DBMS(例如 OrientDB 或 ArangoDB)通常是否有意义?
【问题讨论】:
-
恕我直言,这是一种混合;大多数公司都试图预测合理的增长量并朝着这个目标努力。一些项目取得了疯狂的成功和建筑师,但并不多。有的根本不投射,他们只是拍打在一起,以后再处理后果。不过,重要的是要理解,在那些朝着合理增长预测方向发展的预测中,可能有一半最终是错误的。没有人能预测未来,所以预测往往是错误的。
标签: mysql database neo4j redis arangodb