什么是非关系型数据库?

  非关系型数据库它的全称是Not Only SQL(简称 NoSQL数据库)是用于存储和检索数据的非关系数据库系统。在当今世界,我们不应该只以没有预定义固定模式的表格式存储所有数据(固定没有列)。像用户生成的数据、地理位置数据、物联网生成的数据一样,社交图是真实世界数据呈指数级增长的例子。这些庞大的数据也需要大量的处理。这时NoSQL数据库就出现了。使用NoSQL数据库,我们可以存储和退休的文件,键值,图形为基础的数据容易和更快。我们可以很容易地避免复杂的SQL连接操作。易于使用NoSQL DBs对实际问题(web和企业业务应用程序)进行水平伸缩。Carlo Strozzi是在1998年引入NoSQL术语的。使用NoSQL的动机——设计的简单性、对机器集群的水平扩展。 

NoSQL数据库类型:  

  (1)文档数据库——这些数据库通常将每个键与称为文档的复杂数据结构配对。文档可以包含键数组对、键值对甚至嵌套文档。

    优点:能够进行数据的快速查询。

    缺点:需要存储数据之间的关系。

    示例:MongoDB、CouchDB、Terrastore、CloudKit、RavenDB

  (2)键值存储——每个单独的项都存储为键值对。键值存储是所有NoSQL数据库中最简单的数据库。

    优点:对数据能快速查询,数据存储的扩展性强。

    缺点:数据库的功能有局限性。

    示例:Redis、Riak、SimpleDB、Chordless、Scalaris

  (3)宽列存储——这些类型的数据库针对大型数据集上的查询进行了优化,它们将数据列存储在一起,而不是行。

    优点:对数据结构要求不特别的严格。

    缺点:查询性的性能不好,同时缺少一种统一查询语言。

    示例:HBase、BigTable、PNUTS、HadoopDB、Cassandra

  (4)图形存储——这些存储关于图形、网络的信息,例如社会关系、路线图、交通链接。

    优点:可以方便的利用图结构相关算法进行计算。

    缺点:要想得到结果必须进行整个图的计算,而且遇到不适合的数据模型时,图形数据库很难使用。

    示例:Neo4J、GraphDB、OrientDB、InfoGrid、Infinite Graph

常见的NoSQL数据库:

  MongoDB:是一个面向文档的开源NoSQL数据库。MongoDB使用JSON之类的文档来存储任何数据。它是用c++写的。

  Cassandra:是Facebook为收件箱搜索开发的。Cassandra是一个用于处理大量结构化数据的分布式数据存储系统。

  Redis:是最著名的键值存储。Redis是用C语言编写的。它是根据BSD授权的。

  HBase:是谷歌为BigTable数据库设计的分布式非关系数据库。

  Neo4j:称为原生图数据库,因为它有效地实现了属性图模型,一直到存储层。

  Oracle NoSQL:实现了从用户定义的键到不透明数据项的映射。

  Amazon DynamoDB:使用了一个NoSQL数据库模型,它是非关系型的,允许文档、图形和列在它的数据模型之间。

  Couchbase:是一个用于交互式web应用程序的NoSQL文档数据库。它具有灵活的数据模型,易于扩展,提供一致的高性能。

  Memcached:是一个开源、高性能、分布式内存缓存系统,旨在通过减少数据库负载来加速动态web应用程序。

  CouchDB:是一个开源的NoSQL数据库,使用JSON存储信息,JavaScript作为查询语言。

非关系型数据库的特点:

效率高(因为存储在内存中)、但不安全(断电丢失数据,但其中redis可以同步数据到磁盘中),现在很多非关系型数据库都开始支持转存到磁盘中。

常见的NoSQL数据库的优缺点:

1、MongoDB

  MongoDB是最著名的NoSQL数据库。它是一个面向文档的开源数据库。MongoDB是一个可伸缩和可访问的数据库。它在c++中。MongoDB同样可以用作文件系统。在MongoDB中,JavaScript可以作为查询语言使用。通过使用sharding MongoDB水平伸缩。它在流行的JavaScript框架中非常有用。人们真的很享受分片、高级文本搜索、gridFS和map-reduce功能。惊人的性能和新特性使这个NoSQL数据库在我们的列表中名列第一。

特点:提供高性能;自动分片;运行在多个服务器上;支持主从复制;数据以JSON样式文档的形式存储;索引文档中的任何字段;由于数据被放置在碎片中,所以它具有自动负载平衡配置;支持正则表达式搜索;在失败的情况下易于管理。

优点:易于安装MongoDB;MongoDB Inc.为客户提供专业支持;支持临时查询;高速数据库;无模式数据库;横向扩展数据库;性能非常高。

缺点:不支持连接;数据量大;嵌套文档是有限的;增加不必要的内存使用。

2、Cassandra

  Cassandra是Facebook为收件箱搜索开发的。Cassandra是一个用于处理大量结构化数据的分布式数据存储系统。通常,这些数据分布在许多普通服务器上。您还可以添加数据存储容量,使您的服务保持在线,您可以轻松地完成这项任务。由于集群中的所有节点都是相同的,因此不需要处理复杂的配置。Cassandra是用Java编写的。Cassandra查询语言(CQL)是查询Cassandra数据库的一种类似sql的语言。因此,Cassandra在最佳开源数据库中排名第二。Facebook、Twitter、思科(Cisco)、Rackspace、eBay、Twitter、Netflix等一些最大的公司都在使用Cassandra。

特点:线性可伸缩;;保持快速响应时间;支持原子性、一致性、隔离性和耐久性(ACID)等属性;使用Apache Hadoop支持MapReduce;分配数据的最大灵活性;高度可伸缩;点对点架构。

优点:高度可伸缩;无单点故障;Multi-DC复制;与其他基于JVM的应用程序紧密集成;更适合多数据中心部署、冗余、故障转移和灾难恢复。

缺点:对聚合的有限支持;不可预知的性能;不支持特别查询。

3、Redis

  Redis是一个键值存储。此外,它是最著名的键值存储。Redis支持一些c++、PHP、Ruby、Python、Perl、Scala等等。Redis是用C语言编写的。此外,它是根据BSD授权的。

特点:自动故障转移;将其数据库完全保存在内存中;事务;Lua脚本;将数据复制到任意数量的从属服务器;钥匙的寿命有限;LRU驱逐钥匙;支持发布/订阅。

优点:支持多种数据类型;很容易安装;非常快(每秒执行约11万组,每秒执行约81000次);操作都是原子的;多用途工具(在许多用例中使用)。

缺点:不支持连接;存储过程所需的Lua知识;数据集必须很好地适应内存。

4、HBase

  HBase是谷歌为BigTable数据库设计的分布式非关系数据库。HBase的主要目标之一是托管数十亿行X数百万列。您可以随时添加服务器来增加容量。多个主节点将确保数据的高可用性。HBase是用Java 8编写的。它是在Apache下授权的。Hbase还简单地利用Java API进行客户访问。
特点:支持自动故障;线性可伸缩;提供了数据复制;与Hadoop集成,作为源和目标。
优点:为较大的表提供快速查找;提供对来自数十亿条记录的单行的低延迟访问;简单的Java API为客户端;自动分片;License-free;处理HDFS文件存储之上的大型数据集;灵活的模式设计;高速。
缺点:不支持事务;没有权限或内置身份验证;仅按键索引和排序;单点故障(当只使用一个HMaster时);不支持SQL结构;集群上的内存问题。

5、Neo4j

  Neo4j被称为原生图数据库,因为它有效地实现了属性图模型,一直到存储层。这意味着数据完全按照白板的方式存储,数据库使用指针导航和遍历图。Neo4j有数据库的社区版和企业版。企业版包括Community Edition必须提供的所有功能,以及额外的企业需求,如备份、集群和故障转移功能。
特点:它支持唯一的约束;Neo4j支持完整的ACID(原子性、一致性、隔离性和持久性)规则;Java API: Cypher API和本机Java API;使用Apache Lucence索引;简单查询语言Neo4j CQL;包含用于执行CQL命令的UI: Neo4j Data Browser。
优点:容易检索其相邻节点或关系细节,无需连接或索引;易于学习Neo4j CQL查询语言命令;不需要复杂的连接来检索数据;非常容易地表示半结构化数据;大型企业实时应用程序的高可用性;简化的调优。
缺点:不支持分片。

6、Oracle NoSQL
  Oracle刚刚用Oracle NoSQL启动了NoSQL数据库。它在2018年变得流行起来。与MongoDB和Casandra数据库相比,它不那么流行。Oracle NoSQL数据库实现了从用户定义的键到不透明数据项的映射。尽管它记录了键/值对的内部版本号,但是它只维护存储中的最新版本。Oracle的12c版本是为云而设计的,可以托管在一台服务器或多台服务器上,并支持管理包含数十亿条记录的数据库。Oracle最新版本的一些特性包括网格框架以及物理和逻辑结构的使用。Oracle Database 18c现在为客户提供了一个高性能、可靠和安全的平台,使他们的事务和分析工作负载(无论是在云环境中,还是在本地环境中,或者在混合云配置中)更容易、更经济地实现现代化。
特点:Oracle NoSQL数据库处理大数据;支持SQL,可以从Oracle关系数据库访问它;Oracle NoSQL数据库使用Java/C API读写数据;分布式数据库;通过节点为请求的密钥提供对数据的访问。
优点:基于PL/SQL编程结构;对等社区有助于解决所有问题;Oracle数据库是安全的,并确保不会通过提示更新篡改用户数据。
缺点:小型组织的高成本;安装需要大量的资源;甚至可能需要硬件升级才能实现Oracle;占用了很多空间。

7、Amazon DynamoDB
  DynamoDB使用了一个NoSQL数据库模型,它是非关系型的,允许文档、图形和列在它的数据模型之间。每个DynamoDB查询由用户标识的主键执行,主键唯一标识每个项。它还减轻了客户操作和扩展分布式数据库的负担。因此,硬件供应、设置、配置、复制、软件补丁、集群扩展等都由Amazon管理。
特点:高可伸缩性;用于索引值范围的散列范围;将数据存储在分区中;使用JSON作为传输协议,而不是存储格式。
优点:易于设置;提供底层AWS DynamoDB API;自动伸缩;降低管理高可用性和高峰使用时间伸缩的复杂性;静止加密;DynamoDB的安全性由AWS标识控制。
缺点:不免费备份您的表;大小限制。

8、Couchbase
  重点是易用性,包括web。它是一个NoSQL文档存储数据库。Couchbase Server是一个用于交互式web应用程序的NoSQL文档数据库。它具有灵活的数据模型,易于扩展,提供一致的高性能。Couchbase Server、JSON文档用于表示应用程序对象和对象之间的关系。
特点:与Kubernetes一起大规模自动故障转移部署和管理Couchbase;索引分区;通过N1QL查询本地支持JSON数据;数据压缩;事件服务。
优点:综合优化;降低网络、内存和存储的成本;极棒的管理面板,提供了大量关于您的集群如何执行的见解。
缺点:Couchbase不是开源的。

9、Memcached
  Memcached是一个开源、高性能的分布式内存缓存系统,旨在通过减少数据库负载来加速动态web应用程序。它是存储在内存中的字符串、对象等的键值字典,由数据库调用、API调用或页面呈现生成。它现在被Netlog、Facebook、Flickr、Wikipedia、Twitter和YouTube等网站使用。
特点:通过TCP或UDP的客户机-服务器应用程序;减少数据库负载;Memcached服务器是一个大哈希表;高效的网站与高数据库负荷;根据Berkeley Software Distribution license进行分发;将内存缓存合并到逻辑池中。
优点:安装快;广泛记录在一个巨大的社区中。
缺点:只支持Linux操作系统和类似于BSD的系统;不支持数据冗余;不支持锁、通读、CAS。

10、CouchDB
  CouchDB是一个开源的NoSQL数据库,它使用JSON存储信息,JavaScript作为查询语言。它采用了一种多版本控制系统,避免了DB文件在写入过程中被阻塞。Erlang。它是在Apache下授权的。它在2016年最受欢迎的NoSQL数据库中排名第一。
特点:Map/Reduce列表和显示;提供数据库级安全;身份验证像web应用程序一样通过会话cookie打开;JSONP是免费的;按照文档存储;支持ACID属性;提供最简单的复制形式;基于浏览器的GUI来处理数据、权限和配置。
优点:Map/Reduce,查询数据在某种程度上与数据本身是分离的;存储任何JSON数据。
缺点:任意查询都很昂贵;使用CouchDB需要额外的空间;不支持XML。

Oracle之非关系数据库的更多相关文章

  1. 前端开发必学技能之一———非关系数据库又像关系数据库的MongoDB快速入门第一步下载与安装

    数据库总的来说,分为两个方向:关系数据库和非关系数据库.我们常见的MySQL.Oracle.SQLSerever以及IBMDB2都是属于关系数据库,这里的关系值得是二维表的结构,但是由于随着web的应 ...

  2. MongoDB是一个介于关系数据库和非关系数据库之间的产品

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型.M ...

  3. NoSQL数据库探讨之一 - 为什么要用非关系数据库?

    随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速.而传统的关系数据库在应付 web2.0网站,特别是超大规模和高并发的SNS类型的web2 ...

  4. Oracle官方非托管Odac驱动与Oracle官方托管odac驱动

    方便自己,方便他人,记一次连接oracle的经历,使用 [Oracle官方非托管Odac驱动,Oracle.DataAccess.Client]连接数据库的时候程序会报错,找了很久都不知道是什么原因, ...

  5. 非关系数据库一Memcached

    第三十四课 非关系数据库一Memcached 目录 一.nosql介绍 二.memrcached介绍 三.安装memcached 四.查看memcachedq状态 五.memcached命令行 六.m ...

  6. oracle删除非空的表空间

    oracle删除非空的表空间: drop tablespace tablespaceName including contents;

  7. 【Oracle】非RMAN恢复数据文件、控制文件

    实验环境:OEL 5.6 oracle 11g(11.2.0.4.0) 注意: system表空间数据文件不能在线recover,需要启动到mount状态再recover: undo表空间数据文件可以 ...

  8. 非关系数据库与redis安装

    1.什么是 NoSQL? NoSQL(NoSQL = Not Only SQL ),意为反 SQL 运动,是一项全新的数据库革命性运动,2000 年 前就有人提出,发展至 2009 年趋势越发高涨.它 ...

  9. oracle 归档/非归档

    1.查看oralce是归档模式还是非归档模式 SQL> select name,log_mode from v$database; NAME LOG_MODE------------------ ...

随机推荐

  1. 访问者模式(Visitor模式)

    模式的定义与特点 访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提 ...

  2. 整理全网最全K8S集群管理工具、平台

    整理常见的整理全网最全K8S集群管理工具.平台解决方案. 1 Rancher Rancher中文官网:https://docs.rancher.cn/ 2 KubeSphere 官网:https:// ...

  3. 沁恒CH32F103C8T6的开发和烧录配置说明

    概述 CH32F1系列是沁恒生产的32位Cortex-M3 MCU, 片上集成了时钟安全机制.多级电源管理. 通用DMA控制器等. 此系列具有 2 路 USB2.0接口.多通道 TouchKey. 1 ...

  4. TCP可靠性

    目录 一:TCP可靠性 1.通过序列号与确认应答提高可靠性 一:TCP可靠性 简介 TCP 通过检验和.序列号.确认应答.重发控制.连接管理以及窗口控制等机制实现可靠性传输. 1.通过序列号与确认应答 ...

  5. linux系统别名

    目录 一:系统别名 一:系统别名 alias 格式: alias xxx='命令' alias : 查看系统别名 alias rm='xxx' : 设置系统别名 改别名 别名 执行这个命令 [root ...

  6. python16day

    昨日回顾 自定义模块 模块的两种执行方式:脚本方式.调用方式 name 模块导入的方式 相对导入 random:获取随机数相关 今日内容 常用模块的介绍 time:和时间相关 datetime os ...

  7. java多线程中同步的问题?

    一.通过模拟网络延迟,解决同步的问题. package com.zxf.demo; public class G01 implements Runnable{ private int num=10; ...

  8. arduino物联网学习

    arduino物联网学习 目录 arduino物联网学习 20200215 OLED屏幕使用教程 材料: 软件 代码注释 完整代码 Arduino IDE 开发 ESP-01S/ESP-01物联网实战 ...

  9. 社交网络分析的 R 基础:(四)循环与并行

    前三章中列出的大多数示例代码都很短,并没有涉及到复杂的操作.从本章开始将会把前面介绍的数据结构组合起来,构成真正的程序.大部分程序是由条件语句和循环语句控制,R 语言中的条件语句(if-else)和 ...

  10. Swift字符串的介绍

    字符串的介绍 字符串在任何的开发中使用都是非常频繁的 OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC中字符串@"" ...