[翻译]MongoDb 架构(MongoDb Architecture)

转自:http://blog.dufei.cc/index.php/archives/25/ php

NOSQL最近成为了一个煊赫一时的话题(做者发表在2012年,话说对于如今来讲,NOSQL已经如火如荼了)。大规模架构的web服务开发中对于高扩展性和半结构化数据的要求推进着数据库往NOSQL方向转变。最近几年已经有了很多NOSQL数据库解决方案。我在过去的blog中(不是个人blog,做者blog挺卡的已经介绍过基于分布式系统理论的NOSQL,同时也介绍了一些挺好的产品,好比CouchDB和CassanDra/HBase。 html

上周五,我很是幸运的在一个技术会议上见到了10gen的Jared Rosoff。咱们俩对于MongoDB的技术架构作了一些探讨,我以为咱们聊得东西挺有价值的,因此在这里贴出来分享给你们。 程序员

首先MongoDb的易用性和底层架构的易懂性让我很是吃惊。下面是一些简单的管理命令--开启和关闭MongoDb server。 web


  1. #安装MongoDB
  2. mkdir /data/lib
  3. #开启 server
  4. .../bin/mongod #这个时候数据就存储在了/data/db那
  5. #开启命令行shell
  6. ..../bin/mongo
  7. >show dbs
  8. >show collections
  9. #删除collection(删除表)
  10. >db.person.drop()
  11. #经过命令行shell关闭mongod server
  12. >use admin
  13. >db.shutdownServer()


译者注:其实启动mongod能够用 -f conf.txt这种模式启动,启动的参数放到conf.txt中好比 sql

 
  1. #配置启动参数conf.txt
  2. dbpath=....my_work_space/mongodb01/dbs
  3. logpath=...my_work_space/mongodb01/logs/mongod.log
  4. bind_ip=127.0.0.1
  5. directoryperdb=true
  6. port=10001
  7. mongodb01/bin/mongod -f conf.txt

相对于关系型数据库的主要不一样点

mongodb相对于关系型数据库的主要不一样点以下: mongodb

  • 不一样与关系型数据库的数据扁平化数据格式(2维的数据格式),mongodb的表(collection)是能够嵌套的,是多维的。也就是说mongodb的表里面能够嵌套子表、数组、哈希表等。
  • 不一样于关系型数据库中存储在表中的数据必须是所有格式统一,mongodb的collection能够插入任意格式的数据。
  • mongodb查询没有join操做。鼓励不墨守成规的组织数据,保持数据一致性的重任交给了程序员。
  • mongodb没有事物(transaction)这一说。原子性只保持在了document(能够理解为一行)级别。也就是说不可能出现更新一行的时候更新不完整的状况。
  • mongodb没有隔离(isolation),client端读取的任何数据都有可能已经被并行的client修改过了。

经过去除掉这些传统关系型数据库支持的特性后,mongodb能够更轻量级、更灵活的完成大数据处理。 shell

查询处理

mongodb属于一种面向文档的数据库。在查询处理模块中,数据被组织成了JSON文档,nd() 数据库

相关文章
相关标签/搜索