NoSQL第一篇——初次見面MongoDB
還是在2008年的時候,“F5”同學就和我提起過key-value的問題。當時我沒有太明白,只朦朧的覺得好像在說快取
最近有開發又和我提起了,我必須得關注下,否則我就out了,呵呵呵
馬上搜了下,目前吵的最熱的是由10gen開發維護的MongDB資料庫,隨機down了體會下
答案是輕巧,速度快
下面就說一下我們初次見面的感受:
維護了一段時間的MySQL了,難免拿他們倆對比下,先上個直觀的效果作為參考
MySQL——
mysql> select * from t;
+------+--------+------+
| id | name | age |
+------+--------+------+
| 1 | 張三 | 30 |
| 2 | 李四 | 25 |
| 3 | 王五 | 12 |
| 4 | 趙六 | 57 |
+------+--------+------+
4 rows in set (0.00 sec)
MongDB——
{ "_id" : ObjectId("4cbfdaabab5abedbd22f0bc3"), "name" : "mongodb" }
{ "_id" : ObjectId("4cbfdaabab5abedbd22f0bc3"), "x" : 3 }
{ "_id" : ObjectId("4cbfdce3ab5abedbd22f0bc4"), "x" : 4, "j" : 1 }
{ "_id" : ObjectId("4cbfdce3ab5abedbd22f0bc5"), "x" : 4, "j" : 2 }
{ "_id" : ObjectId("4cc10b58dbf9242801dfacae"), "author" : "joe", "created" : "Sat Mar 28 2009 00:00:00 GMT+0800 (CST)", "title" : "Yet another blog post", "text" : "Here is the text...", "tags" : [ "example", "joe" ], "comments" : [
{
"author" : "jim",
"comment" : "I disagree"
},
{
"author" : "nancy",
"comment" : "Good post"
}
] }
下面在幾個基礎方面的東西做下對比:
1.儲存的區別
MySQL——表資料以記錄為單位,每條記錄以N個欄位列屬性組成,每條記錄有相同的欄位屬性
MongDB——文件資料以陣列為單位,每條記錄以N維陣列組成,每個陣列鍵值數不一定相同
2.命令工具的區別
MySQL——mysql-xxx/bin/下的mysql命令和perl工具有39個,在這就不列舉了
MongDB——mongodb-linux-xxx/bin/下的工具只有11個,下面這些二進位制命令從命名就可初步瞭解他們的作用,具體用法請參考官網指南
bsondump
mongo
mongod
mongodump
mongoexport
mongofiles
mongoimport
mongorestore
mongos
mongosniff
mongostat
3.命令列的區別
MySQL——在"mysql>"提示符下insert,update,delete,select,create,drop,alter,show...
MongDB——在">"提示符下db.dbname.save(),db.dbname.insert(),db.dbname.update,db.dbname.remove(),db.dbname.find(),show...
我們可以看出,MongDB都是使用函式呼叫的方式操作文件的;熟悉Memcached的同學看到find()方法的使用會覺得很熟悉,where 條件語句是透過在find()函式中指定的,order by,limit是透過find()函式的sort()和limit()函式處理的
後面管理的章節我還沒有看呢,有興趣的同學請重定向到^_^
另外MongoDB也支援主從Master-Slave架構和有限的雙主Master-Master架構,不過目前只支援2個節點間的相互監聽,等我嘗試了再寫...
總結下,網上看了些資料大多是拿MongDB和MySQL做比較的,前面我也是。其實這兩個資料庫並非一個必須替代掉另一個,在接觸了MongoDB後感覺它不一定適應所有業務,應該是某種特殊業務更能體現出他的價值
所以,雖然國外一些網站已經陸續遷移到MongoDB,我們卻不一定著急動手,技術還不是很成熟,會有哪些不穩定因素還有待觀察考證。未來一段時間 內估計會是這兩者合作的天下,徹底拋棄MySQL或者Oracle是不理智的,我們現在要做的是逐漸過渡到MySQL+MongDB,發揮他們的最大功效
一點心得,希望大家多多指教
還是在2008年的時候,“F5”同學就和我提起過key-value的問題。當時我沒有太明白,只朦朧的覺得好像在說快取
最近有開發又和我提起了,我必須得關注下,否則我就out了,呵呵呵
馬上搜了下,目前吵的最熱的是由10gen開發維護的MongDB資料庫,隨機down了體會下
答案是輕巧,速度快
下面就說一下我們初次見面的感受:
維護了一段時間的MySQL了,難免拿他們倆對比下,先上個直觀的效果作為參考
MySQL——
mysql> select * from t;
+------+--------+------+
| id | name | age |
+------+--------+------+
| 1 | 張三 | 30 |
| 2 | 李四 | 25 |
| 3 | 王五 | 12 |
| 4 | 趙六 | 57 |
+------+--------+------+
4 rows in set (0.00 sec)
MongDB——
{ "_id" : ObjectId("4cbfdaabab5abedbd22f0bc3"), "name" : "mongodb" }
{ "_id" : ObjectId("4cbfdaabab5abedbd22f0bc3"), "x" : 3 }
{ "_id" : ObjectId("4cbfdce3ab5abedbd22f0bc4"), "x" : 4, "j" : 1 }
{ "_id" : ObjectId("4cbfdce3ab5abedbd22f0bc5"), "x" : 4, "j" : 2 }
{ "_id" : ObjectId("4cc10b58dbf9242801dfacae"), "author" : "joe", "created" : "Sat Mar 28 2009 00:00:00 GMT+0800 (CST)", "title" : "Yet another blog post", "text" : "Here is the text...", "tags" : [ "example", "joe" ], "comments" : [
{
"author" : "jim",
"comment" : "I disagree"
},
{
"author" : "nancy",
"comment" : "Good post"
}
] }
下面在幾個基礎方面的東西做下對比:
1.儲存的區別
MySQL——表資料以記錄為單位,每條記錄以N個欄位列屬性組成,每條記錄有相同的欄位屬性
MongDB——文件資料以陣列為單位,每條記錄以N維陣列組成,每個陣列鍵值數不一定相同
2.命令工具的區別
MySQL——mysql-xxx/bin/下的mysql命令和perl工具有39個,在這就不列舉了
MongDB——mongodb-linux-xxx/bin/下的工具只有11個,下面這些二進位制命令從命名就可初步瞭解他們的作用,具體用法請參考官網指南
bsondump
mongo
mongod
mongodump
mongoexport
mongofiles
mongoimport
mongorestore
mongos
mongosniff
mongostat
3.命令列的區別
MySQL——在"mysql>"提示符下insert,update,delete,select,create,drop,alter,show...
MongDB——在">"提示符下db.dbname.save(),db.dbname.insert(),db.dbname.update,db.dbname.remove(),db.dbname.find(),show...
我們可以看出,MongDB都是使用函式呼叫的方式操作文件的;熟悉Memcached的同學看到find()方法的使用會覺得很熟悉,where 條件語句是透過在find()函式中指定的,order by,limit是透過find()函式的sort()和limit()函式處理的
後面管理的章節我還沒有看呢,有興趣的同學請重定向到^_^
另外MongoDB也支援主從Master-Slave架構和有限的雙主Master-Master架構,不過目前只支援2個節點間的相互監聽,等我嘗試了再寫...
總結下,網上看了些資料大多是拿MongDB和MySQL做比較的,前面我也是。其實這兩個資料庫並非一個必須替代掉另一個,在接觸了MongoDB後感覺它不一定適應所有業務,應該是某種特殊業務更能體現出他的價值
所以,雖然國外一些網站已經陸續遷移到MongoDB,我們卻不一定著急動手,技術還不是很成熟,會有哪些不穩定因素還有待觀察考證。未來 一段時間內估計會是這兩者合作的天下,徹底拋棄MySQL或者Oracle是不理智的,我們現在要做的是逐漸過渡到MySQL+MongDB,發揮他們的 最大功效
一點心得,希望大家多多指教
come from:http://mckobe23.itpub.net/category/29123/66613
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/90618/viewspace-686961/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker初次見面Docker
- Linux初次見面Linux
- NoSQL學習——MongoDBSQLMongoDB
- Android Retrofit 2.0(一)初次見面請多多關照Android
- NoSQL(MongoDB,Riak,CouchDB,Redis)SQLMongoDBRedis
- Amazing Algorithms with NoSQL: A MongoDB ExampleSQLMongoDB
- mongodb dba常用的nosql語句MongoDBSQL
- The SQL vs NoSQL Difference: MySQL vs MongoDBMySqlMongoDB
- Spring Boot 使用NoSQL之 MongoDBSpring BootSQLMongoDB
- mongoDB初探第一篇MongoDB
- D3視覺化:(1)初次見面,SVG與D3的魅力視覺化SVG
- MongoDB DBA常用的NoSQL語句(全)MongoDBSQL
- Amazing Algorithms with NoSQL: A MongoDB Example Part 2SQLMongoDB
- 初次全部用js來寫頁面JS
- Nosql 資料庫 MemCache、Redis、MongoDB 的區別SQL資料庫RedisMongoDB
- 韓語學習筆記(2)初次會面筆記
- 28個MongoDB NoSQL資料庫的面試問答MongoDBSQL資料庫面試
- MongoDB、Hbase、Redis等NoSQL優劣勢、應用場景MongoDBRedisSQL
- MongoDB、Cassandra 和 HBase 三種 NoSQL 資料庫比較MongoDBSQL資料庫
- 分散式NoSQL資料庫MongoDB初體驗-v5.0.5分散式SQL資料庫MongoDB
- NoSQL高階培訓課程-HBase&&MongoDB(兩天版)SQLMongoDB
- 關聯式資料庫和NoSQL結合使用:MySQL + MongoDB資料庫MySqlMongoDB
- 行業迎來初次盤整,團購面臨多重考驗行業
- NoSQL 資料庫案例實戰 -- MongoDB資料備份、恢復SQL資料庫MongoDB
- 淺談常見的NoSQL技術方案和選型SQL
- MySQL在Web應用領域面臨NoSQL的挑戰MySqlWeb
- Flutter初次探索Flutter
- 初次使用UbuntuUbuntu
- 初次邂逅 EasyExcelExcel
- websocket初次使用Web
- NoSQLSQL
- 常見頁面佈局
- 技術分享|SQL和 NoSQL資料庫之間的差異:MySQL(VS)MongoDB資料庫MySqlMongoDB
- Spring Boot實戰系列(2)資料儲存之NoSQL資料庫MongoDBSpring BootSQL資料庫MongoDB
- 初次接觸 CookieCookie
- 【IdentityServer】初次相遇IDEServer
- 初次入坑 ReactReact
- 初次使用Microsoft AzureROS