關係型資料庫和Nosql

2022-09-10 14:27:16 字數 1592 閱讀 5255

nosql和關聯式資料庫結合

mysql+memcached的架構中,我們處處都要精心設計我們的快取,包括過期時間的設計、快取的實時性設計、快取記憶體大小評估、快取命中率等等。

nosql資料庫一般都具有非常高的效能,在大多數場景下面,你不必再考慮在**層為nosql構建一層memcached快取。nosql資料本身在cache上已經做了相當多的優化工作。

memcached這類記憶體快取伺服器快取的資料大小受限於記憶體大小,如果用nosql來代替memcached來快取資料庫的話,就可以不再受限於記憶體大小。雖然可能有少量的磁碟io讀寫,可能比memcached慢一點,但是完全可以用來快取資料庫的查詢操作。

4. nosql 與 sql 的區別

sql 資料庫

在使用之前需要定義表的乙個模式

在表中儲存相關聯的資料

支援 join 多表查詢

提供事務

使用乙個強宣告性語言查詢

提供足夠的支援,專業技能和工具

nosql 資料庫

將相關聯的資料儲存在類似 json 格式,名稱-值

可以儲存沒有指定格式的資料

保證更新乙個文件 – 但不是多個文件

提供出色的效能和可伸縮性

使用 json 資料物件查詢

a 儲存方式

sql資料存在特定結構的表中;

而nosql則更加靈活和可擴充套件,儲存方式可以是json文件、雜湊表或者其他方式。

b 表/集合資料的關係

sql中,必須定義好錶和字段結構後才能新增資料,例如定義表的主鍵(primary key),索引(index),觸發器(trigger),儲存過程(stored procedure)等。表結構可以在被定義之後更新,但是如果有比較大的結構變更的話就會變得比較複雜。

在nosql中,資料可以在任何時候任何地方新增,不需要先定義表。

nosql也可以在資料集中建立索引。以mongodb為例,會自動在資料集合建立後建立唯一值_id欄位,這樣的話就可以在資料集建立後增加索引。從這點來看,nosql可能更加適合初始化資料還不明確或者未定的專案中。

b 外部資料儲存

sql中如果需要增加外部關聯資料的話,規範化做法是在原表中增加乙個外來鍵,關聯外部資料表。

nosql中除了這種規範化的外部資料表做法以外,我們還能用如下的非規範化方式把外部資料直接放到原資料集中,以提高查詢效率。缺點也比較明顯,更新審核人資料的時候將會比較麻煩。

c sql中的join查詢

sql中可以使用join表鏈結方式將多個關係資料表中的資料用一條簡單的查詢語句查詢出來。

nosql未提供對多個資料集中的資料做查詢。

d 資料耦合性

sql中不允許刪除已經被使用的外部資料,例如審核人表中的"熊三"已經被分配給了借閱人熊大,那麼在審核人表中將不允許刪除熊三這條資料,以保證資料完整性。

而nosql中則沒有這種強耦合的概念,可以隨時刪除任何資料。

關係型資料庫和NOsql

關聯式資料庫,是建立在 關係模型 基礎上的資料庫,借助於集合代數等數學概念和方法來處理資料庫中的資料。現實世界中的各種實體以及實體之間的各種聯絡均用關係模型來表示。關係模型是由埃德加 科德於1970年首先提出的,並配合 科德十二定律 現如今雖然對此模型有一些批評意見,但它還是資料儲存的傳統標準。標準...

關係型資料庫和nosql非關係型資料庫

關係型資料庫目前主流 oracle,mysql,sql server,db2等 非關聯式資料庫包括 mongodb,nosql,cloudant 關係型資料庫的優勢 1.複雜查詢可以用sql語句方便的在乙個表以及多個表之間做非常複雜的資料查詢。2.事務支援使得對於安全效能很高的資料訪問要求得以實現。...

關係型資料庫和NoSQL資料庫

大家有沒有聽說過 nosql 呢?近年,這個詞極受關注。看到 nosql 這個詞,大家可能會誤以為是 no!sql 的縮寫,並深感憤怒 sql怎麼會沒有必要了 呢?但實際上,它是 not only sql 的縮寫。它的意義是 適用關係型資料庫的時候就使用關係型資料庫,不適用的時候也沒有必要非使用關係...