[翻譯]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() 數據庫

相關文章
相關標籤/搜索