您的位置:首页 > 数据库

nosql数据库与内存数据库

2015-09-29 11:27 246 查看

1.  nosql

NoSQL = Not Only SQL,泛指非关系型的数据库。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。NoSQL数据库没有标准的查询语言(SQL),许多NoSQL数据库都有REST式的数据接口或者查询API。

使用场景:
1、数据模型比较简单;
2、需要灵活性更强的IT系统;
3、对数据库性能要求较高;
4、不需要高度的数据一致性;
5、对于给定key,比较容易映射复杂值的环境。

2.  nosql 数据库4大分类

名称描述优点/缺点
键值(Key-Value)存储数据库
主要会使用到一个哈希表

如redis

场景:

内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。
适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序。

优点:查询速度快

缺点:数据无结构化,通常只被当作字符串或者二进制数据
列存储数据库
通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列

如: HBase

场景:分布式的文件系统
适用于偏好BigTable:)并且需要对大数据进行随机、实时访问的场合
查找速度快,可扩展性强,更容易进行分布式扩展;

功能相对局限
文档型数据库
可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高

如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源

场景:Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容)
数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构;

查询性能不高,而且缺乏统一的查询语法。
图形(Graph)数据库
使用灵活的图形模型,并且能够扩展到多个服务器上。

如:Neo4J, InfoGrid, Infinite Graph.

场景:社交网络,推荐系统等。专注于构建关系图谱
利用图结构相关算法。比如最短路径寻址,N度关系查找等;

很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。
   

3.  多种nosql数据库对比

http://blog.jobbole.com/1344/

4.   内存数据库

内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。

内存数据库从范型上可以分为关系型内存数据库和键值型内存数据库。在实际应用中内存数据库主要是配合oracle或mysql等大型关系数据库使用,关注性能。

作用类似于缓存,并不注重数据完整性和数据一致性。基于键值型的内存数据库比关系型更加易于使用,性能和可扩展性更好,因此在应用上比关系型的内存数据库使用更多。

名称
开源或商业
主要特点
Oracle TimesTen
不开源,商业使用付费
1. 符合RDBMS标准的独立内存数据库服务。
2.支持SQL访问,支持ODBC&JDBC。
3.本身不支持与非Oracle数据库的互操作。
4.高可靠性,支持完整日志,支持镜像复制功能。
5.目前不支持存储过程和触发器。
6.内存结构简单,并没有数据库缓冲区、保存池或丢弃池的概念。
7.目前支持散列索引和T树索引,前者仅支持余键-值查找,速度非常快,执行过程与底层表的数量无关,具有较高的读取扩展性和很好的并发性;T树索引读取效率很高,但是,在繁重写操作时,并发性较差。
ASE-IMDB
不开源、商业使用付费
1.被整合到Sysbase ASE平台中(TimesTen则为一个独立的数据库)。
2. 基于经典ASE数据库模板创建。
3. 采用复制技术实现读取其他数据源的数据。
4. 完全支持ASE本身的SQL语法、安全性和加密。
IBM SolidDB
不开源、商业使用付费
1.可以提供超快的速度和超高的可用性,可以提供每秒数万至数十万事务的吞吐率,并且始终可以获得微秒级的响应时间。
2.抛弃大数据块结构,表行和索引节点独立地存储在内存中,可以直接添加索引,而不必重新组织大块结构。
3.放弃使用大块索引,以精简结构、增加索引层数、将索引节点最小化,从而避免节点内处理的成本。
4.使用一种称作trie(前缀树)的索引方式,更适合现代处理器缓存,通过有效促进缓存的使用来提高处理器的效率,从而实现性能的最大化。
5.使用一种获得专利的检查点方法来加快数据处理,查询事务的延时通常是10到20微秒,更新事务的延时通常小于100微秒。
VoltDB
开源版本免费

商业版本需付费
1.基于存储过程的事务提交方式:用户通过写存储过程完成应用程序的逻辑,作为一个先置条件将存储过程提交到VoltDB,运行时,用户程序调用存储过程完成事务操作,所有事务的运行逻辑是由VoltDB在服务器进程中完成。
2.基于Shared Nothing结构的数据分布,整个数据库的数据分散到集群的多台机器上。
3.基于哈希的数据分布策略,好处是数据分散的均匀,没有动态数据调整的烦恼;缺点是新增的机器需要停止服务后重新分布数据。哈希方法打乱了数据的连续性,使得VoltDB对于范围查询的处理能力显著下降。
4.其事务并发控制需要依赖于集群内所有机器的时间一致,其数据分片规模是按照集群核数来划分,当整个系统压力比较大时,可以使事务的时延有效降低。
eXtremeDB
不开源的商业数据库,

测试版本在功能上与正式版没有区别,但是,对连接次数做了限制
1.高性能和高效的存储效率,为了提高性能方便程序使用,eXtremeDB中的数据未做任何压缩。
2.不仅开源建立完全运行在主内存的内存数据库,更可以建立磁盘/内存混合介质的数据库。
3.嵌入式数据库:其内核以链接库的形式包含在应用程序之中,开销只有50KB-130KB;避免了进程间的通信,从而剔除了进程间通信的开销和不确定性;其独特的数据格式方便程序直接使用,剔除了数据复制及数据翻译的开销,缩短了应用程序的代码执行路径。
4.由应用定制的API,应用程序对eXtremeDB数据库的操作接口是根据应用数据库设计而自动产生,剔除了通用接口所必不可少的动态内存分配。
5.其独特的体系结构,保证了数据管理的可预测性。
SQLite
开源,免费使用

商业目的的分发版免费
1.需要专业支持则需要购买。
2. 在并发(包括多进程和多线程)读写方面的性能一直不太理想。数据库可能会被写操作独占,从而导致其它读写操作阻塞或出错。
3.3264位主流操作系统均支持。
4.不支持ODBC连接,需通过第三方驱动支持JDBC连接。
5.支持SQL
H2
开源,免费使用

商业目的的分发版免费
1.需要专业支持则需要购买。
2. 并发性较好(在模拟器中有使用,支持50个并发查询没问题),数据量少的情况,查询速度很好。
3.3264位主流操作系统均支持,但需Java平台支持。
4.支持ODBC&JDBC
5.支持SQL
更多参考:

http://www.360doc.com/content/10/1202/16/3196411_74404988.shtml

http://www.360doc.com/content/14/0110/21/281812_344213831.shtml
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: