顯示具有 資料庫 標籤的文章。 顯示所有文章
顯示具有 資料庫 標籤的文章。 顯示所有文章

2018年2月28日 星期三

CAP 定理 與 NoSQL




NoSQL是對不同於傳統的關聯式資料庫資料庫管理系統的統稱。

兩者存在許多顯著的不同點,其中最重要的是


  1. NoSQL不使用SQL作為查詢語言
  2. 資料存儲可以不需要固定的表格模式 (Schema)
  3. 經常會避免使用SQL的JOIN操作,一般有水平可延伸性的特徵。

不同於RDMBS 的ACID特點,NoSQL的結構通常提供弱一致性的保證 ,如最終一致性,或交易僅限於單個的資料項。




CAP 定理 與 NoSQL 套件對照表

CAP 定理 可參考下述文件:
CAP theorem (CAP定理), 下述摘錄自此兩篇:
在 理論計算機科學中, CAP定理(CAP theorem), 又被稱作 布魯爾定理(Brewer's theorem), 它指出對於一個 分布式計算系統 來說,不可能同時滿足以下三點:
  • Consistency: 一致性 (所有節點在同一時間具有相同的數據) (all nodes see the same data at the same time)
  • Availability: 可用性 (保證每個請求不管成功或者失敗都有響應) (a guarantee that every request receives a response about whether it was successful or failed)
  • Partition tolerance: 分隔容忍 (系統中任意信息的丟失或失敗不會影響系統的繼續運作) (the system continues to operate despite arbitrary message loss or failure of part of the system)
根據定理,分佈式系統只能滿足三項中的兩項而不可能滿足全部三項。
因為 CAP 三者無法同時達成, 所以 NoSQL 套件目前都是符合其中兩項, 另外一項支援度就會差一點, 下述文章有整理目前 NoSQL 的資料庫, 對應 CAP 定理 的整理.
BASE理論
BASE理論是CAP理論結合實際的產物。 BASE(Basically Available, Soft-state,Eventually consistent) BASE恰好和ACID是相對的,BASE要求犧牲高一致性,獲得可用性或可靠性
References:
https://blog.longwin.com.tw/2013/03/nosql-db-choose-cap-theorem-2013/


https://goo.gl/EcCcj7


https://goo.gl/dcdPPA


2017年10月2日 星期一

RDBMS-ACID



ACID,是指資料庫管理系統DBMS)在寫入或更新資料的過程中,為保證資料交易 transaction是正確可靠的,所必須具備的四個特性:原子性(atomicity,或稱不可分割性)、一致性(consistency)、隔離性(isolation,又稱獨立性)、持久性(durability)。
在資料庫系統中,一個資料交易是指:由一系列資料庫操作組成的一個完整的邏輯過程。例如銀行轉帳,從原帳戶扣除金額,以及向目標帳戶添加金額,這兩個資料庫操作的總和,構成一個完整的邏輯過程,不可拆分。這個過程被稱為一個事務,具有ACID特性。ACID的概念在ISO/IEC 10026-1:1992文件的第四段內有所說明。


  • 原子性:一個transaction中的所有操作,要麼全部完成,要麼全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。
  • 一致性:在transaction開始之前和事務結束以後,資料庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預設規則,這包含資料的精確度、串聯性以及後續資料庫可以自發性地完成預定的工作。
  • 隔離性:資料庫允許多個transaction同時對其數據進行讀寫和修改的能力,隔離性可以防止多個transaction 同時執行時而導致數據的不一致。
  • 持久性:transaction處理結束後,對數據的修改就是永久的,即便系統故障也不會丟失。


RDBMS (Relational DBMS ) 的SQL


1.)資料定義語言(Data Definition Language,DDL)是SQL語言集中負責資料結構定義與資料庫物件定義的語言,由CREATE、ALTER與DROP組成

2.)資料查詢語言(Data Query Language, DQL)是SQL語言中,負責進行資料查詢而不會對資料本身進行修改的語句,這是最基本的SQL語句。

3.)資料操作語言(Data Manipulation Language, DML)是SQL語言中,負責對資料庫物件執行資料存取工作的指令集,以INSERT、UPDATE、DELETE三種指令為核心,分別代表插入、更新與刪除,是開發以資料為中心的應用程式必定會使用到的指令,因此有很多開發人員都把加上SQL的SELECT語句的四大指令以「CRUD」來稱呼。


4.) 資料控制語言 (Data Control Language,DCL) 在SQL語言中,是一種可對資料存取權進行控制的指令,它可以控制特定使用者帳戶對資料表、檢視表、預存程式、使用者自訂函式等資料庫物件的控制權。由 GRANT 和 REVOKE 兩個指令組成。




2016年10月23日 星期日

Robomong --MongoDB 前端資料庫管理界面



MongoDB – Allow remote access


MongoDB 預設只允許local (127.0.0.1) 連入操作, 改成可以遠端可以操作

(1) sudo vim /etc/mongod.conf

把 bindIp 改成 0.0.0.0 

(2) 修改後要重新啓動MongoDB

sudo service mongod restart






在 netstat 可以看到 Port 27017 在 Listen

tcp   0   0 0.0.0.0:27017           0.0.0.0:*    LISTEN



Note: 若有防火牆時, tcp port 27017 必須允許任可人連入





Robomong --MongoDB 前端資料庫管理界面


可以去下載 Robomong (https://robomongo.org/), 這是一個MongoDB 前端資料庫管理界面, 可以遠端連線到MongoDB Server上 



"Create" 新增連線", 右下方"connect" 連線到MognoDB

輸入MongoDB IP 及Port (預設27017) , 左下角有"Test"可以測試一下是否連線正常

點選你的collection, 顯示全部資料 (Documents)

選擇用Table 方式呈現

點選你的collection 按右鍵, 會顯示可以用的操作. 如Collection 更名、複製Collection、刪除Collection等, 也可以插入資料(Document)等

對Documents 中的欄位, 可以按右鍵進行文字編輯, 但須符合JSON格式 ,修改完後 "Save" 離開





How To Install MongoDB on Ubuntu 14.04