RethinkDB:用于实时应用的 NoSQL 数据库 已翻译 100%

oschina 投递于 2018/08/27 16:21 (共 9 段, 翻译完成于 08-30)
阅读 4034
收藏 9
2
加载中

RethinkDB比传统数据库更快并实时工作。它是开源、分布式、面向文档的数据库,被设计来以可操作格式存储JSON文档,并能分片与复制。

传统的数据库管理系统具有类似的结构,并共享插入、删除、更改和查询信息的常规方法。然而基于NoSQL的数据库,提供给开发者满足特定数据存储要求的多种选择。新的可扩展性功能革新了这些数据库,尽管大多数NoSQL 系统仍依赖于创建一个统一组织记录数据的特定结构。基于NoSQL的系统访问模型在读取信息,添加数据记录和获取信息时,并不适用于现代Web应用程序;正好相反的是,用户只需通过指定一些重要值就能查询数据库。

lnovonl
翻译于 2018/08/27 18:32
0

RethinkDB采取了一种全新的方式来创建数据库结构,以及存储和检索信息的技术。RethinkDB是实时、开源、分布式、面向文档的数据库,旨在以可操作的格式存储JSON数据,并分片和复制。它将JSON数据实时推送至服务器,整个重新定义了实时的web应用程序开发。它实现了一种名为ReQL的专有的,基于函数的查询语言,以与它无模式的JSON数据集合进行交互。就像MongoDB,RethinkDB中的文档是分层的,动态类型和无模式的对象。

RethinkDB使用主要基于Oracle二进制树文件系统(BTFRS)的定制存储引擎,许诺具有多种显著优势,例如CPU开销更少,SSD的优化,电源故障恢复,MVCC支持和高效的多核操作以及发生故障时的数据一致性。

lnovonl
翻译于 2018/08/27 18:57
0

RethinkDB架构

RethinkDB由不同的组件组成,如集群、查询执行引擎、文件系统存储、推送更改和RethinkDB客户机驱动程序。

  • 客户端驱动程序:RethinkDB为各种流行的编程语言提供客户端驱动程序,如Ruby、Python、Java等。

  • 查询引擎:这个数据库有一个高级查询处理程序来执行各种各样的查询执行,并将结果返回给用户。它基于各种操作执行查询,如索引、排序、群集搜索和数据合并。

  • 集群:由于RethinkDB是一个分布式数据库,所以整个发行版是通过集群来管理的——分片或复制。

  • 将更改推到RethinkDB客户端:这是RethinkDB中最重要的概念。RethinkDB并不是通过轮询方法来查看数据库中的变化,而是将旧的和新的值的变化推送到连接的客户端。与数据库服务器实时连接的客户端可以看到服务器上的实时变化。

  • 查询执行:RethinkDB可能是执行各种复杂计算和内部逻辑操作的最佳方式。为了处理查询,RethinkDB将查询划分为堆栈。每一个堆栈都包含各种方法和执行操作的内部逻辑。为了优化查询响应,栈被传输到相关的服务器,每个服务器都并行执行评估。然后,查询被组合在一起以获得结果集,并将其发回给客户端。

为了提供高性能和并发性,RethinkDB使用多版本并发控制(MVCC)。这样,每个用户都可以看到数据的快照,如果主拷贝中发生了任何变化,那么在主副本提交之前,子副本或快照副本将不会被更新。

翻译于 2018/08/27 22:12
0

在RethinkDB中的分片过程

RethinkDB使用一种高级算法来执行分片操作。分片是在表的主键上完成的,用于数据分区,并且不使用任何其他键。在RethinkDB中,主键和碎片键是相同的。

分片过程可以通过两种方式进行。

  • 垂直分区:用户将数据存储在不同的表中,并且在不同的数据库中使用不同的文档。

  • 水平分区:动态算法(即在计算的基础上,使用范围碎片算法来确定表的断点,并将数据存储在不同的切分中。

翻译于 2018/08/27 22:10
0

RethinkDB的特性

  • 变更提要:RethinkDB是一个专门为实时应用而设计的数据库。通过使用变更提要,开发人员可以有效地对数据库进行编程,以便实时地将最新的数据提要推送到应用程序中。这种“更改提要”功能克服了轮询的局限性,因为数据库在响应用户查询时减少了时间和复杂性,并可以实时支持Web应用程序。

  • 可伸缩性:RethinkDB为用户提供了高灵活性和改进的存储空间。服务器的处理能力可以通过向集群添加更多的服务器来实现实时扩展。

  • 强大的ReQL——一种查询语言:ReQL是一种数据驱动、抽象和高级语言来构建应用程序。它被设计成一个成熟的API来改变和组合各种各样的查询。发送到服务器的所有查询都是在数据库服务器上自动并行的,并在多个数据中心之间进行分割。

  • 开发人员友好:RethinkDB非常适合开发人员,并且将简单的语言和简单的控件结合在一起。通过RethinkDB,开发人员可以构建实时应用程序,因为与用户响应的交互速度更快。

  • 面向文档的结构:它是一个从头构建的文档数据库。对于开发人员来说,在数据库中处理某些对象可能会非常麻烦,因为诸如数据映射之类的问题可能会出现。通过RethinkDB,这些问题通过用一种更灵活的模型来代替行概念来解决,因为文档是对象。

  • 分布式连接:大多数NoSQL数据库不支持联结,因为后者不在数据模型功能下,而是作为数据访问的函数。RethinkDB完全支持连接,并自动将它们编译成分布式程序,在集群中执行它们,而不需要客户进行任何手动干预。

翻译于 2018/08/27 22:08
0

ReQL介绍

ReQL(RethinkDB查询语言)被认为是一种功能强大的查询语言,用于在JSON文档上执行各种操作。与其他NoSQL查询语言相比,ReQL提供了强大的功能,并建立在以下三个关键原则之上。

  • 嵌入到编程语言中:所有的查询都是通过在编程语言中使用函数调用来开发的。对于数据库查询,绝对没有必要连接字符串或构造专门的JSON对象。

  • 所有的查询都是可链的:用户可以从一个表开始,并使用“.”来增加链转换器直到查询操作结束。

  • 查询在服务器上执行:查询是由客户端在各自的机器上进行的,但是一旦用户按下Run命令,查询就会通过主动网络连接通过客户端机器传递给服务器,并且在数据库上执行整个查询。

 

翻译于 2018/08/27 22:05
0

ReQL的特性

  • 效率:与其他数据库系统一样,ReQL支持各种主要和次要索引,以便有效地访问数据。用户可以在任意的ReQL表达式的基础上创建复合索引,以加快查询过程。

  • 并行查询执行:每个用户查询都分布在CPU、服务器集群或多个数据中心的不同核心。RethinkDB和ReQL将查询分为几个阶段,并并行执行每个阶段;完成查询之后,所有数据集都被组合起来,从而为用户提供最终结果。

  • 查询优化:ReQL作为一个查询优化器足够强大,可以维护链和备选执行计划,以提高数据库的整体性能。

  • 其他特性:ReQL构建任意复杂度的查询,没有用于执行复杂查询的新类型的语法或命令,在创建子查询和处理用户响应时允许模块化编程。

翻译于 2018/08/27 22:02
0

数据类型

ReQL数据类型可以分类如下:

  • 基本数据类型

  • RethinkDB特定的数据类型

  • 抽象数据类型

  • 几何数据类型

基本数据类型

  • 数字:任何实数,比如89、4。561、-76,等等

  • 字符串:任何有效的UTF-8字符串,如“alphabet”

  • 布尔值:True / false

  • 对象:JSON数据对象

  • 数组:类似数据类型的元素,比如[1 2 3],[red orange mango]

特定的数据类型

  • 数据库:RethinkDB数据库

  • 表:RethinkDB数据库表

  • 流:这些列表数据类型,如数组

  • Selections:表的子集

  • 伪类型:不同类型的ReQL-特有数据类型,它们通常是复合的,或者是其他类型的特殊情况,比如二进制对象、时间、几何数据类型、分组数据

抽象数据类型

  • 基准:用于大多数非流数据类型,包括基本数据类型、伪类型、对象和非流选择

  • 序列:这些列表数据类型,如数组、流、Selections和表

  • 函数:这些都作为参数传递给各种ReQL命令

几何数据类型

  • 多边形


翻译于 2018/08/27 21:59
0

RethinkDB vs. MongoDB

对于那些构建实时应用程序的开发人员来说,RethinkDB被认为是一个不错的选择。当用户发出请求时,应用程序需要以接近瞬时的速度作出响应。与MongoDB一样,RethinkDB是一种快速灵活的基于JSON的数据库管理系统。

RethinkDB,毫无疑问,是一个很好的数据库引擎,但它在管理和开发方面有一定的局限性。因此,当涉及到与MongoDB相比时RethinkDB的整体评级,后者在几个方面更优(见表2)。

Tocy
翻译于 2018/08/27 17:36
0
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(4)

谁来与我大战三百回合
这个数据库还是很厉害的。至少比mongodb好用的多。
神州浪子
神州浪子
rethinkDB公司都倒闭好久了,现在才发到osc?
返回顶部
顶部