![精通LevelDB](https://wfqqreader-1252317822.image.myqcloud.com/cover/398/41600398/b_41600398.jpg)
上QQ阅读APP看书,第一时间看更新
1.1 键-值数据库的提出与价值
键-值数据库主要用于存取、管理关联性的数组。关联性数组又称映射、字典,是一种抽象的数据结构,其数据对象为一个个的key-value数据对,且在整个数据库中每个key均是唯一的。
20世纪80年代,关系型数据库在软件系统的后端占据绝对统治地位。Oracle、SQL Server和DB2等成熟的商业产品的本质是类似的,均面向结构化的数据,采用SQL语言进行相应的查询与事务操作。
然而随着近年来互联网的兴起,云计算、大数据应用越来越广泛,对于数据库来说也出现了一些需要面对的新情况:
- 数据量呈指数级增长,存储也开始实现分布式;
- 查询响应时间要求越来越快,需在1秒内完成查询操作;
- 应用一般需要7×24小时连续运行,因此对稳定性要求越来越高,通常要求数据库支持热备份,并实现故障下快速无缝切换;
- 在某些应用中,写数据比读数据更加频繁,对数据写的速度要求也越来越高;
- 在实际应用中,并不是所有环境下的数据都是完整的结构化数据,非结构化数据普遍存在,因此如何实现对灵活多变的非结构化数据的支持是需要考虑的一个问题。
正是在上述情况的催生下,2010年开始兴起了一场NoSQL运动,而键-值数据库作为NoSQL中一种重要的数据库也日益繁荣,因此催生出了许多成功的商业化产品,并得到了广泛应用。
键-值数据库可以应用于许多应用场景。例如对于常见的Web场景,可以存储用户的个人信息资料、对文章或博客的评论、邮件等。具体到电子商务领域,可以存储购物车中的商品、产品类别、产品评论。键-值数据库,甚至可以存储整个网页,其将网页的URL作为key,网页的内容作为value。不仅如此,键-值数据库还可以用于构建更为复杂的存储系统。简而言之,键-值数据库给我们提供了一种新的选择,而在实际的软件架构与应用中,究竟是应用键-值数据库,还是使用传统的关系数据库,则需要综合多种因素,由项目架构师最终确定。