ใครเบื่อ database ยี่ห้อดังๆๆๆ
อยากลองสร้างฐานข้อมูล ( database) ง่ายๆ ใช้เองส่วนตัว
รองรับภาษา SQL อ่านติวเตอร์นี้ได้เลยครับ ตัวอย่างเป็นภาษา C นะ
สถาปัตยกรรมจะใช้แบบเดียวกับ SQLite
https://cstack.github.io/db_tutorial/
เนื้อหามี 13 บท
Part 1 - Introduction and Setting up the REPL
Part 2 - World’s Simplest SQL Compiler and Virtual Machine
Part 3 - An In-Memory, Append-Only, Single-Table Database
Part 4 - Our First Tests (and Bugs)
Part 5 - Persistence to Disk
Part 6 - The Cursor Abstraction
Part 7 - Introduction to the B-Tree
Part 8 - B-Tree Leaf Node Format
Part 9 - Binary Search and Duplicate Keys
Part 10 - Splitting a Leaf Node
Part 11 - Recursively Searching the B-Tree
Part 12 - Scanning a Multi-Level B-Tree
Part 13 - Updating Parent Node After a Split
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
「in-memory database」的推薦目錄:
- 關於in-memory database 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最佳解答
- 關於in-memory database 在 Kewang 的資訊進化論 Facebook 的最讚貼文
- 關於in-memory database 在 Kewang 的資訊進化論 Facebook 的精選貼文
- 關於in-memory database 在 コバにゃんチャンネル Youtube 的最讚貼文
- 關於in-memory database 在 大象中醫 Youtube 的最佳貼文
- 關於in-memory database 在 大象中醫 Youtube 的精選貼文
- 關於in-memory database 在 hashicorp/go-memdb: Golang in-memory database ... - GitHub 的評價
- 關於in-memory database 在 In-memory database optimized for read (low/no writes) when ... 的評價
- 關於in-memory database 在 In Memory databases internals for system design interviews 的評價
- 關於in-memory database 在 Speedy Transactions in Multicore In-Memory Databases 的評價
in-memory database 在 Kewang 的資訊進化論 Facebook 的最讚貼文
Autocomplete 在現在的應用程式已經是個不可或缺的功能,但這個功能因為要一直發 request 到 server 上,簡直就是 DDoS 了 XDDD,對 server 是個不小的負擔。一方面要讓功能正常快速的運作,一方面又要讓 server 不會被打掛,是個不容易做的好的功能。這篇就來分享一下 Redis 的作者 antirez 是如何運用 Redis 來達到這個功能。
Redis 是一個 in-memory database,讀寫的效率自然不在話下,做 Autocomplete 用這類資料庫是再正常不過了。Redis 裡面有個資料結構叫做 Sorted Set,只要塞資料 (ZADD) 進去,它就會幫你按照字母順序排列好。所以小編只要把要搜尋的資料 (這裡小編稱為 candidate) 分割成獨立的字元 (這裡小編稱為 keyword),存進 Sorted Set 就可以完成初步的資料處理。
比如想要找到 Taiwan 這個 candidate 的話就先把 Taiwan 拆成 t, ta, tai, taiw, taiwa, taiwan,把這六個 keyword 都存入 Sorted Set 裡面。最後再存入 taiwan*,表示這個 candidate 的結尾。所以 Sorted Set 的內容會變成下面這樣:
---
1. t
2. ta
3. tai
4. taip
5. taipe
6. taipei
7. taipei*
8. taiw
9. taiwa
10. taiwan
11. taiwan*
12. tal
13. tall
14. tall*
---
當使用者輸入 t,發送請求到 server 的時候,server 用 Redis 的搜尋指令 (ZRANK) 找出 index 為 1,然後再從 1 開始,將資料取回來 (ZRANGE) 50 筆,所以上面的 14 筆資料都會取回來。最後 server 再把這 14 筆結尾有 * 的資料過濾出來,剩下 7, 11, 14 這三筆,再把 * 濾掉回給使用者就完成這個功能了。
所以使用者輸入了 t,server 就會回給使用者 taipei, taiwan, tall 這三個 candidate,這就完成最簡單的 Autocomplete 功能。但 Autocomplete 可不只有這樣而已,剩下的細節等下次有空再來分享一下好了。
#funliday #autocomplete #redis
in-memory database 在 Kewang 的資訊進化論 Facebook 的精選貼文
Gorilla 是 Facebook 這兩年開發的 time-series 資料庫,這篇論文是去年下半年就已經發表了,小編當時想說找時間慢慢看,沒想到已經有強者寫了一篇導讀文,真的是該拜一下 XD
Facebook 為了要讓監控系統操作人員快速容易取得系統發生狀況時的主因,並同時兼顧高效率、可擴充性及可靠度,所以開發了這套 in-memory 的 TSDB。
Facebook 在 Gorilla 上面存了許多系統資料,比如說 CPU loading, latency......等,而且每秒可以存上千萬級的資料點,相同資料只需要幾毫秒就能取得。
另外 Gorilla 要接受的挑戰還有以下這些:
* 一個字串可以一次表示 20 億個時序數字
* 1 分鐘可以存 70 億筆 timestamp 及數值
* 可以存 26 個小時的資料
* 高峰時 1 秒可以容納 4 萬個以上的讀取
* 1 毫秒以內可以讀取成功
* 能支援 15 秒的粒度
* 不在同一區域,但又要相同的兩份 in-memory 資料
* 單一台伺服器當掉時仍然可以正常讀取資料
* 可以很快速的掃描所有資料
* 至少支援每年 2 倍以上的成長。
這篇文章內另外介紹的是 Gorilla 如何壓縮資料,用的是 delta of delta 及 XOR 運算,導讀文跟原論文的內容都很棒!推薦 Backend 的大家一讀!
* Gorilla: A Fast, Scalable, In-Memory Time Series Database: http://www.vldb.org/pvldb/vol8/p1816-teller.pdf
#facebook #gorilla #tsdb #hbase
in-memory database 在 コバにゃんチャンネル Youtube 的最讚貼文
in-memory database 在 大象中醫 Youtube 的最佳貼文
in-memory database 在 大象中醫 Youtube 的精選貼文
in-memory database 在 In-memory database optimized for read (low/no writes) when ... 的推薦與評價
... <看更多>
in-memory database 在 hashicorp/go-memdb: Golang in-memory database ... - GitHub 的推薦與評價
Provides the memdb package that implements a simple in-memory database built on immutable radix trees. The database provides Atomicity, Consistency and ... ... <看更多>