热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RethinkDB在Ubuntu12.04.4上的安装试用

最近一个项目要用到文档数据库,顺便查了一下NoSQL方面的资料。当前几个比较流行的文档数据库引擎有MongoDB,CouchDB,Couchbase,OrientDB等,朋友推荐的是MongoDB和RethinkDB,和MongoDB类似RethinkDB是一个主要用来存储JSON文档的数据库引擎(MongoDB存储的是BSON),可以轻松和多个节点连成分布式

最近一个项目要用到文档数据库,顺便查了一下 NoSQL 方面的资料。当前几个比较流行的文档数据库引擎有 MongoDB, CouchDB, Couchbase, OrientDB 等,朋友推荐的是 MongoDB 和 RethinkDB,和 MongoDB 类似 RethinkDB 是一个主要用来存储 JSON 文档的数据库引擎(MongoDB 存储的是 BSON),可以轻松和多个节点连成分布式数据库,非常好用的查询语言以及支持表的 joins 和 group by 操作等。

昨天试用了一下 RethinkDB,在一台虚拟机上测试,插入2500万行记录性能表现很一般,远没有 MongoDB 和 Couchbase 快,不过还算稳定,维持在 1.5K 行到 2K 行每秒之间,RethinkDB 的数据分片(sharding)功能非常简单,一个点击就可以完成。下面的安装和测试在 Ubuntu 12.04.4 LTS Server 版本上完成。

加入 RethinkDB 官方源后安装:

$ sudo apt-get install python-software-properties

$ sudo add-apt-repository ppa:rethinkdb/ppa

$ sudo apt-get update
$ sudo apt-get install rethinkdb

拷贝一个例子配置文件后修改 bind 部分以便可以从其他机器访问:

$ cd /etc/rethinkdb/
$ sudo cp default.conf.sample instances.d/default.conf

$ sudo vi instances.d/default.conf
...
# bind=127.0.0.1
bind=0.0.0.0
...

启动 rethinkdb:

$ sudo /etc/init.d/rethinkdb start
rethinkdb: default: Starting instance. (logging to `/var/lib/rethinkdb/default/data/log_file')

访问 http://192.168.2.39:8080/ 就可以看到 rethinkdb 的管理界面了:

RethinkDB

如果不喜欢在命令行工作,web 界面还提供了 Data Explorer 在线查询工具,支持语法高亮、在线函数提示等,不用额外查帮助文件。

RethinkDB

要用程序的方式和 rethinkdb 打交道的话就需要安装客户端驱动(client drivers),官方支持的驱动有 Javascript, Ruby 和 Python 3种语言,社区支持的驱动几乎包括了 C, Go, C++, Java, PHP, Perl, Clojure, Erlang 等所有主流编程语言。本人用 Python 多一些,所以这里安装 Python 客户端驱动:

$ sudo apt-get install python-pip
$ sudo pip install rethinkdb

测试一下驱动是否能工作了,如果 import rethinkdb 没有出错基本就可以说明模块安装成功:

$ python
Python 2.7.3 (default, Feb 27 2014, 19:58:35)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import rethinkdb
>>>

gene2go.txt 是一个含有基因数据的文本文件,大概1000多万行记录,格式如下:

$ head -2 gene2go.txt
#Format: tax_id GeneID GO_ID Evidence Qualifier GO_term PubMed Category (tab is used as a separator, pound sign - start of a comment)
3702	814629	GO:0005634	ISM	-	nucleus	-	Component

写个简单程序把 gene2go.txt 的数据导入到 rethinkdb 里:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, os.path, sys, re, csv, string

def csv2db():
    data = csv.reader(open('gene2go.txt', 'rb'), delimiter='\t')
    data.next()

    import rethinkdb as r
    r.connect('localhost', 28015).repl()
    r.db('test').table_create('gene2go').run()
    gene2go = r.db('test').table('gene2go')
    for row in data:
        gene2go.insert({
            'tax_id': row[0],
            'GeneID': row[1],
            'GO_ID': row[2],
            'Evidence': row[3],
            'Qualifier': row[4],
            'GO_term': row[5],
            'PubMed': row[6],
            'Category': row[7]
        }).run(durability="soft", noreply=True)

def main():
    csv2db()

if __name__ == "__main__":
    main()

RethinkDB 的详细介绍:请点这里
RethinkDB 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-08/121784.htm


推荐阅读
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • 导读:在编程的世界里,语言纷繁多样,而大部分真正广泛流行的语言并不是那些学术界的产物,而是在通过自由发挥设计出来的。和那些 ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
  • 【转】腾讯分析系统架构解析
    TA(TencentAnalytics,腾讯分析)是一款面向第三方站长的免费网站分析系统,在数据稳定性、及时性方面广受站长好评,其秒级的实时数据更新频率也获得业界的认可。本文将从实 ... [详细]
  • 让你明白kvm是什么
    参考:https:blog.csdn.netbbwangjarticledetails80465320KVM工具集合:libvirt:操作和管理KVM虚机的虚拟化API ... [详细]
  • ruby 输出彩色内容到控制台
    程序输出控制台时,为了区分输出信息的严重程度,可以使用颜色、符号等来做标识。ruby也支持设置输出内容的颜色,比如运行以下代码:以下内容是百度到的,因发现很多博客都是同样的写法,所 ... [详细]
  • 《Python3 网络爬虫开发实战》:高效实用的 MongoDB 文档存储
    NoSQL,全称NotOnlySQL,意为不仅仅是SQL,泛指非关系型数据库。NoSQL是基于键值对的,而且不需要经过SQL ... [详细]
  • Python开源库和第三方包的常用框架及库
    本文介绍了Python开源库和第三方包中常用的框架和库,包括Django、CubicWeb等。同时还整理了GitHub中最受欢迎的15个Python开源框架,涵盖了事件I/O、OLAP、Web开发、高性能网络通信、测试和爬虫等领域。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 只使用’if-else’语句的’else’部分是否可以接受?有时,我觉得检查所有条件是否都是真的更容易,但是只处理“其他”情况。我想 ... [详细]
author-avatar
Ag冫g彡ie琪琪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有