mongodb:
1)文檔資料庫
MongoDB的面向文檔採用的是BSON。如 blog的文章和評論,可以做如下設計:
{ 'id':1, 'author':'NinGoo', 'title':'白話MongoDB(一)', 'content':'按照官方的說法,此處省略一萬字', comment:[ { 'comment-author':'宋兵甲', 'comment-content':'有木有' } , { 'comment-author':'尼瑪','comment-content':'傷不起啊' } ]}
像上面的一個結構,為一個文檔(document),相當於關聯式資料庫中的一行記錄,多個文檔組成一個集合(collection),相當於關聯式資料庫的表。
多個集合(collection),邏輯上組織在一起,就是資料庫(database),一個MongoDB執行個體支援多個資料庫(database)。
這種結構導致儲存開銷比較大,1G的資料存放區後達到幾G。
2)b+樹索引
redis:
Redis本質上是一個Key-Value類型的記憶體資料庫,很像memcached,整個資料庫統統載入在記憶體當中進行操作,
定期通過非同步作業把資料庫資料flush到硬碟上進行儲存。因為是純記憶體操作,Redis的效能非常出色,
Redis最大的魅力是支援儲存List鏈表和Set集合的資料結構,而且還支援對List進行各種操作,例如從List兩端push和pop資料,
取 List區間,排序等等,對Set支援各種集合的並集交集操作,此外單個value的最大限制是1GB,
不像memcached只能儲存1MB的資料,Redis可以用來實現很多有用的功能,比方說用他的List來做FIFO雙向鏈表,
實現一個輕量級的高效能訊息佇列服務,用他的Set可以做高效能的tag系統等等。另外Redis也可以對存入的
Key-Value設定expire時間,因此也可以被當作一個功能加強版的memcached來用。
1)key,value資料庫
2)hash索引資料,資料在記憶體操作(支援應用層級vm),支援定期落地功能。