針對NoSQL的歷史及特性介紹,比較SQL與NoSQL的差異和各自的適用情境,實作不同種類NoSQL的應用程式。
身為後端工程師,我們開發的系統跟資料庫脫離不了關係,我們可以不用像 DBA 一樣那麼了解資料庫,可基本的觀念總要有。自從關聯式資料庫被普遍應用後,多數後端工程師對它的 Schema 設計、SQL 語法和索引都有基本概念,現在,除了關聯式資料庫外,工程師們有了新的資料庫選擇──NoSQL。新崛起的 NoSQL 是 Not Only SQL 的意思,接下來的30天將會探討 NoSQL 究竟是什麼?它有什麼樣的特性?它會取代關聯式資料庫嗎?它又該如何使用?
現在最常見的關聯式資料庫並不是橫空出世後就廣泛被使用,而是隨著資料管理需求逐漸發展而成,再持續因需求與技術不斷的變化,於是出現了 NoSQL。我們就從資料庫的發...
儘管關聯式資料庫那麼方便好用,但在資料量持續增長、強調高可用性和可擴展性的領域,關聯式資料庫並無法滿足期望。 當應用服務需要消化的請求數量逐漸成長,我們可以把資...
在操作關聯式資料庫通常會有多個步驟,當把步驟打包成一包期望資料庫把這包步驟視為一個行為時,這包步驟就稱為交易(Transaction)。在 RDB 中交易具有...
操作資料庫時,在資料處理的環節正確使用交易可以節省我們很多心力,但為了達到 ACID 同樣需要付出成本。NoSQL Database 選擇有策略的犧牲部分一致性...
前幾天不斷提到取捨、選擇、犧牲、放棄、追求......等行為,到底取什麼捨什麼? 以社群媒體的情境來考慮,用戶會期望可以隨時隨地滑手機看到好友們的新動態。如果暫...
起初,在一台資料庫無法處理所有需求時,於是決定加開一台變成兩台,但兩台主機該如何分工?觀察對資料庫的請求發現請求可以分為兩類:讀取和寫入,那麼一台負責寫而另一台...
Master-Slave 的模式限制在於只有一個 Master 處理寫入請求,那如果每個節點都可以寫入是不是就能克服這個限制?Peer-to-peer 模式裡每...
前面幾篇討論如何透過多台主機突破運算力限制,接著來談談如何切分資料存放在多台主機。資料太多怎麼辦?切!切分方式分成水平和垂直兩種,垂直切分 (vertical...
水平切分的其中一種方式:依資料範圍進行分片。這種方式很直覺,以會員資料為例,將會員依名字首字字母、生日、Id,甚至星座進行分片,再將分片分別存放在不同主機中。因...
另一種也很直覺的切方方式是 Round-Robin Sharding,簡單來說就是輪流分配,假設有三台主機,將資料輪流分配到第一、二和三號主機上;若有五台主機,...