伴随着信息社会的高速发展,激增的数据冲击着人们传统的数据处理方式,更多、更乱、更庞大的实时化的数据开始改变人们的生活。对信息的处理已经成为了一个新兴的课题,简单来说,我们可以将信息大致划分为三大类
-
能够用统一的结构加以表示的信息,我们称之为结构化数据,如数字、符号;
-
无法用数字或统一的结构表示的,更冗杂的信息,如文本、图像、声音、网页等,我们称之为非结构化数据。
-
介于结构数据与非结构话数据之间的信息,我们称之为半结构化数据。虽然半结构化的数据同样有着相应的字段,但是其字段可根据需要扩充,即字段数目不定;这样的数据可以说是结构话数据与非结构化数据的灰色过渡区。
在信息时代的初期,人们所能够处理的,只是日常的简单的数据,比如学生的成绩单、职员的工资表,这样的信息,也就是我们所说的 结构化数据 。经过了很长一段时间的探索,人们对数据库的认知经历了层状数据库,网状数据库以及关系型数据库等三个阶段,最终,作为关系型数据库的代表, SQL ,得到了广泛的运用和推广,成为了处理结构化数据的强有力的手段。
结构化数据,因为其明显的结构特征,我们可以通过关系的表述,将实际的数据抽象为二维表,再通过表与表之间形成更复杂的关系,由此外延。 SQL 无疑将关系型数据库的强大发挥到了极致。
随着计算机能力的不断上升,人们的生活越来越离散化和数字化,数据库所要处理的数据复杂度与数据量也在以几何级数上升。同样,伴随着 Web 2.0 时代的到来,数据的冗余与不规则性也在不断地产生。人们终于发现,结构化数据已经开始变得越来越困难,甚至于是不可实现的了。这个时候,基于 Key-Value 的 非结构化数据 库的理念产生了。也就是这个时候, NoSQL 开始进入人们的视线。
对非结构化数据的高效处理,对并发性能的完美提升,对数据实时更新的强力支持,这一切的一切,都使得 NoSQL 不断拥有更高的市场占有率,冲击着 SQL 稳固多年的地位。
从早期 SQL 关系型数据库的完善推广,到八十年代 NoSQL 概念模型的提出,再到如今两极天下的 Web 2.0 时代,人们终于开始意识到数据库技术的发展已经远远落后于数据的增长,于此同时浮出水面的,还有 NoSQL 对 SQL 在数据库技术方面统治性地位的冲击:
一方面, NoSQL 对日新月异的非结构化数据有着令人瞠目结舌的处理能力; 另一方面, SQL 长期的发展意味着其稳定性与拓展性令其他模式的数据库难以望其项背的。
我们的项目,就是想通过多个方面的比较,对两种模式的数据库进行对比,分析比较出两种数据库优劣,以便于将来进行更加深入的学习和分析。
OS:Ubuntu 14.0.2
CPU:Intel(R) Core(TM) i5-4210M CPU @ 2.40GHZ
RAM:4G
Storage: 20G HDD
SQL:MySQL-5.6.0
NoSQL:MongoDB-2.4.9
Tool Kit:MySQLslap,YCSB-0.7.0
我们希望依据 mysql 和 MongoDB 在不同类型的数据库上的表现,权衡对比出两种数据库的优劣。
对于 SQL ,我们使用 SQL 脚本对其进行测试;
对于 MongoDB ,我们使用 JavaScript 脚本对进行测试;
最终我们将通过 ppt 以及 现场演示 的方法展示我们的成果。
- 基于结构化数据的性能对比
- 通过调用已有的数据形成测试用结构化数据
- 通过相同的数据库行为进行测试
- 查询语句
- 增加语句
- 删除语句
- 更新语句
- 测试多项性能
- 响应时间
- 资源占用
- 并发性
- 扩展性
- 基于半结构化数据的性能对比
- 通过网页爬虫对 HTML 文件进行爬去获得半结构化数据集
- 通过复原网页的效率进行性能测试
- 基于完全非结构化数据的性能对比