nosql - 何时使用什么数据库?即,在选择要使用的数据库时我应该考虑哪些参数?

标签 nosql bigdata graph-databases key-value-store document-database

我正在开发一个具有多个模块的系统,

  1. 社交媒体用户人口统计 -(文档)- 姓名、地点、兴趣、工作、教育程度
  2. 社交媒体用户联系 -(图) - friend
  3. CRM -(行和列)- 电信 + 银行等

仅举几例。我很确定我已经在其中每一项中突破了数百万条记录。

当我寻找可供选择的 NoSql 数据库时,每个类别至少有 10 个。对于文档数据库,我有一个从 MongoDBDjonDB 的数组列表。当我寻找图形数据库时,情况也是如此,等等。我还看到了其他键值存储数据库、列式数据库等,仅举几例:http://nosql-database.org/ .

所以我想知道在这些数据库中进行选择时是否应该遵循任何通用的经验规则,何时优化列式数据库,键值存储最适合什么类型的数据等等。

最适合什么类型的数据的数据库是什么?为什么?最重要的是 对于什么类型的数据来说,最不适合的数据库是什么?为什么?

谢谢

最佳答案

这是一个非常开放的问题,但我会尝试一下。

需要记住的一些事情:

  1. 选择一个拥有优秀(不是优秀,而是优秀)社区的数据库。您可能会发现 FooDB,它声称可以做您想做的所有事情,但没有人为它做出贡献,那么您将围绕一项死技术构建您的应用程序。您需要积极的贡献、大量进行生产部署的客户,并且最好不是第一个版本。

  2. 尝试寻找可以很好地协同工作的技术。例如,Elastic Search、MongoDB、CouchDB、Couchbase 都或多或少地使用 JSON。这应该可以帮助您缩小技术选择范围。

  3. 我不会尝试让自己太过分散。每种类型的数据库(图形、文档、行/列、键值对)都有自己的学习曲线。学习如何以非规范化方式对数据建模需要相当长的时间。种类越多,维护所有这些不同的数据库就越困难。

  4. 我不知道为什么我很少将此视为建议,但我会选择您真正喜欢开发的内容。查询语法看起来直观且有趣吗?如果没有,你会讨厌在其中发展。这不是最重要的因素,但我认为应该考虑。

关于nosql - 何时使用什么数据库?即,在选择要使用的数据库时我应该考虑哪些参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13580851/

相关文章:

nosql - 是否可以配置 ArangoDB 在特定时间制作图形数据库快照?

MySql vs NoSql - 社交网络评论和通知数据结构和实现

java - 打印在网络论坛上发布大量问题和大量答案的前 10 位用户

database - Cassandra 集群上的数据分区和复制

performance - Cassandra 中的 ALLOW FILTERING 对于以下查询是否有效?

r - 在 R 中使用 bigmemory 加载大型数据集的内存问题

c# - 以编程方式设置 MaxItemsInObjectGraph

java - 遍历图形时无法删除节点 - neo4j java 嵌入式 api

graph-databases - JanusGraph : Please add a key named "ConfigurationManagementGraph" to the "graphs"

recursion - Cypher - neo4j 查找递归结束节点