首页 » Web前端 » rethinkdbphp技巧_RethinkDB用于实时应用的 NoSQL 数据库

rethinkdbphp技巧_RethinkDB用于实时应用的 NoSQL 数据库

访客 2024-11-19 0

扫一扫用手机浏览

文章目录 [+]

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

RethinkDB采纳了一种全新的办法来创建数据库构造,以及存储和检索信息的技能。
RethinkDB是实时、开源、分布式、面向文档的数据库,旨在以可操作的格式存储JSON数据,并分片和复制。
它将JSON数据实时推送至做事器,全体重新定义了实时的web运用程序开拓。
它实现了一种名为ReQL的专有的,基于函数的查询措辞,以与它无模式的JSON数据凑集进行交互。
就像MongoDB,RethinkDB中的文档是分层的,动态类型和无模式的工具。

rethinkdbphp技巧_RethinkDB用于实时应用的 NoSQL 数据库

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

rethinkdbphp技巧_RethinkDB用于实时应用的 NoSQL 数据库
(图片来自网络侵删)

RethinkDB架构

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

客户端驱动程序:RethinkDB为各种盛行的编程措辞供应客户端驱动程序,如Ruby、Python、Java等。
查询引擎:这个数据库有一个高等查询处理程序来实行各种各样的查询实行,并将结果返回给用户。
它基于各种操作实行查询,如索引、排序、群集搜索和数据合并。
集群:由于RethinkDB是一个分布式数据库,以是全体发行版是通过集群来管理的——分片或复制。
将变动推到RethinkDB客户端:这是RethinkDB中最主要的观点。
RethinkDB并不是通过轮询方法来查看数据库中的变革,而是将旧的和新的值的变革推送到连接的客户端。
与数据库做事器实时连接的客户端可以看到做事器上的实时变革。
查询实行:RethinkDB可能是实行各种繁芜打算和内部逻辑操作的最佳办法。
为了处理查询,RethinkDB将查询划分为堆栈。
每一个堆栈都包含各种方法和实行操作的内部逻辑。
为了优化查询相应,栈被传输到干系的做事器,每个做事器都并行实行评估。
然后,查询被组合在一起以得到结果集,并将其发回给客户端。

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

在RethinkDB中的分片过程

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

分片过程可以通过两种办法进行。

垂直分区:用户将数据存储在不同的表中,并且在不同的数据库中利用不同的文档。
水平分区:动态算法(即在打算的根本上,利用范围碎片算法来确定表的断点,并将数据存储在不同的切分中。

RethinkDB的特性

变更提要:RethinkDB是一个专门为实时运用而设计的数据库。
通过利用变更提要,开拓职员可以有效地对数据库进行编程,以便实时地将最新的数据提要推送到运用程序中。
这种“变动提要”功能战胜了轮询的局限性,由于数据库在响运用户查询时减少了韶光和繁芜性,并可以实时支持Web运用程序。
可伸缩性:RethinkDB为用户供应了高灵巧性和改进的存储空间。
做事器的处理能力可以通过向集群添加更多的做事器来实现实时扩展。
强大的ReQL——一种查询措辞:ReQL是一种数据驱动、抽象和高等措辞来构建运用程序。
它被设计成一个成熟的API来改变和组合各种各样的查询。
发送到做事器的所有查询都是在数据库做事器上自动并行的,并在多个数据中央之间进行分割。
开拓职员友好:RethinkDB非常适宜开拓职员,并且将大略的措辞和大略的控件结合在一起。
通过RethinkDB,开拓职员可以构建实时运用程序,由于与用户相应的交互速率更快。
面向文档的构造:它是一个从头构建的文档数据库。
对付开拓职员来说,在数据库中处理某些工具可能会非常麻烦,由于诸如数据映射之类的问题可能会涌现。
通过RethinkDB,这些问题通过用一种更灵巧的模型来代替行观点来办理,由于文档是工具。
分布式连接:大多数NoSQL数据库不支持联结,由于后者不在数据模型功能下,而是作为数据访问的函数。
RethinkDB完备支持连接,并自动将它们编译成分布式程序,在集群中实行它们,而不须要客户进行任何手动干预。

ReQL先容

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

嵌入到编程措辞中:所有的查询都是通过在编程措辞中利用函数调用来开拓的。
对付数据库查询,绝对没有必要连接字符串或布局专门的JSON工具。
所有的查询都是可链的:用户可以从一个表开始,并利用“.”来增加链转换器直到查询操作结束。
查询在做事器上实行:查询是由客户端在各自的机器上进行的,但是一旦用户按下Run命令,查询就会通过主动网络连接通过客户端机器通报给做事器,并且在数据库上实行全体查询。

ReQL的特性

效率:与其他数据库系统一样,ReQL支持各种紧张和次要索引,以便有效地访问数据。
用户可以在任意的ReQL表达式的根本上创建复合索引,以加快查询过程。
并行查询实行:每个用户查询都分布在CPU、做事器集群或多个数据中央的不同核心。
RethinkDB和ReQL将查询分为几个阶段,并并行实行每个阶段;完成查询之后,所有数据集都被组合起来,从而为用户供应终极结果。
查询优化:ReQL作为一个查询优化器足够强大,可以掩护链和备选实行操持,以提高数据库的整体性能。
其他特性:ReQL构建任意繁芜度的查询,没有用于实行繁芜查询的新类型的语法或命令,在创建子查询和处理用户相应时许可模块化编程。

数据类型

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

基本数据类型RethinkDB特定的数据类型抽象数据类型几何数据类型

基本数据类型

数字:任何实数,比如89、4。
561、-76,等等字符串:任何有效的UTF-8字符串,如“alphabet”布尔值:True / false工具:JSON数据工具数组:类似数据类型的元素,比如[1 2 3],[red orange mango]

特定的数据类型

数据库:RethinkDB数据库表:RethinkDB数据库表流:这些列表数据类型,如数组Selections:表的子集伪类型:不同类型的ReQL-特有数据类型,它们常日是复合的,或者是其他类型的分外情形,比如二进制工具、韶光、几何数据类型、分组数据

抽象数据类型

基准:用于大多数非流数据类型,包括基本数据类型、伪类型、工具和非流选择序列:这些列表数据类型,如数组、流、Selections和表函数:这些都作为参数通报给各种ReQL命令

几何数据类型

点行多边形

RethinkDB vs. MongoDB

对付那些构建实时运用程序的开拓职员来说,RethinkDB被认为是一个不错的选择。
当用户发出要求时,运用程序须要以靠近瞬时的速率作出相应。
与MongoDB一样,RethinkDB是一种快速灵巧的基于JSON的数据库管理系统。

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

本文由:雪落无痕xdj, lnovonl, Tocy帮忙翻译,本文中的所有译文仅用于学习和互换目的,如果有陵犯到您的权柄,请及时联系我们。

相关文章