RethinkDB是什么?—— 面向文档的NOSQL数据库,MVCC+Btree索引,pushes JSON to your apps in realtime采用push思路,优化的ssd存储
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.
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` table
return 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/
RethinkDB是什么?—— 面向文档的NOSQL数据库,MVCC+Btree索引,pushes JSON to your apps in realtime采用push思路,优化的ssd存储的更多相关文章
- 007-elasticsearch5.4.3【一】概述、Elasticsearch 访问方式、Elasticsearch 面向文档、常用概念
一.概述 Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上. Elasticsearch 也是使用 Java 编写的,它的内部使用 L ...
- MongoDB实战读书笔记(二):面向文档的数据
1 schema设计原则 1.1 关系型数据库的三大设计范式 第一范式(1NF)无重复的列 第二范式(2NF)属性完全依赖于主键 [ 消除部分子函数依赖 ] 第三范式(3NF)属性不依赖于其它非主属性 ...
- API文档管理工具-数据库表结构思考.
API文档管理工具-数据库表结构思考. PS: 管理工具只是为了方便自己记录API的一些基本信息,方便不同的开发人员 (App Developer, Restful API Developer)之间的 ...
- springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验--异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档---jpa访问数据库及page进行分页---整合redis---定时任务
springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验-- 异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档 ...
- 软件project文档中的数据库模型设计
背景:软件project文档之<数据库设计说明书>的结构设计部分要明白规划出数据库的概念结构设计.逻辑结构设计.物理结构设计,就是设计数据库的概念模型.逻辑模型.物理模型.那么.何为数据库 ...
- 百度地图点集文档使用python的re模块处理成json的相关写法
这个实在不好起名字.写这个还不是因为被渣度坑的不要不要的.为什么说他坑呢.参考一下这两个截图的txt文档: 文档资源下载地址: http://lbsyun.baidu.com/index.php?t ...
- PHP实例:使用PHPExcel导入Excel2003文档和Excel2007文档到MySQL数据库中
如果要使用phpExcelReader将Excel 数据导入到mysql 数据库,请读者点击这个文章查看. 使用phpExcelReader将Excel 数据导入到mysql 数据库. 下面我们介绍另 ...
- IE使用多彩文档上传数据库报错
使用多彩文档,用IE浏览器提交表单,双引号里面包含单引号,导致数据库插入不了,而用chrome浏览器不会报错,自动过滤单引号, 解决:content.replace("'", &q ...
- 如何把word文档导入到数据库中——java POI
本文方法借鉴于https://www.cnblogs.com/ljysy/p/10574197.html 在经过朋友的指导下,在处理文档的方式上有所不同. 我的数据库使用的是SQL server,这篇 ...
随机推荐
- 通透理解viewport
摘自:https://blog.csdn.net/u014787301/article/details/44466697 在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewpor ...
- 1+x证书学习日志——css常用属性
## css常用属性: 1:文本属性: 文本大小: font-size:18px; 文本颜色 colo ...
- sed 查询特定内容
查询命令对照表 打印/etc/passwd中第10行的内容 sed -n '10p' /etc/passwd 打印/etc/passwd中第8行开始,到第15行结束的内容 sed -n '8,15p' ...
- NSIP
1. 第一章 信息安全概述 信息:信息是有意义的数据,具有一定的价值,是一种适当保护的资产,数据是是客观事务属性的记录,是信息的具体表现形式,数据经过加工处理之后 就是信息,而信息需要经过数字处理转换 ...
- Python基础——__name__变量
转自:https://blog.csdn.net/u011511601/article/details/53504355 Python使用缩进对齐组织代码的执行,所有没有缩进的代码,都会在载入时自动执 ...
- Zookeeper监控平台
JMX: 安装配置 1.修改zookeeper的启动脚本 vi zkServer.sh 找到启动参数ZOOMAIN 修改为下面值(修改一项,新增4项): -Dcom.sun.management ...
- Activity之launchMode理解
对于Activity中的四个lauchMode[standard(默认).singleTop.singleTask.singleInstance]的介绍网上已经有大把的文章了,但是在实际应用开发时,对 ...
- bloomberg bulkfile【一】 文件的分类
文章导航 bloomberg bulkfile [一] 文件的分类 bloomberg bulkfile [二] 文件解析 bloomberg bulkfile [三] 在oracle的存储 订 ...
- SHELL编程基础01
首先shell是在linux下运行的一种环境,它是以shell脚本来运行的,学会了它基本可以解决任何问题,也可以用shell脚本开发. 和java,python的相比,其弱类型的语言没有那么复杂的结构 ...
- python - django (cookie)
# """ Cookile: # 因为 HTTP 请求是没有状态的,每一次请求都是独立的 Cookile 的存储: # 保存在浏览器上的 键值对. # 服务器控制着响应, ...