將 Domain 和 IP 位置對應的一個分散式資料庫 簡單來說就是把 Domian 翻譯成 IP 位置,可以透過 DNS 伺服器查詢指定的 Domain 或 IP 位置
運作流程 client 端輸入 Domain -> 發送 Requqst 到 DNS -> DNS 查詢 Domain 實際的 IP 位置 -> 實際 IP 位置連線到 Server 存取網頁 -> Server 回傳網頁給 client 端(回傳給瀏覽器)
Google 的公開 DNS 目的是讓一般使用者開啟網頁的反應數度加快,減少網頁初期開啟的等待時間。 可以改善網路安全,透過快取直接取得查詢結果,不必等候伺服器回應。
google DNS 的壞處就是,上網紀錄會被記錄下來,還有訪問中國的網站的時候,可能會超級慢或被擋下來。
參考資料: 維基百科 - 域名系統 (筆記) CS75 (Summer 2012) Lecture 9 Scalability Harvard Web Development David Malan Mac OS X 使用 Google Public DNS 改善網路瀏覽體驗 還在 Google DNS 8.8.8.8?更安全好用的「1.1.1.1」讓臉書不卡卡
- 避免兩個人搶同一個東西,造成超賣(Race Condition)
- 會用 update for 鎖定這行程式,確定執行完成後下面的程式才會繼續執行。
- 會有效能上的耗損(因為要等 for update 執行完成)
$conn->autocommit(FALSE);
$conn->begin_transaction();
$conn->query("SELECT amount from products where id = 1 for update");
$conn->commit();
- 是關聯是資料庫,可以使用 join 語法
- 有欄位 table 資料表名稱等等。
- 需要一開始就想好資料庫結構,否則資料龐大,要再修改欄位名稱會很麻煩,會花上許多時間。
Not Only SQL
- 資料庫是沒有關連性的,也沒有結構(Schema),一個 key 對應一筆 value。
- 無法使用 join 語法。
- 可以拿來儲存像是 facebook 的貼文資料,或是按讚數
- 擴充方式只要購買新的主機空間即可,有別於傳統 SQL 需要設定很多東西。
為了確保 Transaction 的正確性。
-
原子性 atomicity 不是全部成功,就是全部失敗 舉例:轉帳不是成功就是失敗,沒有在跟你轉一半的。
-
一至性 consistency 維持資料一致(錢總數相同) 小明戶頭有 100元,轉帳給小美 90 元,帳戶裡剩下 10 元。小明跟小美的帳戶加起來的錢還是 100 元。
-
隔離性 isolation 多筆交易不會互相影響(無法同時修改同一個值) 小明跟小美轉帳是獨立的狀態,不會突然出現阿華從中間交易把錢轉走這件事情。
-
持久性 durability 交易成功後,寫入的資料會一直存在 轉帳成功後不會因為 ATM 壞掉,剛剛轉帳的帳目就出現問題。 就像存摺上的金額一樣,多一筆少一筆都不行,要記錄的清清楚楚。