试题四(25分)
请详细阅读有关数据架构方面的描述,回答问题。
【说明】
某软件公司欲开发一个基于Web 2.0的大型社交网络系统。就该系统的数据架构而言,李工决定采用公司熟悉的数据架构,使用通用的商用关系型数据库,系统内部数据采用中央集中方式存储。
该系统投入使用后,初期用户数量少,系统运行平稳。6个月后,用户数出现了爆炸式增长,系统暴露出诸多问题,集中表现在:
1.用户执行读写操作时,响应时间均变得很慢;
2.随着系统功能的扩充,原有数据格式发生变化,又出现新的数据格式,维护困难;
3.数据容量很快超过系统原有的设计上限,数据库扩容困难;
4.软件系统不断出现宕机,整个系统可用性较差。
经过多次会议讨论,公司的王工建议采用NoSQL数据库来替代关系数据库,以解决上述问题。但李工指出NoSQL数据库出现时间不长,在使用上可能存在风险。公司技术人员对NoSQL数据库产品进行了认真测试,最终决定采用NoSQL数据库来替代现有的数据库系统。
答案:
(1)键值(Key-Value)存储数据库。这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/Value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/Value就显得效率低下了。数据库产品包括:TokyoCabinet/Tyrant,Redis,Voldemort,Oracle BDB。
(2)列存储数据库。这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。数据库产品包括:Cassandra,HBase,Riak。
(3)文档型数据库。文档型数据库的灵感来自于Lotus Notes办公软件,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许中间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。数据库产品包括:CouchDB,MongoDb,SequoiaDB。
(4)图形(Graph)数据库。图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它使用灵活的图形模型,并且能够扩展到多个服务器上。查询时利用图结构相关算法,比如最短路径寻址,N度关系查找等。数据库产品包括:Neo4J,InfoGrid,Infinite Graph。