RethinkDB是什么?

RethinkDB是新一代的面向文档的数据库存储管理系统,原本是MySQL中针对SSD优化的一个存储引擎,后来脱离了MySQL成为了独立的系统。

数据如何存储在磁盘上?

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

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

RethinkDB最早是作为一个对SSD进行专门优化的MySQL存储引擎出现的,其特点在于对SSD的充分利用。而目前RethinkDB已经脱离MySQL成为一个独立的存储。RethinkDB是自底向上为实时网页设计的第一个开源的、分布式的、可扩展的数据库,具有强大的集群和自动故障转移功能。传统数据库使用的是一种查询——响应数据库访问模式。RethinkDB 在网络上工作的很好主要是因为它直接映射到 HTTP 的请求响应上面。

RethinkDB是第一个数据库使用了一种令人激动的新的数据库的访问模型,而不是轮询数据库更改,开发者可以命令RethinkDB实时的向应用连续推送更新查询结果。这使得搭建现代、实时的应用程序十分方便:开发者可以得到一个可扩展的实时Web应用程序的App,并在用一小部分时间运行的同时使用更少的工程资源。

Cloud Native Computing基金会称,RethinkDB数据库被数以百计的创业公司、咨询公司和财富五百强企业使用,其中包括NASA、GM、Jive、Platzi、美国国防部、Distractify和 Matters Media。

讨论二:RethinkDB还是MongoDB?

  • 网友FlukyS:RethinkDB有超强的伸缩性,它可以处理PB级数据。不过,依据配置,这会导致可用性上做出些妥协,但是在我看来,用户有者很大的掌控权。一致性是RethinkDB考虑最弱的一点。RethinkDB的超级赞的是很易用。我只在开发阶段使用RethinkDB,因为后来公司决定采用MongoDB。
  • 网友read_eat_or:可否问下你们(FlukyS)为什么放弃了RethinkDB,而选择了MongoDB?
  • 网友FlukyS:坦率地说并不是我做的决定,我只是做了初期的测试,最后由经历决定。我认为可能是因为团队对MongoDB更熟悉吧,这是好几年前的决定,如果现在再来一次结果或许会不同。不管是使用RethinkDB还是MongDB,我们只是保存日志数据而已,并没有用于存放市场商用的数据。我们是读操作远多于写操作。

    有一种观点是,RethinkDB是败给了MongoDB,那么或许你还可以再读读MongoDB的相关内容。

其官方介绍如下:

RethinkDB pushes JSON to your apps in realtime.

When your app polls for data, it becomes slow, unscalable, and cumbersome to maintain.

RethinkDB is the open-source, scalable database that makes building realtime apps dramatically easier.

What is RethinkDB?go

r.table('game').orderBy('score').limit(3).changes()

TOP PLAYER SCORES

  • connor: 81 points
  • marc: 79 points
  • mike: 73 points
  • samantha: 73 points
  • samantha: 64 points

STREAMING RETHINKDB RESULTS...

  • {'player': 'joe',​ 'score': 12}
  • {'player': 'eileen',​ 'score': 50}
  • {'player': 'marc',​ 'score': 79}
  • {'player': 'connor',​ 'score': 81}
  • {'player': 'brandon',​ 'score': 36}
  • {'player': 'grant',​ 'score': 29}
  • {'player': 'trevor',​ 'score': 63}
  • {'player': 'samantha',​ 'score': 73}
  • {'player': 'jessica',​ 'score': 12}

代码:

var pubnub = require("pubnub");
var r = require("rethinkdb");var pn = pubnub({subscribe_key: "xxxxxxxxxxxxxxx",publish_key: "xxxxxxxxxxxxxxx",secret_key: "xxxxxxxxxxxxxxx"
});// Connect to a local RethinkDB database
r.connect().then(function(conn) {// Attach a changefeed to the `updates` tablereturn r.table("updates").changes()("new_val").run(conn);
})
.then(function(changes) {// For each change emitted by the changefeed...changes.each(function(err, item) {// Publish the change through PubNub
    pn.publish({channel: "updates", message: item,error: function(err) {console.log("Failed to send message:" , err);}});});
});

参考:https://rethinkdb.com/blog/rethinkdb-pubnub/

转载于:https://www.cnblogs.com/bonelee/p/6392528.html

RethinkDB是什么?—— 面向文档的NOSQL数据库,MVCC+Btree索引,pushes JSON to your apps in realtime采用push思路,优化的ssd存储...相关推荐

  1. 面向文档的NoSQL数据库MongoDB

    NoSQL优势 全称:Not Only SQL 不仅仅是数据库 海量的扩展能力 读写高性能 与关系型数据库(RDBMS)相辅相成 NoSQL产品 键值存储型(Key-Value) Redis/Codi ...

  2. 盘点11个面向文档的开源NoSQL数据库

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

  3. MongoDB-概述:跨平台的面向文档的高性能高可用性易扩展数据库

    Table of Contents MongoDB-概述 数据库 采集 文件 样本文件 MongoDB教程 MongoDB-优势 MongoDB与RDBMS相比的优势 为什么要使用MongoDB? 在 ...

  4. 论文解读丨LayoutLM: 面向文档理解的文本与版面预训练

    摘要:LayoutLM模型利用大规模无标注文档数据集进行文本与版面的联合预训练,在多个下游的文档理解任务上取得了领先的结果. 本文分享自华为云社区<论文解读系列二十五:LayoutLM: 面向文 ...

  5. MongoDB实战读书笔记(二):面向文档的数据

    1 schema设计原则 1.1 关系型数据库的三大设计范式 第一范式(1NF)无重复的列 第二范式(2NF)属性完全依赖于主键 [ 消除部分子函数依赖 ] 第三范式(3NF)属性不依赖于其它非主属性 ...

  6. 用python将word文档导入数据库_python读取word文档,插入mysql数据库的示例代码

    表格内容如下: 1.实现批量导入word文档,取文档标题中的数字作为编号 2.除取上面打钩的内容需要匹配出来入库入库,其他内容全部直接入库mysql # wuyanfeng # -*- coding: ...

  7. 软件工程文档中的数据库模型设计

    背景:软件工程文档之<数据库设计说明书>的结构设计部分要明确规划出数据库的概念结构设计.逻辑结构设计.物理结构设计,就是设计数据库的概念模型.逻辑模型.物理模型,那么,何为数据库的概念模型 ...

  8. linux文本文件导入数据库,Linux系统下如何将txt文档导入到数据库mysql的方法教程...

    前段时间做小项目的时候遇到了一个需求:把txt文档的数据导入到mysql数据库中,开始本来想直接用Mysql Workbench导入TXT文件,但是最后发现不支持TXT导入,结果我吧嗒吧嗒的去把TXT ...

  9. mysql导出设计文档_Mysql导出数据库设计文档

    在word中,利用ODBC驱动源,OFFICE宏来控制报表输出 作者博客地址: 下载工具 工具下载: 链接: 提取码:mhtd 根据Mysql数据库的版本下载想用的驱动源 也可去官网下载: 双击安装O ...

最新文章

  1. access vba 常量数组赋值_VBA数组是什么?有何作用?别担心,你只需用1分钟就明白它是什么...
  2. 决策树Decision Tree
  3. HDU - 3551 Hard Problem(一般图最大匹配)
  4. 机器学习入门02-朴素贝叶斯原理和java实现
  5. 计算机科学与技术考研课程安排,计算机科学与技术(0812)硕士研究生培养方案(一)...
  6. 从王者荣耀里我学会的前端新手指引
  7. linux内核分析与应用 -- 并发(上)
  8. 虚拟机安装Linux,设置固态ip,静态ip地址,docker安装
  9. 手机日志抓取工具及注意事项
  10. Google 因果推断的CausalImpact 贝叶斯结构时间序列模型(二十二)
  11. python中counter怎么用_带你走进python 计数器类Counter的用法
  12. 海马模拟器怎么连接android studio
  13. html css径向渐变,如何实现css3径向渐变如何定义中心和大小形状
  14. python中max函数的用法解析
  15. python网络爬虫(第八章:图像识别与文字处理)
  16. 关于freemarker(网上收集资料)
  17. 【Marva Collins' Way】第一章
  18. 高龄白菜java学习第109天(java数据结构和算法(27))
  19. 不同主体的微信小程序相互跳转
  20. html5用一张图片铺满屏幕,html5绘图铺满整个屏幕

热门文章

  1. MySQL和Linux试题_Linux运维必会的MySql题之(一)
  2. 我的理想计算机系100字,我的理想作文100字(通用5篇)
  3. mysql mydumper_采用mydumper对MySQL部分数据库进行热备
  4. lin通讯从节点同步间隔场_低成本总线技术——LIN总线协议规范介绍
  5. elasticsearch组件的安装启动,测试等(windows)
  6. 做了5年Java,java读写锁使用
  7. 【机器学习入门到精通系列】机器学习系统设计(Precision Recall)
  8. ORACLE not available如何解决
  9. bindservice启动服务
  10. 二叉树求深度的递归的详细分析