• home > DB > NotOnlySQL >

    RethinkDB简介——NoSQL从先锋到先辈

    Author:zhoulujun Date:

    因为开源开发人员工具市场是可能最糟糕的市场之一。成千上万的人使用 RethinkDB,通常是在商业环境中,但大多数人愿意为使用期限支付的费用低于一杯星巴克咖啡的价格(也就是说,他们根本不愿意支付任何费用)。

    RethinkDB是自底向上为实时网页设计的第一个开源的、分布式的、可扩展的数据库,具有强大的集群和自动故障转移功能。传统数据库使用的是一种查询——响应数据库访问模式。RethinkDB 在网络上工作的很好主要是因为它直接映射到 HTTP 的请求响应上面。

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

    数据如何存储在磁盘上?

    数据组织成B-Tree,且使用为rethinkdb定制的log-structured形式的存储引擎存储在磁盘上,这个存储引擎灵感来自BTRFS。这个存储引擎相比其他的存储引擎有很多优势,包括增量的且完全并发的垃圾压缩,低CPU开销和有效的多核操作,一些SSD优化,同时当电源故障后立即恢复,当故障时保证完全的数据一致性,支持MVCC这个存储引擎结合定制的,B-Tree可感知的缓存引擎一起使用,这个缓存引擎允许文件的大小比可用内存的大小多很多数量级。rethinkdb可工作在10GB内存的和1TB的数据上。

    详情见:http://bokan.me/2016/05/10/rethinkdb-architecture/

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

    第一代 NoSQL 产品大致可以分成两类——面向开发者的和面向运维的。

    • 面向开发者的产品包括 MongoDB 和 CouchDB。他们通常关注易用性,拥有富文档结构,以及灵活的查询功能。然而,当与他们的同行(面向运维的NoSQL)相比时,将他们部署到分片环境和规模大的负载要更加困难。

    • 面向运维的产品包括 Cassandra 和 Riak 。这些产品是为了高可用部署和大规模而设计的。不像面向开发者的产品,以目前的形式面向运维的产品通常较少有强大的查询功能,也不会太关注易用性。

    得益于前车之鉴以及三年的技术工作,RethinkDB 旨在融合两者的理念,提供一个两全其美的产品。它被设计成非常易用,拥有丰富的数据模型,并且支持及其灵活的查询功能。

    RethinkDB成立于2009年。RethinkDB的第一个版本是一个针对MySQL的ssd优化存储引擎。然后他们转而构建一个类似MongoDB的文档DBMS。

    当前RethinkDB DBMS体系结构的第一个版本发布于2012年11月。第一个版本支持JSON数据模型、即时一致性支持、hadoop风格的map/reduce、共享、多数据中心复制和故障转移。2013年6月,RethinkDB为ReQL引入了一些新特性,如基本访问控制、正则表达式匹配、数组操作和随机抽样

    RethinkDB在2012年的2.0版本是第一个“生产就绪”版本。2015年8月,它使用基于raft的协议支持自动故障转移。2015年11月,RethinkDB引入了原子changefeed,它将数据库中的现有值包含到changefeed结果中,然后原子地转换到流更新。

    2016年10月5日,RethinkDB联合创始人Slava Akhmechet在官网上宣布RethinkDB破产倒闭。Slava Akhmechet称其已经尽了最大的努力,最终还是无法建立一个可持续的商业模式——你在你的用户认为你所在的市场。我们的用户清楚地认为我们是一家开源开发工具公司,因为这才是我们真正的目标。事实证明这是非常不幸的,因为开源开发人员工具市场是可能最糟糕的市场之一。成千上万的人使用 RethinkDB,通常是在商业环境中,但大多数人愿意为使用期限支付的费用低于一杯星巴克咖啡的价格(也就是说,他们根本不愿意支付任何费用

    一年后,源代码被云本地计算基金会(Cloud Native Computing Foundation——是一个非营利性开源组织,通过创建一套新的通用技术推动本地云技术和服务的发展。CNCF的成员包括思科、Docker、Google、CoreOS、Intel、IBM、RedHat、三星和Mesosphere)购买,并于2017年7月重新发布给开源社区。

    RethinkDB虽然去年宣布破产倒闭,但是项目仍然得以存活,并且情况良好:RethinkDB项目仍然继续积极开发,并没有因破产而中断。用户可以继续在生产环境中使用RethinkDB。RethinkDB的官网、GitHub项目和社交媒体账户也如常运营。今天,在Linux基金会的支持下,该项目从此有了强大的制度支持及接受捐赠的能力。

    通过几下点击就能将 RethinkDB 的节点进行分片。

    • ReQL 是一个数据驱动的,抽象的,多态查询语言。它很容易学习并且极其灵活。

    • 为主流编程语言(目前有 Python,Ruby,Java 和 JavaScript)提供了定制的、高度集成的 DSL。

    • 不同于大多数的 NoSQL 系统,RethinkDB 支持服务端 subqueries 和分布式 join 操作,这消除了复杂的客户端代码和多个数据库服务器的往返。

    • ReQL 并不基于字符串解析,所以被注入攻击的风险大大降低。

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

    When is RethinkDB a good choice?

    RethinkDB is a great choice when your applications could benefit from realtime feeds to your data.

    The query-response database access model works well on the web because it maps directly to HTTP’s request-response. However, modern applications require sending data directly to the client in realtime. Use cases where companies benefited from RethinkDB’s realtime push architecture include:

    • Collaborative web and mobile apps

    • Streaming analytics apps

    • Multiplayer games

    • Realtime marketplaces

    • Connected devices

    但是,我是有多远躲多远,但是还是要向  RethinkDB 致敬的!


    参考文章:

    [译]RethinkDB compared to MongoDB https://zhuanlan.zhihu.com/p/20534658

    https://rethinkdb.com/faq/#when-is-rethinkdb-not-a-good-choice

    RethinkDB:用于实时应用的 NoSQL 数据库 https://www.oschina.net/translate/rethinkdb-a-nosql-database-for-real-time-applications

    NoSQL先驱RethinkDB倒掉后,借此来看开源新型数据库NewSQL的未来 https://forum.huawei.com/enterprise/zh/thread/580908037944786945

    RethinkDB:为什么我们失败了 https://juejin.cn/post/7087836545733885989




    转载本站文章《RethinkDB简介——NoSQL从先锋到先辈》,
    请注明出处:https://www.zhoulujun.cn/html/DB/NotOnlySQL/8982.html