最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

安装和使用MongoDB

来源:动视网 责编:小采 时间:2020-11-09 13:15:26
文档

安装和使用MongoDB

安装和使用MongoDB:上周玩了一下 RethinkDB 发现一些性能问题,导入2000万个文档后查询起来非常慢,哪怕是最简单的查询也很慢,试着把数据分片到 RethinkDB 集群的多个节点上还是慢。相比之下,其他几个比较成熟的产品 MongoDB, CouchDB, Couchbase 就要快很多。
推荐度:
导读安装和使用MongoDB:上周玩了一下 RethinkDB 发现一些性能问题,导入2000万个文档后查询起来非常慢,哪怕是最简单的查询也很慢,试着把数据分片到 RethinkDB 集群的多个节点上还是慢。相比之下,其他几个比较成熟的产品 MongoDB, CouchDB, Couchbase 就要快很多。

上周玩了一下 RethinkDB 发现一些性能问题,导入2000万个文档后查询起来非常慢,哪怕是最简单的查询也很慢,试着把数据分片到 RethinkDB 集群的多个节点上还是慢。相比之下,其他几个比较成熟的产品 MongoDB, CouchDB, Couchbase 就要快很多。 MongoDB 可能

上周玩了一下 RethinkDB 发现一些性能问题,导入2000万个文档后查询起来非常慢,哪怕是最简单的查询也很慢,试着把数据分片到 RethinkDB 集群的多个节点上还是慢。相比之下,其他几个比较成熟的产品 MongoDB, CouchDB, Couchbase 就要快很多。

MongoDB 可能是当前最流行的 NoSQL 数据库,就不用多介绍了,下面的安装步骤在 Ubuntu Server 12.04.4 LTS (64-bit) 和 CentOS 6.5 Minimal (64-bit) 上完成。

安装 MongoDB 服务器

在 Ubuntu 上安装 GPG key 后添加 mongdb 源,然后安装 mongodb-10gen:

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
$ echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
$ sudo apt-get update
$ sudo apt-get install mongodb-10gen

在 CentOS 上使用 root 账号,添加 mongdb 源,然后安装 mongo-10gen 和 mongo-10gen-server:

$ su
# vi /etc/yum.repos.d/mongodb.repo
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
# yum update
# yum install mongo-10gen mongo-10gen-server
# service mongod restart
# chkconfig mongod on

在 CentOS 上如果用 yum install 安装完 mongodb 发现 /etc/init.d/ 里面没有 mongod 启动脚本的话,需要从 /etc/rc.d/init.d/ 拷贝一个:

# cp /etc/rc.d/init.d/mongod /etc/init.d/
# service mongod restart

检查一下 mongodb 服务是否已经在运行,如果没有的话重启一下 mongodb 服务:

$ ps aux | grep mongod
mongodb 1165 8.2 99.9 25407520 8550164 ? Ssl 04:02 17:10 /usr/bin/mongod --config /etc/mongodb.conf
$ sudo service mongodb restart # 在 ubuntu 上
# service mongod restart # 在 centos 上

如果启动 mongodb 过程报错,查看日志寻找蛛丝马迹:

$ sudo vi /var/log/mongodb/mongodb.log

如果发现日志里有如下错误,可能是因为 /tmp 权限问题,mongd 进程无权限法写 /tmp,chmod 777 就可以了:

...
Tue Mar 18 08:03:55.061 [initandlisten] ERROR: listen(): bind() failed errno:13 Permission denied for socket: /tmp/mongodb-27017.sock
...
# chmod -R 777 /tmp

使用 mongo 客户端

MongoDB 自带的 mongo 客户端程序(相当于 MySQL 的 mysql)可以用来简单的与 mongod 交互:

$ mongo
MongoDB shell version: 2.4.9
connecting to: test
> db
test
> use gene
switched to db gene
> db
gene
> help
...

安装 Python 客户端驱动

我们一般用程序和 MongoDB 交互,MongoDB 支持多种语言的客户端驱动,比如:JavaScript, Python, Ruby, PHP, Perl, C, C++, Java, Scala 等。下面的部分仅是安装 MongoDB 的 Python 驱动,其他语言可以参考官方文档。

在 Ubuntu 上安装 pymongo:

$ sudo apt-get install python-pip
$ sudo apt-get install build-essential python-dev
$ sudo pip install pymongo

在 CentOS 上安装 pymongo:

# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum update
# yum install python-pip
# yum install gcc python-devel
# pip install pymongo

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

$ head -2 gene_info.txt
#Format: tax_id GeneID Symbol LocusTag Synonyms dbXrefs chromosome map_location description type_of_gene Symbol_from_nomenclature_authority Full_name_from_nomenclature_authority Nomenclature_status Other_designations Modification_date (tab is used as a separator, pound sign - start of a comment)
7 5692769 NEWENTRY - - - - - Record to support submission of GeneRIFs for a gene not in Gene (Azorhizobium caulinodans Dreyfus et al. 1988; Azotirhizobium caulinodans. Use when strain, subtype, isolate, etc. is unspecified, or when different from all specified ones in Gene.). other - - - - 20071023

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

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os, os.path, sys, csv, string
def import_to_db():
 data = csv.reader(open('gene_info', 'rb'), delimiter='\t')
 data.next()
 import pymongo
 mongo = pymongo.Connection('127.0.0.1')
 genedb = mongo['gene']
 gene_info = genedb['geneinfo']
 for row in data:
 gene_info.insert({
 'tax_id': row[0],
 'GeneID': row[1],
 'Symbol': row[2],
 'LocusTag': row[3],
 'Synonyms': row[4],
 'dbXrefs': row[5],
 'chromosome': row[6],
 'map_location': row[7],
 'description': row[8],
 'type_of_gene': row[9],
 'Symbol_from_nomenclature_authority': row[10],
 'Full_name_from_nomenclature_authority': row[11],
 'Nomenclature_status': row[12],
 'Other_designations': row[13],
 'Modification_date': row[14]
 })
def main():
 import_to_db()
if __name__ == "__main__":
 main()

文档

安装和使用MongoDB

安装和使用MongoDB:上周玩了一下 RethinkDB 发现一些性能问题,导入2000万个文档后查询起来非常慢,哪怕是最简单的查询也很慢,试着把数据分片到 RethinkDB 集群的多个节点上还是慢。相比之下,其他几个比较成熟的产品 MongoDB, CouchDB, Couchbase 就要快很多。
推荐度:
标签: 一下 使用 安装
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top