成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

設計實例對比:MySQL vs MongoDB

數據庫 MySQL 其他數據庫 MongoDB
MySQL是關系型數據庫中的明星,MongoDB是文檔型數據庫中的翹楚。下面通過一個設計實例對比一下二者。

MySQL是關系型數據庫中的明星,MongoDB是文檔型數據庫中的翹楚。下面通過一個設計實例對比一下二者:假設我們正在維護一個手機產品庫,里面除了包含手機的名稱,品牌等基本信息,還包含了待機時間,外觀設計等參數信息,應該如何存取數據呢?

如果使用MySQL的話,應該如何存取數據呢?

如果使用MySQL話,手機的基本信息單獨是一個表,另外由于不同手機的參數信息差異很大,所以還需要一個參數表來單獨保存。

  1. CREATE TABLE IF NOT EXISTS `mobiles` ( 
  2.     `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
  3.     `nameVARCHAR(100) NOT NULL
  4.     `brand` VARCHAR(100) NOT NULL
  5.     PRIMARY KEY (`id`) 
  6. ); 
  7. CREATE TABLE IF NOT EXISTS `mobile_params` ( 
  8.     `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
  9.     `mobile_id` int(10) unsigned NOT NULL
  10.     `namevarchar(100) NOT NULL
  11.     `value` varchar(100) NOT NULL
  12.     PRIMARY KEY (`id`) 
  13. ); 
  14. INSERT INTO `mobiles` (`id`, `name`, `brand`) VALUES 
  15. (1, 'ME525''摩托羅拉'), 
  16. (2, 'E7'   , '諾基亞'); 
  17. INSERT INTO `mobile_params` (`id`, `mobile_id`, `name`, `value`) VALUES 
  18. (1, 1, '待機時間''200'), 
  19. (2, 1, '外觀設計''直板'), 
  20. (3, 2, '待機時間''500'), 
  21. (4, 2, '外觀設計''滑蓋');   

注:為了演示方便,沒有嚴格遵守關系型數據庫的范式設計。

如果想查詢待機時間大于100小時,并且外觀設計是直板的手機,需要按照如下方式查詢:

  1. SELECT * FROM `mobile_params` WHERE name = '待機時間' AND value > 100; 
  2. SELECT * FROM `mobile_params` WHERE name = '外觀設計' AND value = '直板';  

注:參數表為了方便,把數值和字符串統一保存成字符串,實際使用時,MySQL允許在字符串類型的字段上進行數值類型的查詢,只是需要進行類型轉換,多少會影響一點性能。 www.yzyedu.com

兩條SQL的結果取交集得到想要的MOBILE_ID,再到mobiles表查詢即可:

  1. SELECT * FROM `mobiles` WHERE mobile_id IN (MOBILE_ID)  

如果使用MongoDB的話,應該如何存取數據呢?

如果使用MongoDB的話,雖然理論上可以采用和MySQL一樣的設計方案,但那樣的話就顯得無趣了,沒有發揮出MongoDB作為文檔型數據庫的優點,實際上使用MongoDB的話,和MySQL相比,形象一點來說,可以合二為一:

  1. db.getCollection("mobiles").ensureIndex({ 
  2.     "params.name": 1, 
  3.     "params.value": 1 
  4. }); 
  5. db.getCollection("mobiles").insert({ 
  6.     "_id": 1, 
  7.     "name""ME525"
  8.     "brand""摩托羅拉"
  9.     "params": [ 
  10.         {"name""待機時間""value": 200}, 
  11.         {"name""外觀設計""value""直板"
  12.     ] 
  13. }); 
  14. db.getCollection("mobiles").insert({ 
  15.     "_id": 2, 
  16.     "name""E7"
  17.     "brand""諾基亞"
  18.     "params": [ www.yzjxsp.com 
  19.         {"name""待機時間""value": 500}, 
  20.         {"name""外觀設計""value""滑蓋"
  21.     ] 
  22. });  

如果想查詢待機時間大于100小時,并且外觀設計是直板的手機,需要按照如下方式查詢:

  1. db.getCollection("mobiles").find({ 
  2.     "params": { 
  3.         $all: [ 
  4.             {$elemMatch: {"name""待機時間""value": {$gt: 100}}}, 
  5.             {$elemMatch: {"name""外觀設計""value""直板"}} 
  6.         ] 
  7.     } 
  8. }); 

注:查詢中用到的$all,$elemMatch等高級用法的詳細介紹請參考官方文檔中相關說明。

MySQL需要多個表,多次查詢才能搞定的問題,MongoDB只需要一個表,一次查詢就能搞定,對比完成,相對MySQL而言,MongoDB顯得更勝一籌。

【編輯推薦】

  1. 教你如何利用MySQL學習MongoDB
  2. Craigslist采用MongoDB替代MySQL
  3. MySQL中的NoSQL插件
  4. SQL與NoSQL——MySQL與NoSQL的融合

 

責任編輯:艾婧 來源: haosola的博客
相關推薦

2011-08-02 16:08:52

NoSQLMongoDBCassandra

2012-09-07 10:09:54

MySQLMongoDB云計算

2021-12-01 10:18:08

MongoDBMySQL數據庫

2014-04-17 10:56:40

優化策略MySQL緩存

2018-01-10 15:03:27

前端TypeScriptJavaScript

2019-08-30 08:54:05

TypeScriptJavaScript語言

2021-12-06 20:39:34

AI

2012-03-15 00:06:56

Ubuntu Unity GNOME

2022-08-27 21:31:04

Tauri框架二進制

2025-01-08 08:30:38

2009-12-14 17:04:32

VS 2008專業版

2009-12-16 15:49:58

VS 2008性能

2023-06-12 08:00:00

聊天機器人ChatGPT人工智能

2023-09-07 14:59:42

物聯網MQTTCoAP

2024-10-09 11:31:51

2011-03-21 15:08:56

MongoDBCouchDB

2011-06-29 14:01:30

多數據庫實例效率

2011-08-19 09:06:17

Ubuntu 11.0Windows 7Mac OS X 10

2017-11-14 18:54:43

MySQLMongoDBNoSQL

2013-05-20 09:32:06

VDI軟件Citrix XenDVMware View
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日本久久 | 久久久久国产精品一区 | 黄色一级大片在线免费看产 | 精品国产乱码久久久 | 中文在线www | 欧美精品一区二区三区在线 | 久久亚洲综合 | 色婷婷综合久久久久中文一区二区 | 欧美午夜精品 | 精品国产欧美一区二区 | 久久久tv | 国产精品视频免费观看 | 欧美午夜精品久久久久久浪潮 | 在线视频一区二区三区 | 久在线 | 毛片一级片 | 国产日韩欧美一区 | 免费精品 | 亚洲 日本 欧美 中文幕 | www.狠狠干 | 一级看片免费视频囗交动图 | 中文字幕成人av | 九九天堂网| 国产一区欧美 | 久久久天天| 91精品国产综合久久精品 | 国产高清视频 | 在线观看视频一区 | 日韩精品色网 | 粉色午夜视频 | 亚洲一区二区三区免费视频 | 一区二区在线观看免费视频 | 国产亚韩 | 久久精品视频网站 | 亚洲欧美视频一区二区 | 精品一区二区在线观看 | 久久婷婷av | 91最新在线视频 | 日韩久久综合 | 国产免费又色又爽又黄在线观看 | 日本午夜一区二区三区 |