精华内容
下载资源
问答
  • 以下不属于nosql数据库的是
    千次阅读
    2022-03-15 22:50:59

    Redis
    全称 REmote DIctionary Server 远程字典服务器,REdis性能非常高,单机能够达到15wqps,通常适合坐缓存,也可以持久化。
    Redis是NoSQL数据库,并不是传统的关系型数据库

    称为数据结构服务器,因为他支持的数据类型都和数据结构相关。


    Redis是基于列的形式
    Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
    它支持多种类型的数据结构,如字符串 ( strings ),散列( hashes ),列表( lists ),集合 ( sets ),
    有序集合( sorted sets)与范围查询,bitmaps,hyperloglogs和地理空间(geospatial)索引半径查询。
    Redis内置了复制( replication ),LUA脚本( Luascripting ) ,LRU驱动事件 ( LRU eviction ),
    事务 ( transactions )和不同级别的磁盘持久化( persistence ),
    并通过Redis哨兵 ( Sentinel )和自动分区( Cluster )提供高可用性( highavailability )。
     

    更多相关内容
  • NoSQL数据库类型简介

    2021-01-07 03:47:33
    近些年来,NoSQL 数据库的发展势头很快。据统计,目前已经产生了 50 到 150 个 NoSQL 数据库系统。但是,归结起来,可以将典型的 NoSQL 划分为 4 种类型,分别是键值数据库、列式数据库、文档数据库和图形数据库,如...
  • NoSQL 数据库比较

    2021-12-16 09:56:11
    本文翻译自:A Comparison of NoSQL Database Management Systems and Models

    本文翻译自:A Comparison of NoSQL Database Management Systems and Models

    1 背景介绍

    当大多数人想到数据库时,他们通常会想到传统的关系数据库模型,该模型涉及由行和列组成的表。 虽然关系数据库管理系统仍然处理互联网上的大部分数据,但近年来,随着开发人员寻求解决关系模型局限性的方法,替代数据模型变得越来越普遍。 这些非关系型数据库模型都有自己独特的优点、缺点和用例,已被归类为 NoSQL 数据库。

    本文将向您介绍一些比较常用的 NoSQL 数据库模型。 它将权衡它们的一些优点和缺点,并提供一些数据库管理系统示例和每个示例的潜在用例。

    2 关系型数据库和它们的缺陷

    数据库是逻辑建模的信息或数据集群。同时,数据库管理系统 (DBMS) 是与数据库交互的计算机程序。 DBMS 允许您控制对数据库的访问、写入数据、运行查询以及执行与数据库管理相关的任何其他任务。尽管数据库管理系统通常被称为“数据库”,但这两个术语并不完全可以互换。数据库可以是任何数据集合,而不仅仅是存储在计算机上的数据,而 DBMS 是允许您与数据库交互的特定软件。

    所有数据库管理系统都有一个底层模型,用于构建数据的存储和访问方式。关系数据库管理系统 (RDBMS) 是使用关系数据模型的 DBMS。在这个模型中,数据被组织成表,在 RDBMS 的上下文中,表更正式地称为关系。关系数据库管理系统通常采用结构化查询语言 (SQL) 来管理和访问数据库中保存的数据。

    从历史上看,关系模型一直是最广泛使用的数据管理方法,时至今日,许多最​​流行的数据库管理系统都实现了关系模型。但是,关系模型存在一些限制,在某些用例中可能会出现问题。

    • 水平扩展关系数据库可能很困难。水平扩展或横向扩展是向现有堆栈添加更多机器以分散负载并允许更多流量和更快处理的做法。这通常与垂直扩展形成对比,垂直扩展涉及升级现有服务器的硬件,通常是通过添加更多 RAM 或 CPU。

    • 难以横向扩展关系数据库的原因在于关系模型旨在确保一致性,这意味着查询同一数据库的客户端将始终看到最新数据。如果您要跨多台机器水平扩展关系数据库,则很难确保一致性,因为客户端可能会将数据写入一个节点而不是其他节点,并且初始写入和其他节点的时间之间可能会有延迟更新以反映更改。

    • RDBMS 提出的另一个限制是,关系模型旨在管理结构化数据,或与预定义数据类型一致或至少以某种预定方式组织的数据,使其易于排序和搜索。然而,随着 1990 年代初期个人计算的普及和互联网的兴起,非结构化数据(例如电子邮件、照片、视频等)变得更加普遍。

    随着这些限制变得越来越严格,开发人员开始寻找传统关系数据模型的替代方案,导致 NoSQL 数据库越来越受欢迎。

    3 NoSQL介绍

    标签 NoSQL 本身有一个相当模糊的定义。 “NoSQL”是 Carlo Strozzi 在 1998 年创造的,作为他当时新的 NoSQL 数据库的名称,之所以选择它,只是因为它不使用 SQL 来管理数据。

    2009 年,Johan Oskarsson 组织了一次开发人员聚会,讨论“开源、分布式和非关系数据库”(如 Cassandra 和 Voldemort)的传播,该术语有了新的含义。 Oskarsson 将聚会命名为“NOSQL”,从那时起,该术语就被用作所有不采用关系模型的数据库的统称。有趣的是,Strozzi 的 NoSQL 数据库实际上采用了关系模型,这意味着最初的 NoSQL 数据库不符合 NoSQL 的当代定义。

    因为“NoSQL”通常是指不使用关系模型的任何 DBMS,所以有几个与 NoSQL 概念相关的操作数据模型。下表包括几个这样的数据模型,但请注意,这不是一个完整的列表:

    Operational Database ModelExample DBMSs
    Key-value storeRedis, MemcacheDB
    Columnar databaseCassandra, Apache HBase
    Document storeMongoDB,Couchbase
    Graph databaseOrientDB, Neo4j

    尽管有这些不同的底层数据模型,但大多数 NoSQL 数据库都有几个共同特征。一方面,NoSQL 数据库通常旨在以牺牲一致性为代价最大化可用性。从这个意义上说,一致性是指任何读取操作都将返回写入数据库的最新数据的想法。在为强一致性设计的分布式数据库中,写入一个节点的任何数据将立即在所有其他节点上可用;否则会出错。

    相反,NoSQL 数据库通常以最终一致性为目标。这意味着新写入的数据最终会在数据库中的其他节点上可用(通常在几毫秒内),但不一定立即可用。这样做的好处是提高了数据的可用性:即使您可能看不到写入的最新数据,您仍然可以查看它的早期版本,而不会收到错误消息。

    关系数据库旨在处理完全符合预定义模式的规范化数据。在 DBMS 的上下文中,规范化数据是以消除冗余的方式组织的数据——这意味着数据库占用尽可能少的存储空间——而模式是数据库中数据结构的概述。

    虽然 NoSQL 数据库具备处理规范化数据的能力,并且能够在预定义的模式中对数据进行排序,但它们各自的数据模型通常比关系数据库强加的刚性结构具有更大的灵活性。正因为如此,NoSQL 数据库因是存储半结构化和非结构化数据的更好选择而享有盛誉。但是,请记住这一点,因为 NoSQL 数据库不带有预定义的模式,这通常意味着由数据库管理员定义应如何组织和访问数据,以对其应用程序最有意义的方式进行。

    现在您已经了解了什么是 NoSQL 数据库以及它们与关系数据库的不同之处,让我们仔细看看一些更广泛实施的 NoSQL 数据库模型。

    4 Key-value Databases

    键值数据库,也称为键值存储,通过存储和管理关联数组来工作。关联数组,也称为字典或哈希表,由一组键值对组成,其中键作为唯一标识符来检索关联值。值可以是任何对象,从简单的对象(如整数或字符串)到更复杂的对象(如 JSON 结构)。

    与定义由具有预定义数据类型的行和列的表组成的数据结构的关系数据库相比,键值数据库将数据存储为没有任何结构或关系的单个集合。连接到数据库服务器后,应用程序可以定义一个键(例如,the_meaning_of_life)并提供一个匹配值(例如,42),稍后可以通过提供键以相同的方式检索该值。键值数据库将其中保存的任何数据视为不透明的 blob;由应用程序来了解它的结构。

    键值数据库通常被描述为高性能、高效和可扩展。键值数据库的常见用例是缓存、消息队列和会话管理。

    一些流行的开源键值数据存储有:

    DatabaseDescription
    RedisRedis 是一种用作数据库、缓存或消息代理的内存数据存储,支持各种数据结构,从字符串到位图、流和空间索引。
    Memcached一种通用内存对象缓存系统,常用于通过在内存中缓存数据和对象来加速数据驱动的网站和应用程序。
    Riak具有高级本地和多集群复制的分布式键值数据库。

    5 Columnar Databases

    列式数据库,有时也称为面向列的数据库,是将数据存储在列中的数据库系统。这可能看起来类似于传统的关系数据库,但不是将列分组到表中,而是将每一列存储在系统存储中的单独文件或区域中。

    列式数据库中存储的数据按记录顺序出现,这意味着一列中的第一个条目与其他列中的第一个条目相关。这种设计允许查询只读取他们需要的列,而不必读取表中的每一行并在将不需要的数据存储到内存后丢弃。

    由于每列中的数据属于同一类型,因此允许使用各种存储和读取优化策略。特别是,许多列式数据库管理员实施了一种压缩策略,例如运行长度编码,以最大限度地减少单个列占用的空间量。这可以加快读取速度,因为查询需要遍历更少的行。但是,列式数据库的一个缺点是加载性能往往很慢,因为必须单独写入每一列并且数据通常保持压缩状态。尤其是增量加载以及单个记录的读取,在性能方面可能代价高昂。

    面向列的数据库自 1960 年代以来一直存在。然而,自 2000 年代中期以来,列式数据库已越来越广泛地用于数据分析,因为列式数据模型非常适合快速查询处理。在应用程序需要频繁执行聚合函数的情况下,它们也被视为有利,例如查找列中数据的平均值或总和。一些列式数据库管理系统甚至能够使用 SQL 查询。

    一些流行的开源列式数据库有:

    DatabaseDescription
    Apache Cassandra旨在最大化可扩展性、可用性和性能的列存储。
    Apache HBase一种分布式数据库,支持对大量数据进行结构化存储,旨在与 Hadoop 软件库配合使用。
    ClickHouse支持实时生成分析数据和 SQL 查询的容错 DBMS。

    6 Document-oriented Databases

    面向文档的数据库或文档存储是 NoSQL 数据库,它以文档的形式存储数据。文档存储是一种键值存储:每个文档都有一个唯一的标识符——它的键——并且文档本身作为值。

    这两种模型的区别在于,在键值数据库中,数据被视为不透明的,数据库不知道或不关心其中保存的数据;由应用程序来了解存储了哪些数据。然而,在文档存储中,每个文档都包含某种元数据,为数据提供一定程度的结构。文档存储通常带有 API 或查询语言,允许用户根据它们包含的元数据检索文档。它们还允许使用复杂的数据结构,因为您可以在其他文档中嵌套文档。

    与关系数据库中给定对象的信息可能分布在多个表或数据库中不同,面向文档的数据库可以将给定对象的所有数据存储在单个文档中。文档存储通常将数据存储为 JSON、BSON、XML 或 YAML 文档,有些可以存储二进制格式,如 PDF 文档。有些使用 SQL 的变体、全文搜索或他们自己的本地查询语言进行数据检索,而另一些则具有不止一种查询方法。

    近年来,面向文档的数据库的受欢迎程度有了巨大的增长。由于其灵活的架构,它们经常用于电子商务、博客和分析平台以及内容管理系统。文档存储被认为是高度可扩展的,分片是一种常见的水平扩展策略。它们也非常适合保存大量结构不同的不相关的复杂信息。

    一些流行的基于开源文档的数据存储有:

    DatabaseDescription
    MongoDB在撰写本文时,MongoDB 是一种通用的分布式文档存储,是世界上使用最广泛的面向文档的数据库。
    Couchbase最初称为 Membase,一种基于 JSON、与 Memcached 兼容的基于文档的数据存储。 作为一个多模型数据库,Couchbase 还可以用作键值存储。
    Apache CouchDB作为 Apache 软件基金会的一个项目,CouchDB 将数据存储为 JSON 文档并使用 JavaScript 作为其查询语言。

    7 Graph Databases

    图数据库可以被认为是文档存储模型的一个子类别,因为它们将数据存储在文档中,并且不坚持数据遵循预定义的模式。 但是,不同之处在于图形数据库通过突出显示各个文档之间的关系为文档模型添加了一个额外的层。

    为了更好地掌握图形数据库的概念,理解以下术语很重要:

    • Node: 节点是图形数据库跟踪的单个实体的表示。 它或多或少相当于关系数据库中的记录或行或文档存储中的文档的概念。 例如,在音乐录音艺术家的图形数据库中,一个节点可能代表单个表演者或乐队。

    • Property: 属性是与各个节点相关的相关信息。 基于我们的录音艺术家示例,某些属性可能是“歌手”、“爵士乐”或“白金销售艺术家”,具体取决于与数据库相关的信息。

    • Edge: 也称为图或关系,边是两个节点如何相关的表示,并且是图数据库的一个关键概念,将它们与 RDBMS 和文档存储区分开来。 边可以是有向的或无向的。

      • Undirected: 在无向图中,节点之间的边只是为了显示它们之间的连接。 在这种情况下,边可以被认为是“双向”关系——一个节点与另一个节点的关系之间没有隐含的差异。
      • Directed: 在有向图中,根据关系源自哪个方向,边可以具有不同的含义。 在这种情况下,边是“单向”关系。 例如,有向图数据库可能会指定从 Sammy 到 Seaweeds 的关系,显示 Sammy 为该组制作了一张专辑,但可能不会显示从 The Seaweeds 到 Sammy 的等效关系。

    使用图形数据库执行某些操作要简单得多,因为它们如何链接和分组相关信息。 这些数据库通常用于从数据点之间的关系中获得洞察力很重要的情况,或者在最终用户可用的信息由他们与他人的联系决定的应用程序中,如在社交网络中。 它们经常用于欺诈检测、推荐引擎以及身份和访问管理应用程序。

    一些流行的开源图形数据库有:

    DatabaseDescription
    Neo4j具有本机图形存储和处理功能的符合 ACID 的 DBMS。 在撰写本文时,Neo4j 是世界上最流行的图形数据库。
    ArangoDBArangoDB 不仅是一个图形数据库,它还是一个多模型数据库,它将图形、文档和键值数据模型统一到一个 DBMS 中。 它具有 AQL(一种类似于 SQL 的原生查询语言)、全文搜索和排名引擎。
    OrientDBOrientDB 是另一个多模型数据库,支持图模型、文档模型、键值模型和对象模型。 它支持 SQL 查询和 ACID 事务。

    8 总结

    在本教程中,我们仅讨论了当今使用的少数 NoSQL 数据模型。 多年来,一些 NoSQL 模型(例如对象存储)的使用水平各不相同,但在某些用例中仍然是关系模型的可行替代方案。 其他的,比如对象关系数据库和时间序列数据库,混合了关系和 NoSQL 数据模型的元素,在频谱的两端之间形成一种中间地带。

    NoSQL 数据库类别非常广泛,并且一直发展到今天。 如果您有兴趣了解有关 NoSQL 数据库管理系统和概念的更多信息,我们鼓励您查看我们的 NoSQL 相关内容库(地址)。

    展开全文
  • NOsql数据库论文

    2016-03-12 15:15:02
    这个是我写的NOsql数据库的论文也是期末作业,有需要的可以下载下来用
  • 15个nosql数据库

    2018-03-22 21:47:02
    1、MongoDB介绍MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案。当数据量达到50GB以上的时候,MongoDB的数据库访问...

    1、MongoDB

    介绍

    MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案。当数据量达到50GB以上的时候,MongoDB的数据库访问速度是MySQL的10倍以上。MongoDB的并发读写效率不是特别出色,根据官方提供的性能测试表明,大约每秒可以处理0.5万~1.5万次读写请求。MongoDB还自带了一个出色的分布式文件系统GridFS,可以支持海量的数据存储。

    MongoDB也有一个Ruby的项目MongoMapper,是模仿Merb的DataMapper编写的MongoDB接口,使用起来非常简单,几乎和DataMapper一模一样,功能非常强大。

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    所谓“面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个 集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定 义任何模式(schema)。
    模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。
    存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。我们称这种存储形式为BSON(Binary Serialized dOcument Format)。

    MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。

    MongoDB把数据存储在文件中(默认路径为:/data/db),为提高效率使用内存映射文件进行管理。

    特性

    它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

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

    官方网站

    http://www.mongodb.org/

    2、CouchDB

    介绍

    Apache CouchDB 是一个面向文档的数据库管理系统。它提供以 JSON 作为数据格式的 REST 接口来对其进行操作,并可以通过视图来操纵文档的组织和呈现。 CouchDB 是 Apache 基金会的顶级开源项目。

    CouchDB是用Erlang开发的面向文档的数据库系统,其数据存储方式类似Lucene的Index文件格式。CouchDB最大的意义在于它是一个面向Web应用的新一代存储系统,事实上,CouchDB的口号就是:下一代的Web应用存储系统。

    特性

    主要功能特性有:

    CouchDB是分布式的数据库,他可以把存储系统分布到n台物理的节点上面,并且很好的协调和同步节点之间的数据读写一致性。这当然也得以于Erlang无与伦比的并发特性才能做到。对于基于web的大规模应用文档应用,然的分布式可以让它不必像传统的关系数据库那样分库拆表,在应用代码层进行大量的改动。
    CouchDB是面向文档的数据库,存储半结构化的数据,比较类似lucene的index结构,特别适合存储文档,因此很适合CMS,电话本,地址本等应用,在这些应用场合,文档数据库要比关系数据库更加方便,性能更好。  
    CouchDB支持REST API,可以让用户使用JavaScript来操作CouchDB数据库,也可以用JavaScript编写查询语句,我们可以想像一下,用AJAX技术结合CouchDB开发出来的CMS系统会是多么的简单和方便。其实CouchDB只是Erlang应用的冰山一角,在最近几年,基于Erlang的应用也得到的蓬勃的发展,特别是在基于web的大规模,分布式应用领域,几乎都是Erlang的优势项目。

    官方网站

    http://couchdb.apache.org/

    3、Hbase

    介绍

    HBase是一个分布式的、面向列的开源数据库,该技术来源于Chang et al所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式。

    HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。   HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。

    HBase访问接口

    Native Java API,最常规和高效的访问方式,适合Hadoop MapReduce Job并行批处理HBase表数据
    HBase Shell,HBase的命令行工具,最简单的接口,适合HBase管理使用
    Thrift Gateway,利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其他异构系统在线访问HBase表数据
    REST Gateway,支持REST 风格的Http API访问HBase, 解除了语言限制
    Pig,可以使用Pig Latin流式编程语言来操作HBase中的数据,和Hive类似,本质最终也是编译成MapReduce Job来处理HBase表数据,适合做数据统计
    Hive,当前Hive的Release版本尚没有加入对HBase的支持,但在下一个版本Hive 0.7.0中将会支持HBase,可以使用类似SQL语言来访问HBase

    特性

    主要功能特性有:

    支持数十亿行X上百万列

    采用分布式架构 Map/reduce

    对实时查询进行优化

    高性能 Thrift网关

    通过在server端扫描及过滤实现对查询操作预判

    支持 XML, Protobuf, 和binary的HTTP

    基于 Jruby( JIRB)的shell

    对配置改变和较小的升级都会重新回滚

    不会出现单点故障

    堪比MySQL的随机访问性能

    官方网站

    http://hbase.apache.org/

    4、cassandra

    介绍

    Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynomite(分布式的Key-Value存储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。)Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型。P2P去中心化的存储。很多方面都可以称之为Dynamo 2.0。

    特性

    和其他数据库比较,有几个突出特点:

    模式灵活 :使用Cassandra,像文档存储,你不必提前解决记录中的字段。你可以在系统运行时随意的添加或移除字段。这是一个惊人的效率提升,特别是在大型部 署上。
    真正的可扩展性 :Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,可以指向另一台电脑。你不必重启任何进程,改变应用查询,或手动迁移任何数据。 
    多数据中心识别 :你可以调整你的节点布局来避免某一个数据中心起火,一个备用的数据中心将至少有每条记录的完全复制。

    一些使Cassandra提高竞争力的其他功能:

    范围查询 :如果你不喜欢全部的键值查询,则可以设置键的范围来查询。 
    列表数据结构 :在混合模式可以将超级列添加到5维。对于每个用户的索引,这是非常方便的。 
    分布式写操作 :有可以在任何地方任何时间集中读或写任何数据。并且不会有任何单点失败。

    官方网站

    http://cassandra.apache.org/

    5、Hypertable

    介绍

    Hypertable是一个开源、高性能、可伸缩的数据库,它采用与Google的Bigtable相似的模型。在过去数年中,Google为在 PC集群 上运行的可伸缩计算基础设施设计建造了三个关键部分。第一个关键的基础设施是Google File System(GFS),这是一个高可用的文件系统,提供了一个全局的命名空间。它通过跨机器(和跨机架)的文件数据复制来达到高可用性,并因此免受传统 文件存储系统无法避免的许多失败的影响,比如电源、内存和网络端口等失败。第二个基础设施是名为Map-Reduce的计算框架,它与GFS紧密协作,帮 助处理收集到的海量数据。第三个基础设施是Bigtable,它是传统数据库的替代。Bigtable让你可以通过一些主键来组织海量数据,并实现高效的 查询。Hypertable是Bigtable的一个开源实现,并且根据我们的想法进行了一些改进。

    特性

    主要功能特点:

    负载均衡的处理

    版本控制和一致性

    可靠性

    分布为多个节点

    官方网站

    http://hypertable.org/

    6、Redis

    介绍

    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

    性能测试结果:

    SET操作每秒钟 110000 次,GET操作每秒钟 81000 次,服务器配置如下:

    Linux 2.6Xeon X3320 2.5Ghz.

    stackoverflow 网站使用 Redis 做为缓存服务器。

    特点

    主要功能特点:

    安全性

    主从复制

    运行异常快

    支持 sets(同时也支持 union/diff/inter)

    支持列表(同时也支持队列;阻塞式 pop操作)

    支持哈希表(带有多个域的对象)

    支持排序 sets(高得分表,适用于范围查询)

    Redis支持事务

    支持将数据设置成过期数据(类似快速缓冲区设计)

    Pub/Sub允许用户实现消息机制

    官方网站

    http://redis.io/

    7、Tokyo Cabinet/Tokyo Tyant

    介绍

    Tokyo Cabinet(TC)和Tokyo Tyrant(TT)的开发者是日本人Mikio Hirabayashi,主要用于日本最大的SNS网站mixi.jp。TC出现的时间最早,现在已经是一个非常成熟的项目,也是Key-Value数据库领域最大的热点,现在广泛应用于网站。TC是一个高性能的存储引擎,而TT提供了多线程高并发服务器,性能也非常出色,每秒可以处理4万~5万次读写操作。

    TC除了支持Key-Value存储之外,还支持Hashtable数据类型,因此很像一个简单的数据库表,并且还支持基于Column的条件查询、分页查询和排序功能,基本上相当于支持单表的基础查询功能,所以可以简单地替代关系数据库的很多操作,这也是TC受到大家欢迎的主要原因之一。有一个Ruby项目miyazakiresistance将TT的Hashtable的操作封装成和ActiveRecord一样的操作,用起来非常高效。

    特性

    TC/TT在Mixi的实际应用当中,存储了2000万条以上的数据,同时支撑了上万个并发连接,是一个久经考验的项目。TC在保证了极高的并发读写性能的同时,还具有可靠的数据持久化机制,同时还支持类似关系数据库表结构的Hashtable以及简单的条件、分页和排序操作,是一个很优越的NoSQL数据库。

    TC的主要缺点是,在数据量达到上亿级别以后,并发写数据性能会大幅度下降,开发人员发现在TC里面插入1.6亿条2KB~20KB数据的时候,写入性能开始急剧下降。即当数据量达到上亿条的时候,TC性能便开始大幅度下降,从TC作者自己提供的Mixi数据来看,至少上千万条数据量的时候还没有遇到这么明显的写入性能瓶颈。

    官方网站

    http://fallabs.com/tokyocabinet/

    8、Flare

    介绍

    TC是日本第一大SNS网站mixi.jp开发的,而Flare是日本第二大SNS网站green.jp开发的。简单地说,Flare就是给TC添加了scale(可扩展)功能。它替换了TT部分,自己另外给TC写了网络服务器。Flare的主要特点就是支持scale能力,它在网络服务端之前添加了一个Node Server,用来管理后端的多个服务器节点,因此可以动态添加数据库服务节点、删除服务器节点,也支持Failover。如果你的使用场景必须让TC可以scale,那么可以考虑Flare。

    flare唯一的缺点就是他只支持memcached协议,因此当你使用flare的时候,就不能使用TC的table数据结构了,只能使用TC的key-value数据结构存储。

    特性

    没找到相关的介绍。

    官方网站

    http://flare.prefuse.org/

    9、Berkeley DB

    介绍

    Berkeley DB (DB)是一个高性能的,嵌入数据库编程库,和C语言,C++,Java,Perl,Python,PHP,Tcl以及其他很多语言都有绑定。Berkeley DB可以保存任意类型的键/值对,而且可以为一个键保存多个数据。Berkeley DB可以支持数千的并发线程同时操作数据库,支持最大256TB的数据,广泛   用于各种操作系统包括大多数Unix类操作系统和Windows操作系统以及实时操作系统。

    Berkeley DB最初开发的目的是以新的HASH访问算法来代替旧的hsearch函数和大量的dbm实现(如AT&T的dbm,Berkeley的 ndbm,GNU项目的gdbm),Berkeley DB的第一个发行版在1991年出现,当时还包含了B+树数据访问算法。在1992年,BSD UNIX第4.4发行版中包含了Berkeley DB1.85版。基本上认为这是Berkeley DB的第一个正式版。在1996年中期,Sleepycat软件公司成立,提供对Berkeley DB的商业支持。在这以后,Berkeley DB得到了广泛的应用,成为一款独树一帜的嵌入式数据库系统。2006年Sleepycat公司被Oracle 公司收购,Berkeley DB成为Oracle数据库家族的一员,Sleepycat原有开发者继续在Oracle开发Berkeley DB,Oracle继续原来的授权方式并且加大了对Berkeley DB的开发力度,继续提升了Berkeley DB在软件行业的声誉。Berkeley DB的当前最新发行版本是4.7.25。

    特性

    主要特点:

    访问速度快

    省硬盘空间

    官方网站

    http://www.oracle.com/us/products/database/overview/index.html?origref=http://www.oschina.net/p/berkeley+db

    10、memcachedb

    介绍

    MemcacheDB是一个分布式、key-value形式的持久存储系统。它不是一个缓存组件,而是一个基于对象存取的、可靠的、快速的持久存储引擎。协议跟memcache一致(不完整),所以很多memcached客户端都可以跟它连接。MemcacheDB采用Berkeley DB作为持久存储组件,故很多Berkeley DB的特性的他都支持。

    特性

    MemcacheDB是一个分布式、key-value形式的持久存储系统。它不是一个缓存组件,而是一个基于对象存取的、可靠的、快速的持久存储引擎。 协议跟memcache一致(不完整),所以很多memcached客户端都可以跟它连接。MemcacheDB采用Berkeley DB作为持久存储组件,故很多Berkeley DB的特性的他都支持。   我们是站在巨人的肩膀上的。MemcacheDB的前端缓存是Memcached   前端:memcached的网络层   后端:BerkeleyDB存储   

    写速度:从本地服务器通过memcache客户端(libmemcache)set2亿条16字节长的key,10字节长的Value的记录,耗时 16572秒,平均速度12000条记录/秒。   

    读速度:从本地服务器通过memcache客户端(libmemcache)get100万条16字节长的key,10字节长的Value的记录,耗 时103秒,平均速度10000条记录/秒。   ·支持的memcache命令

    官方网站

    http://memcachedb.org/

    11、Memlink

    介绍

    Memlink 是天涯社区开发的一个高性能、持久化、分布式的Key-list/queue数据引擎。正如名称中的memlink所示,所有数据都建构在内存中,保证了 系统的高性能 (大约是redis几倍),同时使用了redo-log技术保证数据的持久化。Memlink还支持主从复制、读写分离、List过滤操作等功能。

    与Memcached不同的是,它的value是一个list/queue。并且提供了诸如持久化,分布式的功能。听起来有点像Redis,但它号称比Redis更好,在很多Redis做得还不好的地方进行了改进和完善。提供的客户端开发包包括 c,python,php,java 四种语言。

    特性

    特点:

    内存数据引擎,性能极为高效
    List块链结构,精简内存,优化查找效率
    Node数据项可定义,支持多种过滤操作
    支持redo-log,数据持久化,非Cache模式
    分布式,主从同步

    官方网站

    http://code.google.com/p/memlink/

    12、db4o

    介绍

    “利用表格存储对象,就像是将汽车开回家,然后拆成零件放进车库里,早晨可以再把汽车装配起来。但是人们不禁要问,这是不是泊车的最有效的方法呢。” – Esther Dyson   db4o 是一个开源的纯面向对象数据库引擎,对于 Java 与 .NET 开发者来说都是一个简单易用的对象持久化工具,使用简单。同时,db4o 已经被第三方验证为具有优秀性能的面向对象数据库, 下面的基准测试图对 db4o 和一些传统的持久方案进行了比较。db4o 在这次比较中排名第二,仅仅落后于JDBC。通过图 1 的基准测试结果,值得我们细细品味的是采用 Hibernate/HSQLDB 的方案和 JDBC/HSQLDB 的方案在性能方面有着显著差距,这也证实了业界对 Hibernate 的担忧。而 db4o 的优异性能,让我们相信: 更 OO 并不一定会牺牲性能。

    同时,db4o 的一个特点就是无需 DBA 的管理,占用资源很小,这很适合嵌入式应用以及 Cache 应用, 所以自从 db4o 发布以来,迅速吸引了大批用户将 db4o 用于各种各样的嵌入式系统,包括流动软件、医疗设备和实时控制系统。   db4o 由来自加州硅谷的开源数据库公司 db4objects 开发并负责商业运营和支持。db4o 是基于 GPL 协议。db4objects 于 2004 年在 CEO Christof Wittig 的领导下组成,资金背景包括 Mark Leslie 、 Veritas 软件公司 CEO 、 Vinod Khosla ( Sun 公司创始人之一)、 Sun 公司 CEO 在内的硅谷高层投资人组成。毫无疑问,今天 db4objects 公司是硅谷炙手可热的技术创新者之一。

    特性

    db4o 的目标是提供一个功能强大的,适合嵌入的数据库引擎,可以工作在设备,移动产品,桌面以及服务器等各种平台。主要特性如下:   开源模式。与其他 ODBMS 不同,db4o 为开源软件,通过开源社区的力量驱动开发 db4o 产品。   原生数据库。db4o 是 100% 原生的面向对象数据库,直接使用编程语言来操作数据库。程序员无需进行 OR 映射来存储对象,大大节省了程序员在存储数据的开发时间。   高性能。 下图为 db4o 官方公布的基准测试数据,db4o 比采用 Hibernate/MySQL 方案在某些测试线路上速度高出 44 倍之多!并且安装简单,仅仅需要 400Kb 左右的 .jar 或 .dll 库文件。在接下来的系列文章中,我们将只关注在 Java 平台的应用,但是实际上 db4o 毫无疑问会很好地在 .NET平台工作。

                                     图:官方测试数据

    易嵌入。使用 db4o 仅需引入 400 多 k 的 jar 文件或是 dll 文件,内存消耗极小。   零管理。使用 db4o 无需 DBA,实现零管理。   支持多种平台。db4o 支持从 Java 1.1 到 Java 5.0,此外还支持 .NET 、 CompactFramework 、 Mono 等 .NET 平台,也可以运行在 CDC 、 PersonalProfile 、 Symbian 、 Savaje 以及 Zaurus 这种支持反射的 J2ME 方言环境中,还可以运行在 CLDC 、 MIDP 、 RIM/Blackberry 、 Palm OS 这种不支持反射的 J2ME 环境中。   或许开发者会问,如果现有的应用环境已经有了关系型数据库怎么办?没关系,db4o 的 dRS(db4o Replication System)可实现 db4o 与关系型数据库的双向同步(复制),如图 3 。 dRS 是基于 Hibernate 开发,目前的版本是 1.0 ,并运行在 Java 1.2 或更高版本平台上,基于 dRS 可实现 db4o 到 Hibernate/RDBMS 、 db4o 到 db4o 以及 Hibernate/RDBMS 到 Hibernate/RDBMS 的双向复制。dRS 模型如图

                       图:DRS模型

    官方网站

    http://www.db4o.com/china/

    13、Versant

    介绍

    Versant Object Database (V/OD) 提供强大的数据管理,面向 C++, Java or .NET 的对象模型,支持大并发和大规模数据集合。

    Versant对象数据库是一个对象数据库管理系统(ODBMS:Object Database Management System)。它主要被用在复杂的、分布式的和异构的环境中,用来减少开发量和提高性能。尤其当程序是使用Java和(或)C++语言编写的时候,尤其有用。

    它是一个完整的,电子基础设施软件,简化了事务的构建和部署的分布式应用程序。

    作为一个卓越的数据库产品,Versant ODBMS在设计时的目标就是为了满足客户在异类处理平台和企业级信息系统中对于高性能、可量测性、可靠性和兼容性方面的需求。 

    Versant对象数据库已经在为企业业务应用提供可靠性、完整性和高性能方面获得了建树,Versant ODBMS所表现出的高效的多线程架构、internal parallelism 、平稳的Client-Server结构和高效的查询优化,都体现了其非常卓越的性能和可扩展性。 

    Versant对象数据库包括Versant ODBMS,C++和Java语言接口,XML工具包和异步复制框架。

    特性

    一、强有力的优势

    Versant Object Database8.0,适用于应用环境中包含复杂对象模型的数据库,其设计目标是能够处理这些应用经常需要的导航式访问,无缝的数据分发,和企业级的规模。

    对于很多应用程序而言,最具挑战性的方面是控制业务模型本身的内在复杂性。 电信基础设施,交通运输网络,仿真,金融工具以及其它领域的复杂性必须得到支持, 而且这种支持复杂性的方式还要能够随着环境和需求变化而不断地改进应用程序。 这些应用程序的重点是领域和这些领域的逻辑。 复杂的设计应当以对象模型为基础。将技术需求例如持久性(和SQL)与领域模型混合在一起的架构会带来灾难性的后果。

    Versant对象数据库使您可以使用那些只含有域行为信息的对象,而不用考虑持久性。同时,Versant对象数据库还能提供跨多个数据库的无缝的数据分发,高并发性,细粒度锁,顶级性能, 以及通过复制和其它技术提供的高可用性。现代Java中的对象关系映射工具已经简化了很多映射的问题, 但是它们还不能提供Versant所能提供的无缝数据分发的功能和高性能。

    二、主要特性

    C++、Java及.NET 的透明对象持久

    支持对象持久标准,如JDO

    跨多数据库的无缝数据分发

    企业级的高可用性选项

    动态模式更新

    管理工作量少(或不需要)

    端到端的对象支持架构

    细粒度并发控制

    多线程,多会话

    支持国际字符集

    高速数据采集

    三、优势

    对象层次结构的快速存储、检索和浏览

    性能高于关系型数据库10 倍以上

    减少开发时间

    四、8.0的新特性

    增强的多核线性扩展能力

    增强的数据库管理工具(监控、数据库检查、数据重组)

    支持基于LINQ的.NET绑定机制

    支持.NET和JDO应用的FTS基于“Black Box”工具的数据库活动记录与分析

    五、Versant对象数据库特性

    动态模式更新

    Versant支持缓慢模式更新,这意味着当被使用时,对象才会从旧的模式转为新的模式,就不需要映射了。所有这些都支持数据库模式的更新与敏捷开发。

    跨多数据库的无缝数据分发

    客户端与一个或多个数据库进行无缝交互。单个的数据库无缝地联合在一起,使您能够给数据分区,提高读写能力,增大总体的数据库的大小。这些数据库上的数据分发是透明的。它们被结合在一起形成一个

    无缝的数据库,提供巨大的可扩展性。

    并发控制

    对象级锁确保只有在两个应用程序试图更新同一对象时才会有冲突的发生,这与基于页的锁机制不同。基于页的锁机制可能会导致并发热点的假象。

    透明的C++对象持久性

    C++对象,STL类,标准C++集合如字典,映射,映射的映射,诸如此类,以原样保存在数据库中。状态变化在后台被自动追踪。当相关的事务提交后,所有的变化将会被自动发送到数据库。因此就能形成一种非常自然的,低干扰的编程风格,这样,就能实现应用程序的快速开发,同时当需求发生变化时,应用程序就能够灵活地修改。

    透明的Java对象持久性

    V/OD的JVI & JDO 2.0 API 提供了透明的简单对象(POJO)的持久性,包括 Java 2 持久类,接口,以及任何用户定义的类。状态变化

    在后台被自动追踪。事务提交后,自动把所有变化写入数据库。因此,对于托管和非托管部署,您都能获得轻量级的编程风格。

    可完全嵌入Versant 可以被嵌入到应用程序中,数据库规模可以达到TB 级别。

    并且可以自主运行,不需要任何管理。

    六、企业级的特性

    对象端到端

    对象端到端意味着你的应用对象存在于客户端,网络上,以及数据库中。与关系型数据库不同的是,对象在内存中和数据库中的表示之间不需要任何映射或转换。

    应用的客户端缓存透明地缓存对象以提高速度。数据库支持对象,它能执行查询,建立索引,使应用能够平衡它和数据库间的进程执行。XA的支持使与其它事务数据源协调成为可能。

    七、V/OD 8数据库体系架构

    高可用性

    通过在线进行数据库管理实现数据库的高可用性。

    容错服务器

    容错服务器选项可以在Versant数据库的硬件或是软件出现故障的时候,自动进行失效转移和数据恢复。容错服务器使用的是在两个数据库实例之间进行同步复制,一旦出现故障,容错服务器也会支持透明重同步。

    异步数据复制

    异步数据复制选项支持多个对象服务器之间的主从异步复制和点对点异步复制。可以使用异步数据复制将数据复制到一个分布式恢复站点或者将数据在多个本地的对象数据库之间进行复制,以提高性能和可靠性。

    高可用性备份

    高可用性数据备份选项使Versant可以使用EMC Symmetrix或其它企业级存储系统的磁盘镜像的特性,来对很大的数据卷进行在线备份,同时又不会影响到可用性。

    在线再组织

    Versant 数据库再组织选项为了会删除大量对象的应用而设计的。它使用户能够收回数据库中未使用的空间,同时使数据库保持正常运作,增加可用空间,改善数据库的性能。

    八、为什么要使用Versant面向对象数据库?

    通过缩短研发时间来加速上市

    对象关系映射代码可能占用了你的应用的40%或更多。有了Versant面向对象数据库,映射代码就不再需要了。

    极大地提高了性能和数据吞吐能力

    当应用中涉及到复杂的内存对象模式,尤其是关联访问时,对象数据库要比映射到关系数据库表现得更好。例如,当应用程序需要从对象数据库里检索一个对象时,只要执行单条查询即可找到该对象。当映射到一个关系数据库时,如果对象包含多对多关联,那么就必须通过一个或多个连接才能检索到关联表中的数据。使用了对象数据库,对于一般复杂性的对象的检索,速度则提高了三倍,对于复杂性很高的对象的检索,例如多对多关联,搜索的速度则提高了三十倍。而对于集合的集合和递归联系,检索的速度有可能提高五十倍。

    根据需求的变化,快速改进应用

    今天,商业进程、结构和应用要求的变化的速度使得适应变化的能力变得极为重要。对象关系映射和其它适用于刚性存储结构的方法,让变化变得困难。而Versant对象数据库极大的提升了你的应用满足当前和未来的商业需求的能力。

    投资回报率

    当用户遇到了复杂的对象模型和大的数据集,对象数据库就是首选的解决方案。对象数据库主要的优点在于,它能够缩小代码的规模,降低研发成本,缩短上市的时间,减少或根本没有管理的要求以及降低购置硬件和服务器软件许可证的成本。性能上的优势还可以大大降低高负载动作应用所消耗的成本。大型的关系数据库成本高非常昂贵,还需要昂贵的硬件支持

    官方网站

    http://www.versant.com/index.aspx

    14、Neo4j

    介绍

    Neo4j是一个嵌入式,基于磁盘的,支持完整事务的Java持久化引擎,它在图像中而不是表中存储数据。Neo4j提供了大规模可扩展性,在一台机器上可以处理数十亿节点/关系/属性的图像,可以扩展到多台机器并行运行。相对于关系数据库来说,图形数据库善于处理大量复杂、互连接、低结构化的数据,这些数据变化迅速,需要频繁的查询——在关系数据库中,这些查询会导致大量的表连接,因此会产生性能上的问题。Neo4j重点解决了拥有大量连接的传统RDBMS在查询时出现的性能衰退问题。通过围绕图形进行数据建模,Neo4j会以相同的速度遍历节点与边,其遍历速度与构成图形的数据量没有任何关系。此外,Neo4j还提供了非常快的图形算法、推荐系统和OLAP风格的分析,而这一切在目前的RDBMS系统中都是无法实现的。

    Neo是一个网络——面向网络的数据库——也就是说,它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络上而不是表中。网络(从数学角度叫做图)是一个灵活的数据结构,可以应用更加敏捷和快速的开发模式。

    你可以把Neo看作是一个高性能的图引擎,该引擎具有成熟和健壮的数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。

    由于使用了“面向网络的数据库”,人们对Neo充满了好奇。在该模型中,以“节点空间”来表达领域数据——相对于传统的模型表、行和列来说,节点空间是很多节点、关系和属性(键值对)构成的网络。关系是第一级对象,可以由属性来注解,而属性则表明了节点交互的上下文。网络模型完美的匹配了本质上就是继承关系的问题域,例如语义Web应用。Neo的创建者发现继承和结构化数据并不适合传统的关系数据库模型:

      1.对象关系的不匹配使得把面向对象的“圆的对象”挤到面向关系的“方的表”中是那么的困难和费劲,而这一切是可以避免的。

      2.关系模型静态、刚性、不灵活的本质使得改变schemas以满足不断变化的业务需求是非常困难的。由于同样的原因,当开发小组想应用敏捷软件开发时,数据库经常拖后腿。

      3.关系模型很不适合表达半结构化的数据——而业界的分析家和研究者都认为半结构化数据是信息管理中的下一个重头戏。

      4.网络是一种非常高效的数据存储结构。人脑是一个巨大的网络,万维网也同样构造成网状,这些都不是巧合。关系模型可以表达面向网络的数据,但是在遍历网络并抽取信息的能力上关系模型是非常弱的。

    虽然Neo是一个比较新的开源项目,但它已经在具有1亿多个节点、关系和属性的产品中得到了应用,并且能满足企业的健壮性和性能的需求:

    完全支持JTA和JTS、2PC分布式ACID事务、可配置的隔离级别和大规模、可测试的事务恢复。这些不仅仅是口头上的承诺:Neo已经应用在高请求的24/7环境下超过3年了。它是成熟、健壮的,完全达到了部署的门槛。

    特性

    Neo4j是一个用Java实现、完全兼容ACID的图形数据库。数据以一种针对图形网络进行过优化的格式保存在磁盘上。Neo4j的内核是一种极快的图形引擎,具有数据库产品期望的所有特性,如恢复、两阶段提交、符合XA等。

    Neo4j既可作为无需任何管理开销的内嵌数据库使用;也可以作为单独的服务器使用,在这种使用场景下,它提供了广泛使用的REST接口,能够方便地集成到基于PHP、.NET和JavaScript的环境里。但本文的重点主要在于讨论Neo4j的直接使用。

    Neo4j的典型数据特征:

    •数据结构不是必须的,甚至可以完全没有,这可以简化模式变更和延迟数据迁移。

    •可以方便建模常见的复杂领域数据集,如CMS里的访问控制可被建模成细粒度的访问控制表,类对象数据库的用例、TripleStores以及其他例子。

    •典型使用的领域如语义网和RDF、LinkedData、GIS、基因分析、社交网络数据建模、深度推荐算法以及其他领域。

    围绕内核,Neo4j提供了一组可选的组件。其中有支持通过元模型构造图形结构、SAIL - 一种SparQL兼容的RDF TripleStore实现或一组公共图形算法的实现。

    高性能?

    要给出确切的性能基准数据很难,因为它们跟底层的硬件、使用的数据集和其他因素关联很大。自适应规模的Neo4j无需任何额外的工作便可以处理包含数十亿节点、关系和属性的图。它的读性能可以很轻松地实现每毫秒(大约每秒1-2百万遍历步骤)遍历2000关系,这完全是事务性的,每个线程都有热缓存。使用最短路径计算,Neo4j在处理包含数千个节点的小型图时,甚至比MySQL快1000倍,随着图规模的增加,差距也越来越大。

    这其中的原因在于,在Neo4j里,图遍历执行的速度是常数,跟图的规模大小无关。不象在RDBMS里常见的联结操作那样,这里不涉及降低性能的集合操作。Neo4j以一种延迟风格遍历图 - 节点和关系只有在结果迭代器需要访问它们的时候才会被遍历并返回,对于大规模深度遍历而言,这极大地提高了性能。

    写速度跟文件系统的查找时间和硬件有很大关系。Ext3文件系统和SSD磁盘是不错的组合,这会导致每秒大约100,000写事务操作。

    官方网站

    http://neo4j.org/

    15、BaseX

    介绍

    BaseX 是一个XML数据库,用来存储紧缩的XML数据,提供了高效的 XPath 和 XQuery 的实现,还包括一个前端操作界面。

    特性

    BaseX一个比较显著地优点是有了GUI,界面中有查询窗口,可采用XQuery查询相关数据库中的XML文件;也有能够动态展示xml文件层次和节点关系的图。但我感觉也就这点好处了,编程时和GUI无关了。

    和Xindice相比,BaseX更能支持大型XML文档的存储,而Xindice对大型xml没有很好的支持,为管理中小型文档的集合而设计。

    BaseX 是一个XML数据库,用来存储紧缩的XML数据,提供了高效的 XPath 和 XQuery 的实现,还包括一个前端操作界面。


    转载地址:https://blog.csdn.net/fishmai/article/details/51699161

    展开全文
  • 系统的可扩展性是推动NoSQL运动发展的的主要理由,包含了分布式系统协调,故障转移,资源管理和许多其他特性。尽管NoSQL运动并没有给分布式数据处理带来根本性的技术变革,但是依然引发了铺天盖地的关于各种协议和...
  • NOSQL数据库习题

    千次阅读 多人点赞 2021-11-14 17:42:24
    第一章、初识NoSQL 一、填空题 1.大数据时代对数据存储的挑战包括高并发读写需求、__高效率存储和访问需求_______、高扩展性。...5.NoSQL数据库主要有四大类型,_键值对存储数据库__、文档存储数据库、__列式存储

    第一章、初识NoSQL

    一、填空题

    1.大数据时代对数据存储的挑战包括高并发读写需求、__高效率存储和访问需求_______、高扩展性。

    2._NoSQL___是Not Only SQL的缩写,它的含义为“不仅仅是SQL”。

    3.NoSQL是一种_非关系型____、分布式、不遵循ACID、_不提供SQL___功能的数据库。

    4.NoSQL理论的基础是由_CAP原则_、BASE理论以及_最终一致性__奠定的。

    5.NoSQL数据库主要有四大类型,_键值对存储数据库__、文档存储数据库、__列式存储数据库__及图形存储数据库。

    二、判断题

    1.NoSQL是关系型数据库。                                                                  ( × )

    2.非关系型数据库采用的是动态结构存储数据。                                  ( √ )

    3.CAP原则包括一致性、可用性和分区容错性这三大要素。             ( √ )

    4.CAP理论的核心思想是即使无法保证系统的强一致性。                 ( × )

    5.数据的一致性可根据强度分为强一致性和弱一致性两种。                   ( √ )

    三、选择题

    1.下列数据库中,哪个是最简单的NoSQL数据库?(A )

           A.键值对存储数据库

           B.文档存储数据库

           C.列式存储数据库

           D.图形存储数据库

    2.下列说法中,关于文档存储数据库说法正确的是?(C)

           A.文档存储数据库是文档管理系统

           B.文档存储数据库是用于存储和管理文档,其中文档是非结构化的数据

           C.文档存储数据库存储的文档可以是不同结构的

           D.文档存储数据库主要应用于会话存储和购物车等场景

    3.下列选项中,哪个属于列式存储数据库?(D )

           A.MongoDB

           B.Redis

           C.Neo4j

           D.HBase

    四、简答题

    1.简述CAP原则的选择策略与应用场景。

    选择策略

    应用场景

    CA(一致性和可用性)

    Oracle、SQL Server以及MySQL等

    CP(一致性和分区容错性)

    MongoDB、HBase以及Redis等

    AP(可用性和分区容错性)

    CouchDB、Cassandra以及DynaomDB等

    2.简述NoSQL数据库的四种类型。

    1. 键值对存储数据库

    键值对存储数据库是最简单的NoSQL数据库,其中的数据是以键值对的形式来存储的,键值对存储数据库的结构实际上是一个映射,即键是查找每条数据的唯一标识,值是该数据实际存储的内容,键值对存储数据库结构式是用哈希函数来实现键到值的映射。

    1. 文档存储数据库

    文档存储数据库不是文档管理系统,是用于存储和管理文档,其中文档是结构化的数据,文档存储数据库存储的文档可以是不同结构的,主要应用于内容管理应用程序和电子商务应用程序等场景。

    1. 列式存储数据库

    列式存储数据库是以列为单位存储数据,然后将列值顺序的存入数据库中,这种数据存储方法不同于行式存储的传统关系数据库。列式存储数据库可以高效地存储数据,也可以快速的处理针对批量数据的实时查询。

    1. 图形存储数据库

    图形存储数据库不是网络数据库,主要应用图形理论来存储实体之间的关系信息,其中实体被视为图形中的节点,关系被视为图形的边,边按照关系将节点进行连接。

    第二章、 文档存储数据库MongoDB

    一、填空题

    1.当前NoSQL数据库产品中最热门的一种数据库是_MongoDB_______。

    2.MongoDB是由_C++______语言编写的。

    3.MongoDB是一个_面向集合_、模式自由的文档型数据库。

    4.MongoDB的设计采用_水平扩展__,可通过分片将数据分布在集群机器中。

    5.MongoDB的逻辑结构是__体系结构__的一种形式

    二、判断题

    1.在MongoDB中,数据库存储着集合和数据表。                                 ( × )

    2.MongoDB默认提供admin、local、config以及test数据库。             ( √ )

    3.集合就是MongoDB的一组文档,分为一般集合和下限集合。          ( × )

    4.文档中不能有重复的键,每个文档都有一个默认的_id键。            ( √ )

    5.MongoDB支持3种数字类型(32位整数(Int32)、64位整数(Int64)和64位浮点数(Double))。                                                                                       ( √ )

    三、选择题

    1.下列数据库中,哪个数据库不是MongoDB默认提供的?(B )

           A.admin数据库

           B.user数据库

           C.config数据库

           D.test数据库

    2.下列说法中,关于MongoDB文档说法正确的是?(D )

           A.MongoDB单个文档大小上限为64MB

           B.文档的值只可以是字符串类型

           C.文档中可以有重复的键

           D.不建议自定义_id键

    3.下列选项中,哪个属于MongoDB支持的数据类型?(ABD )

           A.String

           B.Code

           C.Enum

           D.Null

    四、简答题

    简述MongoDB数据库的优势。

    MongoDB具有易用性、高性能、高可用性、易扩展性和支持多存储引擎的特点。

    1. 易用性:MongoDB面向文档的数据库不在有行的概念,取而代之的是更为灵活的“文档模型”,通过在文档中嵌入文档和数组的方式,在一条记录中表现复杂的层级关系,且MongoDB没有预定义模式,文档的键和值无须定义固定的类型和大小,这使得添加或删除字段变得更为容易。
    2. 高性能:MongoDB数据库对文档进行了动态填充,对数据文件进行了预分配,用空间来保证性能的稳定性,MongoDB的优化器会标记处查询效率最高的方式,以便生成高效的查询计划。
    3. 高可用性:MongoDB副本所组成的一个集群,成为副本集,它提供了自动故障朱阿姨和数据冗余功能,以防数据丢失,从而提高数据的可用性。
    4. 易扩展性:MongoDB的设计采用水平扩展,可通过分片将数据分布在集群机器中,能够自动处理跨集群的数据和负载,自动重新分配文档,并将用户的请求路由到正确的机器上。
    5. 支持多种存储引擎:MongoDB支持多个存储引擎。
    展开全文
  • 常见的 NoSQL 数据库包括键值数据库、列族数据库、文档数据库和图形数据库
  • 主要介绍了深入解析NoSQL数据库的分布式算法,需要的朋友可以参考下
  • 成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。 区别: MongoDB还有一个最大的缺点,就是它占用的空间很大,在MongoDB中频繁的进行数据增...
  • NoSQL数据库——Hbase

    2022-05-29 12:16:30
    NoSQL数据库——Hbase 1、什么叫做NoSQL数据库? NoSQL是非关系型数据库的统称,它采用类似键/值、列族、文档等非关系模型。 2、已经有了使用这莫方便的MySQL等关系型数据库,为什莫还需要NoSQL数据库NoSQL数据库...
  • NoSQL Database Systems什么是NoSQL数据库系统?为什么使用NoSQL?NoSQL数据库系统的属性半结构化的、无模式的数据模型专业分布模型弱一致性Relaxing durabilityVersioningReferences 什么是NoSQL数据库系统? NoSQL...
  • NOSql数据库笔记

    2015-08-08 17:14:37
    nosql 数据库技术笔记,简谈。感觉很好,跟大家分享一下。
  • {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户的数据库应用系统进行性能和风险评估,参与配合进行...
  • NoSQL数据库,NoSQLNot Only SQL,意即“仅仅是数据库”,是一项全新的数据库理念,其为解决海量数据的存储、并发访问以及拓展而产生,具有**数据模型灵活、并发访问度高、易于扩展和伸缩、开发效率高以及开发成本...
  • NoSQL数据库概述

    2022-07-04 09:37:20
    数据库概述: 存储和管理数据作为计算机应用的重要基础,其发展经历了三个阶段:手工管理、文件管理和数据库管理。使用数据库来管理数据,使得大型计算机的广泛应用成为可能。数据库技术历经半个多世纪的发展,已经...
  • 1.关系数据库的优点与缺点分别有哪些? 1、易于维护:都是使用表结构,格式一致; 2、使用方便: SQL 语言通用,可用于复杂查询; 3、复杂操作:支持 SQL ,可用于一个表以及多个表之间非常复杂的查询 缺点:1、读写...
  • MongoDB等NoSQL数据库背后蕴涵的哲学是不同的平台应该使用不同类型的数据库,MongoDB通过降低一些特性来达到性能的提高,这在很多大型站点中是可行的。因为MongoDB是非原子性的,所以如果如果应用需要事务,还是需要...
  • 【数据库】NoSQL数据库简介

    千次阅读 2022-01-21 00:08:26
    NoSQL数据库 NoSQL数据库与传统的SQL数据库不同,SQL数据库是按行存储数据的,而NoSQL数据库按数据存储结构分以下四类: 类型 其中的扛把子 键值数据库 Redis 列族数据库 Hbase 图数据库 neo4j 文档数据库 MongoDB ...
  • 第七章-NoSQL数据库

    千次阅读 2020-08-13 15:09:42
    第七章-NoSQL数据库 文章目录第七章-NoSQL数据库NoSQL简介NoSQL VS. 关系数据库NoSQL的四大类型键值数据库列族数据库文档数据库图形数据库不同类型数据库比较NoSQL的三大基石CAPBASE最终一致性NewSQL数据库 NoSQL...
  • NoSQL数据库与关系型数据库的比较

    千次阅读 2019-02-25 17:51:34
    1、传统关系型数据的优缺点 优势: 1)保持数据的一致性; 2)由于以标准SQL为前提,数据更新的开销...3)适合字段固定时的应用; 4)在数据量很大时,存在对简单查询需要快速返回结果的处理慢的情况。  ...
  • 1、NoSQL数据库的特点 ①灵活的可拓展性:NoSQL数据库在设计之初就是为了满足“横向扩展”的需求。 ②灵活的数据模型:NoSQL数据库采用键/值、列族等非关系模型,允许在一个数据元素里存储不同类型的数据。 ③与...
  • NOSQL 数据库

    2022-06-29 12:28:32
     NoSQL(NoSQL = Not Only SQL),意即“仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。  随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web...
  • NoSQL数据库单元测验参考

    千次阅读 2020-03-18 18:08:03
    下列关于NoSQL数据库和关系型数据库的比较,正确的是 2单选 以下对各类数据库的理解错误的是 3单选 下列数据库属于文档数据库的是 4单选 NoSQL数据库的三大理论基石包括 5多选 关于NoSQL数据库和关系数据库...
  • 什么是NoSQL数据库

    2014-07-21 23:24:20
    它们属于NoSQL数据库,但与key-value存储相异。 定义表结构 面向文档的数据库具有以下特征:即使定义表结构,也可以像定义了表结构一样使用。关系型数据库在变更表结构时比较费事,而且为了保持一致性还需修改...
  • 关系数据库和NoSQL数据库操作实践 旨在让学生了解关系数据库、键值数据库、列族数据库和文档数据库的基本操作,比较同样的数据库操作在不同类型的数据库产品中的实现方法,体会其中的异同点,从而加深对关系数据库和...
  • 高性能存储和访问需求: 随着动态交互网站Web2.0的兴起,产生的数据爆发式增长,面对海量的数据传统的数据库的效率非常低,对于非关系型数据库是基于键值对的,数据处理过程需要经过SQL层的解析,效率相对很高。...
  • 常用的数据库有哪些?redis用过吗? 常见的主流数据库(DBMS):https://blog.csdn.net/gengkui9897/article/details/89294936 关系型数据库 MySQL数据库 Microsoft SQL Server数据库 Oracle数据库 Postgresql...
  • 这里写目录标题1 常见的NoSQL数据库1.1 什么是NoSQL数据库?not only sql1.2 常见的NoSQL2 Hbase体系架构和表结构2.1 Hadoop的生态圈组件2.2 Hbase体系架构2.3 Hbase表结构 手动反爬虫,禁止转载:原博地址 ...
  • NoSQL数据库入门概述

    万次阅读 2016-08-27 13:59:55
    NoSQL数据库入门概述、包括Memcached、Redis、Tokyo Tyrant等NoSQL数据库的简单了解

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,462
精华内容 10,984
关键字:

以下不属于nosql数据库的是