非关系型数据库---Redis,MongodDB,Neo4j

        非关系型数据库主要有四种数据存储类型:键值对存储(key-value)-----Redis,文档存储(document store)-----MongodDB,基于列的数据库(column-oriented)-----HBase,还有就是图形数据库(graph database)-----Neo4j。每一种都会解决相应的问题,这些问题是关系型数据库所不能解决的。而在实际应用中都会将这几种情况结合起来实现相应的功能。

        上节介绍了HBase,这节接着给大家介绍剩下的三种非关系型数据库。


Redis

     Redis是一个key-value存储系统,key为字符串类型,只能通过key对value进行操作,支持的数据类型包括string、list、set、zset(有序集合)和hash。

     Redis支持主从同步,数据可以从主服务器向任意数量的从服务器上同步。

     Redis事务允许一组命令在单一步骤中执行。事务有两个属性:在一个事务中的所有命令作为单个独立的操作顺序执行;Redis事务是原子的,原子意味着要么所有的命令都执行,要么都不执行。Redis 事务由指令 MULTI 发起的,之后传递需要在事务中和整个事务中,最后由 EXEC 命令执行所有命令的列表。

Redis分区

    是将数据分割成多个 Redis 实例,使每个实例将只包含键子集的过程。它允许更大的数据库,使用多台计算机的内存总和,它允许按比例在多内核和多个计算机计算,以及网络带宽向多台计算机和网络适配器。

    劣势涉及多个键时,Redis事务无法使用;数据处理比较复杂;加和删除的容量可能会很复杂。

    分区类型:范围分区;散列分区

    Redis 数据库可以配置安全保护的,所以任何客户端在连接执行命令时需要进行身份验证。

    应用:统计类


MongodDB

        一个基于分布式文件存储的开源数据库系统,为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key value)对组成。

特点:

        面向集合存储,易存储对象类型的数据;模式*;支持动态查询;支持完全索引,包含内部对象;支持查询;支持复制和故障恢复;使用高效的二进制数据存储,包括大型对象(如视频);自动处理碎片,以支持云计算层次的扩展性;支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言;文件存储格式为BSON(一种JSON的扩展);可通过网络访问。

适用场景:网站数据;缓存;大尺寸,低价值的数据;高伸缩性的场景;用于对象及JSON 数据的存储。

不适用场景:高度事务性的系统;传统的商业智能应用;需要SQL 的问题。

引用式文档查询:需要两次查询

    第一次查询用户地址的对象id(ObjectId);

    第二次通过查询的id获取用户的详细地址信息。

    集合中索引不能超过64个;索引名的长度不能超过125个字符;一个复合索引最多可以有31个字段。mongorestore 命令来恢复备份的数据。


Neo4j 

       是一个高性能的 NoSQL 图形数据库,把数据保存为图中的节点以及节点之间的关系。Neo4j 中两个最基本的概念是节点和边,节点表示实体,边则表示实体之间的关系。节点和边都可以有自己的属性,不同实体通过各种不同的关系关联起来,形成复杂的对象图。

       Neo4j 提供了在对象图上进行查找和遍历的功能:深度搜索、广度搜索。

特点:

       完整的ACID支持;高可用性;轻易扩展到上亿级别的节点和关系;通过遍历工具高速检索数据;属性是由Key-Value键值对组成。

应用:社交网络,歌曲信息,状态图


数据库转化

关系型数据库

                                              非关系型数据库---Redis,MongodDB,Neo4j

HBase

                             非关系型数据库---Redis,MongodDB,Neo4j

Redis

                                    非关系型数据库---Redis,MongodDB,Neo4j

MongodDB

                            非关系型数据库---Redis,MongodDB,Neo4j

Neo4j

     非关系型数据库---Redis,MongodDB,Neo4j

以上图片来自于其他csdn文章

四种的区别:

         非关系型数据库---Redis,MongodDB,Neo4j

 

上一篇:【Neo4j查询优化系列】如何快速统计节点的关系数


下一篇:java – 如何在gremlin中编写for循环?