扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
顾名思义就是非关系型数据库,它的出现,就是为了解决关系型数据库存在的一些问题,可以用NoSQL来进行弥补,现在听得比较多的NoSQL数据库有Redis、MongoDB、HBase等。
创新互联建站是一家专业提供牡丹企业网站建设,专注与做网站、成都做网站、HTML5、小程序制作等业务。10年已为牡丹众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
NoSQL太火,冒出太多产品了,保守估计也成百上千了。
互联网公司常用的基本集中在以下几种,每种只举一个比较常见或者应用比较成功的例子吧。
1. In-Memory KV Store : Redis
in memory key-value store,同时提供了更加丰富的数据结构和运算的能力,成功用法是替代memcached,通过checkpoint和commit log提供了快速的宕机恢复,同时支持replication提供读可扩展和高可用。
2. Disk-Based KV Store: Leveldb
真正基于磁盘的key-value storage, 模型单一简单,数据量不受限于内存大小,数据落盘高可靠,Google的几位大神出品的精品,LSM模型天然写优化,顺序写盘的方式对于新硬件ssd再适合不过了,不足是仅提供了一个库,需要自己封装server端。
3. Document Store: Mongodb
分布式nosql,具备了区别mysql的最大亮点:可扩展性。mongodb 最新引人的莫过于提供了sql接口,是目前nosql里最像mysql的,只是没有ACID的特性,发展很快,支持了索引等特性,上手容易,对于数据量远超内存限制的场景来说,还需要慎重。
4. Column Table Store: HBase
这个富二代似乎不用赘述了,最大的优势是开源,对于普通的scan和基于行的get等基本查询,性能完全不是问题,只是只提供裸的api,易用性上是短板,可扩展性方面是最强的,其次坐上了Hadoop的快车,社区发展很快,各种基于其上的开源产品不少,来解决诸如join、聚集运算等复杂查询。
NoSQL,泛指非关系型的数据库。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
虽然关系型数据库系统RDBMS在安装和使用上仍然占有主要地位,但毋庸置疑,非关系型数据库NoSQL技术已经成为今天发展最快的数据库技术。
NoSQL详解:如何找到对的技术
NoSQL是对数据库系统的总称,在某种程度上,它的性能和用途可能完全不同。NoSQL一词最早产生于上世纪九十年代,意思是NoSQL(没有SQL语言),后来随着时间和技术的发展,SQL界面仍然作为处理数据的方式存在,所以NoSQL又有了新的诠释,即NotOnlySQL(不只是SQL语言)。今天,NoSQL数据库凭借着其非关系型、分布式、开源和横向扩展等优势,被认为是下一代数据库产品。
四种主要的NoSQL数据库和它们主要的应用场景
键值数据库:当数据以键的形式访问时,比如通过国际标准书号ISBN找一本书,键值数据库是最理想的。在这里,ISBN是键,书籍的其他信息就是值。必须知道键才能查询,不过值是一堆无意义的数据,读取之后必须经过翻译。
文档存储数据库:该数据库以文档的形式管理和存储数据。有点类似于键值数据库,但文档数据库中的数据有结构。与键值数据库中值是一堆无意义的数据不同,文档数据库中数据以文档的结构被描述,典型的是JavaScriptObjectNotation(JSON)或XML.文档存储数据库中的数据可以通过定义的任何模式进行查询,但键值数据库只能通过它的键进行查询。
一般将NoSQL数据库分为四大类:键值(Key-Value)存储数据库、列存储数据库、文档型数据库和图形(Graph)数据库。它们的数据模型、优缺点、典型应用场景。
键值(Key-Value)存储数据库Key指向Value的键值对,通常用hash表来实现查找速度快数据无结构化(通常只被当作字符串或者二进制数据)内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等。
列存储数据库,以列簇式存储,将同一列数据存在一起查找速度快,可扩展性强,更容易进行分布式扩展功能相对局限分布式的文件系统。
文档型数据库,Key-Value对应的键值对,Value为结构化数据,数据结构要求不严格,表结构可变(不需要像关系型数据库一样需预先定义表结构),查询性能不高,而且缺乏统一的查询语法,Web应用。
图形(Graph)数据库,图结构,利用图结构相关算法(如最短路径寻址,N度关系查找等),很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案,社交网络,推荐系统等。
文档数据库
源起:受Lotus Notes启发。
数据模型:包含了key-value的文档集合
例子:CouchDB, MongoDB
优点:数据模型自然,编程友好,快速开发,web友好,CRUD。
图数据库
源起: 欧拉和图理论。
数据模型:节点和关系,也可处理键值对。
例子:AllegroGraph, InfoGrid, Neo4j
优点:解决复杂的图问题。
关系数据库
源起: E. F. Codd 在A Relational Model of Data for Large Shared Data Banks提出的
数据模型:各种关系
例子:VoltDB, Clustrix, MySQL
优点:高性能、可扩展的OLTP,支持SQL,物化视图,支持事务,编程友好。
对象数据库
源起:图数据库研究
数据模型:对象
例子:Objectivity, Gemstone
优点:复杂对象模型,快速键值访问,键功能访问,以及图数据库的优点。
Key-Value数据库
源起:Amazon的论文 Dynamo 和 Distributed HashTables。
数据模型:键值对
例子:Membase, Riak
优点:处理大量数据,快速处理大量读写请求。编程友好。
BigTable类型数据库
源起:Google的论文 BigTable。
数据模型:列簇,每一行在理论上都是不同的
例子:HBase, Hypertable, Cassandra
优点:处理大量数据,应对极高写负载,高可用,支持跨数据中心, MapReduce。
数据结构服务
源起: ?
数据模型:字典操作,lists, sets和字符串值
例子:Redis
优点:不同于以前的任何数据库
网格数据库
源起:数据网格和元组空间研究。
数据模型:基于空间的架构
例子:GigaSpaces, Coherence
优点:适于事务处理的高性能和高扩展性
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流