【问题标题】:When To Use What Database? i.e. What are the parameters should I look at when choosing a database to use?何时使用什么数据库?即在选择要使用的数据库时,我应该查看哪些参数?
【发布时间】:2012-11-14 20:59:08
【问题描述】:
我正在开发一个有多个模块的系统,
- 社交媒体用户人口统计 -(文档)- 姓名、地点、兴趣、工作、教育
- 社交媒体用户连接 -(图表)-朋友
- CRM -(行和列)-电信 + 银行等
仅举几例。我很确定我已经在每一项中都跨越了数百万条记录。
当我寻找可供选择的 NoSql 数据库时,我在每个类别中至少有 10 个。对于文档数据库,我有一个从MongoDB 到DjonDB 的数组列表。当我寻找图形数据库时,情况也是如此,依此类推。我还在http://nosql-database.org/ 看到过其他键值存储数据库、列式数据库等。
所以我想知道在这些数据库中选择时是否应该遵循任何通用的经验法则,当优化列式数据库时,键值存储最适合哪种类型的数据等等。
对于什么类型的数据最适合的数据库是什么?为什么?最重要的是
对于什么类型的数据最不适合的数据库是什么?为什么?
谢谢
【问题讨论】:
标签:
nosql
bigdata
graph-databases
key-value-store
document-database
【解决方案1】:
这是一个非常开放的问题,但我会试一试。
注意事项:
选择一个围绕它有一个很棒(不好,很棒)社区的数据库。您可能会发现 FooDB,它声称可以做任何您想做的事情,但没有人为它做出贡献,那么您将围绕一项死技术构建您的应用程序。您需要积极的贡献,拥有大量生产部署的客户,最好是第一版中没有的东西。
尝试找到可以很好地协同工作的技术。例如,Elastic Search、MongoDB、CouchDB、Couchbase 或多或少都使用 JSON。这应该可以帮助您缩小技术选择范围。
我不会试图把自己分散得太薄。每种类型的数据库(图形、文档、行/列、键值对)都有自己的学习曲线。学习如何以非规范化方式对数据进行建模需要相当长的时间。您拥有的种类越多,维护所有这些不同的数据库就越困难。
我不知道为什么我很少将此视为建议,但我会选择您真正喜欢开发的东西。查询语法看起来直观且有趣吗?如果没有,你会讨厌在其中发展。这不是最重要的因素,但我认为应该考虑。