NoSQL数据库,顾名思义(NoSQL=Not Only SQL),它有别于传统关系数据库所使用的数据表概念,它“不仅仅是SQL”。NoSQL数据库不使用SQL查询语言,也没有数据表,当然更不用定义表格之间的关系。
随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的社会性网络服务(SNS:Social Networking Services )及“社交网站”或“社交网”类型(SNS:Social Network Site)的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
NoSQL的数据主题是以数据项为主,每一项数据都有自己的键(Key)和值(Value)的对应关系,实际上在存取数据时,经常用类似Python的字典类型来操作,而大部分情况下,也可以使用JSON格式来作为数据项的单元格式,不同的数据库系统也使用不同的做法,有使用Document Store方式的,也有使用Key Value/Tuple Store的。对于NoSQL数据库的类型(详细的分类参考http://nosql-database.org),概括起来,有以下四大类:
- 键值存储型数据库
- 列存储型数据库
- 图形结构型数据库
- 文档型数据库
NoSQL数据库的使用范围主要适用于以下几个方面:
- 数据模型比较简单。
- 需要灵活性更强的IT系统。
- 对数据库性能要求较高。
- 不需要高度的数据一致性。
- 对于给定key,比较容易映射复杂值的环境。
在NoSQL数据库中,每一个数据项不必要和其他的数据项具有一模一样的数据类型格式,在使用上相对比较有弹性。
现在,市面上使用的NoSQL数据库非常多,诸如:MongoDB,Dynomite,KiokuDB,Scalaris, Kai, ThruDB,HBase,CouchDB,Hypertable,Redis,Tokyo Cabinet,Cassandra,Voldemort, Riak,Tin, Flare, Lightcloud等等等。使用时,可以根据自己的项目特点,选择使用。