问答题 请详细阅读有关数据架构方面的描述,根据要求回答下面问题。
[说明]
某软件公司欲开发一个基于Web 2.0的大型社交网络系统。就该系统的数据架构而言,李工决定采用公司熟悉的数据架构,使用通用的商用关系型数据库,系统内部数据采用中央集中方式存储。
该系统投入使用后,初期用户数量少,系统运行平稳。6个月后,用户数出现了爆炸式增长,系统暴露出诸多问题,集中表现在:
(1)用户执行读写操作时,响应时间均变得很慢。
(2)随着系统功能的扩充,原有数据格式发生变化,又出现新的数据格式,维护困难。
(3)数据容量很快超过系统原有的设计上限,数据库扩容困难。
(4)软件系统不断出现宕机,整个系统可用性较差。
经过多次会议讨论,公司的王工建议采用NoSQL数据库来替代关系数据库,以解决上述问题。但李工指出NoSQL数据库出现时间不长,在使用上可能存在风险。公司技术人员对NoSQL数据库产品进行了认真测试,最终决定采用NoSQL数据库来替代现有的数据库系统。
问答题 分别解释产生问题(1)~(4)的原因。
【正确答案】
【答案解析】问题(1):大型社交网络系统要根据用户个性化信息来实时生成动态页面和提供动态信息,基本上无法使用动态页面的静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强可以,但是应付上万次SQL写数据请求,硬盘I/O就已经无法承受了。特别是涉及到多表连接操作,会导致响应变慢。
问题(2):大型社交网络系统随着用户的使用,会不断地增加新的功能,导致原有数据格式发生变化,甚至出现新的数据格式,但关系数据库中采用元组方式组织数据,难以使用新型数据格式,难以维护。
问题(3):大型社交网络系统往往会在很短时间内产生海量数据。关系数据库多采用中央数据存储,使得数据容量受限于前期设计的上限,很难实现数据容量的横向扩展。
问题(4):关系数据库采用中央数据存储,容易成为系统的性能瓶颈,单点故障很容易导致系统崩溃,负载过高往往导致系统出现宕机现象 关系数据库是一个被组织成一组正式描述的表格的数据项集合,这些表格中的数据能以许多不同的方式被存取或重新召集而不需要重新组织数据库表格。它是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。目前主流的关系数据库有Oracle、SQL、Access、DB2、Sybase等。关系数据库利用加锁机制支持并发操作,执行效率较低;利用关系表的方式存储数据,通过SQL语言和数据库进行交互;主要通过提升硬件配置等向上扩展的方式来提升性能;B树和哈希等是它常用的索引结构;其能够广泛应用于多个领域。
对于基于Web 2.0的大型社交网站而言,关系数据库的很多主要特性却往往无用武之地,例如:①数据库事务一致性需求,很多Web实时系统并不要求严格的数据库事务,对读一致性的要求很低,有些场合对写一致性要求也不高,因此数据库事务管理成了数据库高负载下的一个沉重负担;②数据库的写实时性和读实时性需求,对关系数据库而言,插入一条数据之后立刻查询,是肯定可以读出这条数据的,并不要求这么高的实时性;③对复杂的SQL查询,特别是多表关联查询的需求,任何大数据量的Web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的复杂SOL报表查询,特别是SNS类型的网站,从需求以及产品设计角度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。
传统的关系数据库在应付Web 2.0网站,特别是超大规模和高并发的SNS类型的Web 2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题。
问题(1):用户执行读写操作时,响应时间均变得很慢。其产生的原因是:基于Web 2.0的大型社交网络系统要根据用户个性化信息来实时生成动态页面和提供动态信息,基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强可以,但是应付上万次SQL写数据请求,硬盘I/O就已经无法承受了。特别是涉及到多表连接操作,会导致响应变慢。
问题(2):随着系统功能的扩充,原有数据格式发生变化,又出现新的数据格式,维护较为困难。其产生的原因是:大型社交网络系统随着用户的使用,会不断地增加新的功能,导致原有数据格式发生变化,甚至出现新的数据格式。但关系数据库中采用元组方式组织数据,难以使用新型数据格式,难以维护。
问题(3):数据容量很快超过系统原有的设计上限,数据库扩容困难。其产生的原因是:大型社交网络系统往往会在很短时间内产生海量数据。关系数据库大多采用中央数据存储,使得数据容量受限于前期设计的上限,很难实现数据容量的横向扩展。
问题(4):软件系统不断出现宕机,整个系统可用性较差。其产生的原因是:关系数据库采用中央数据存储,容易成为系统的性能瓶颈,单点故障很容易导致系统崩溃,负载过高往往导致系统出现宕机现象。
问答题 请针对问题(1)~(4),分别指出NoSQL数据库的哪些特点促使公司最终采用了NoSQL数据库。
【正确答案】
【答案解析】针对问题(1),NoSQL数据库支持高并发数据访问,性能较高。
针对问题(2),NoSQL数据库的数据存储结构松散,能够灵活支持多种类型的数据格式。
针对问题(3),NoSQL数据库能够支持海量数据的存储,且易于横向扩展。
针对问题(4),NoSQL数据库基于分布式数据存储,不存在单点故障和性能瓶颈,系统可用性高 NoSQL是Not Only SQL的简写,是对不同于传统关系型数据库的数据库管理系统的统称。它作为新兴的数据库模式处理并发的效率较高;支持海量数据存储和查询,且效率较高;利用增加分布存储的数据库节点数目向外扩展性能;主要以键值方式索引数据;在对于大规模并发数据处理的分布式应用中有更好的表现,例如超大规模和高并发的SNS类型的Web 2.0纯动态网站。
针对问题(1),NoSQL数据库支持高并发数据访问,性能较高。
针对问题(2),NoSQL数据库的数据存储结构松散,能够灵活支持多种类型的数据格式。
针对问题(3),NoSQL数据库能够支持海量数据的存储,且易于横向扩展。
针对问题(4),NoSQL数据库基于分布式数据存储,不存在单点故障和性能瓶颈,系统可用性高。
问答题 请指出该系统采用NoSQL数据库时可能存在的问题。
【正确答案】
【答案解析】①现有NoSQL数据库产品不够成熟,大多数产品处于初创期。
②NoSQL数据库支持的特性不够丰富,现有产品提供的功能比较有限。
③NoSQL擞据库不提供对SQL的支持,学习和应用迁移成本较高。
④NoSQL数据库并未形成一定的标准,产品种类繁多,缺乏官方支持。
⑤开源数据库产品对其的支持力度很有限。
⑥系统运维的专家技术支持力度有限,NoSQL数据库专家较少,大部分都处于学习阶段 与成熟的关系型数据库相比,NoSQL作为一种新兴的数据库模式,其成熟度不够,大量关键特性有待实现(或其支持的特性不够丰富,现有产品提供的功能比较有限);现有产品不够成熟,大多数产品处于初创期;并未形成一定的业界标准,产品种类繁多,缺乏官方支持;开源数据库产品对其的支持力度很有限;不提供对SQL的支持,学习和应用迁移成本较高;数据挖掘与商务智能支持不足,现有的产品无法直接使用:NoSQL数据库;NoSQL数据库专家较少,大部分都处于学习阶段等。