数据库的选择简单而复杂,简单指的是对于大部分互联网公司MySQL加上缓存就够用了。
复杂指的是快速增长而心存高远的互联网公司对大数据的预期,导致技术人员在数据库技术上的选择颇为犹豫和为难。
而技术变革期所带来的群雄逐鹿,竞相融合的境况,也加大了选择的难度。
即使不是为了应对大数据的问题,作为一个技术管理者,也需要了解数据技术的变迁。
1、首先我们需要知道市场上存在哪些数据库可供选择,这些数据库的分类和基本特征。
451 Research在2012年有一个数据库技术格局图,从中可见数据库产品生态环境之繁杂多变:
图中数据库分类维度有Operational,Analytic,Relational,Non-relational,NoSQL,NewSQL,Graph,Document,Key-Value等
其中Operational是生产型数据库,Analytic是分析型数据库,详细区别可参阅:
http://ebiz-wiki.com/index.php/Data_Warehouse_vs_Operational_Database
图中MySQL/PostgreSQL是传统关系型数据库的代表。
HBase是Big Tables技术的代表(行索引,列存储)。
Neo4j(http://www.neo4j.org/)是图数据库代表,用来存储复杂、多维度的图结构数据。
Redis是基于Key-Value的NoSQL代表,有Redis-to-go提供存储服务。
MongoDB/CouchDB是基于Document的NoSQL代表,Couchbase是Document/Key-Value技术的融合。
VoltDB是NewSQL的代表,具备数据一致性和良好的扩展性,性能宣称是MySQL的数十倍以上,参阅如下测试数据:
https://forum.voltdb.com/showthread.php?8-VoltDB-tpc-c-like-Benchmark-Comparison-Benchmark-Description
当然MySQL/PostgreSQL的新版本也在内置提供对于Key-Value存储的支持。
2、在作出存储技术选择前,了解一下业务需求,系统架构
3、设定一些技术问题作为评估维度,参考下面的技术演讲和问答:
http://www.infoq.com/presentations/Choosing-NoSQL-NewSQL;jsessionid=05F9C1BE83D9DD1D1326298BC22A297C
http://nosql-database.org/select-the-right-database.html
Compiled by iefreer