[翻译]MongoDb 架构(MongoDb Architecture)

微笑、不失礼 提交于 2019-12-04 21:05:54

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

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

上周五,我非常幸运的在一个技术会议上见到了10gen的Jared Rosoff。我们俩对于MongoDB的技术架构做了一些探讨,我觉得我们聊得东西挺有价值的,所以在这里贴出来分享给大家。

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


  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中比如


  
  
  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相对于关系型数据库的主要不同点如下:

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

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

查询处理

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


  
  
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!