转自: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。
- #安装MongoDB
- mkdir /data/lib
- #开启 server
- .../bin/mongod #这个时候数据就存储在了/data/db那
- #开启命令行shell
- ..../bin/mongo
- >show dbs
- >show collections
- #删除collection(删除表)
- >db.person.drop()
- #通过命令行shell关闭mongod server
- >use admin
- >db.shutdownServer()
译者注:其实启动mongod可以用 -f conf.txt这种模式启动,启动的参数放到conf.txt中比如
-
#配置启动参数conf.txt
-
dbpath=....my_work_space/mongodb01/dbs
-
logpath=...my_work_space/mongodb01/logs/mongod.log
-
bind_ip=127.0.0.1
-
directoryperdb=true
-
port=10001
-
-
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()
-
-
来源:oschina
链接:https://my.oschina.net/u/1445522/blog/395378