標籤:社區 推薦 image sha and 比較 排序 arch ora
SSBD
簡介:一個高效能的支援豐富資料結構的 NoSQL 資料庫, 可用於替代 Redis.
詳情:SSDB 是一個 C++ 開發的 NoSQL 資料庫, 使用 Google 公司開源的 LevelDB 引擎作為底層的儲存引擎. Redis 是一個 C 語言開發的記憶體 NoSQL 資料庫。SSDB 採用 New BSD License 許可協議, 一個非常寬鬆靈活的協議,支援主從複製, 負載平衡。
為什麼要替代Redis
Redis 非常流行, 不僅僅是因為其高效能和可持久化的特點, 還因為它支援豐富的資料結構, 能很好的表達業務模型. Redis 的國內屬新浪應用比較廣泛.但是, Redis 的缺點也很明顯, 那就是它的記憶體資料庫模型. 所有資料都存在記憶體中, 即使最有錢的互連網公司, 也沒法承受 $5000 (一台伺服器, 100G 記憶體)固定成本, 以及持續不斷的 IDC 租金成本來儲存區區的 50GB 的資料, 這個成本太高了!
SSDB優點
SSDB 擁有 Redis 的主要優點 - 高效能, 豐富資料結構, 並且擁有 Redis 所不具備的能力 - 大資料存放區能力. SSDB 伺服器的單機儲存能力是 Redis 的 100 倍! 因為 SSDB 能將資料存放區在硬碟中.在使用 SSDB 內建的 ssdb-bench 工具, 以及 Redis 內建的 redis-benchmark 工具在相同機器上的測試中, SSDB 的讀效能完全超過了 Redis, 這非常出乎意料. 不過, SSDB 的寫效能還是比 Redis 慢了 10% 左右. 要知道, SSDB 是一個硬碟資料庫, 而 Redis 是記憶體資料庫, 後者寫效能高一些是可以理解的.
特性
- 替代 Redis 資料庫, Redis 的 100 倍容量
- LevelDB 網路支援, 使用 C/C++ 開發
- Redis API 相容, 支援 Redis 用戶端
- 適合儲存集合資料, 如 list, hash, zset...
- 用戶端 API 支援的語言套件括: C++, PHP, Python, Java, Go
- 持久化的佇列服務
- 主從複製, 負載平衡
根據資料進行分析 訪問越多ssdb的讀操作要略優於redis的都操作,然而寫操作則比redis少10%左右
但是由於SSDB的儲存是對記憶體的需求小,容量大,相比redis要省錢,而且儲存服務是支援隊列,所以在都操作高於寫操作的業務選擇中SSDB是個較便宜的方案
SSDB架構
主從搭建
主機:
server:
ip: 192.168.31.128
port: 8888
從機:
server:
ip: 192.168.31.128
port: 8889
readonly: yes
replication:
binlog: yes
slaveof:
id: svc_1
type: sync
host: 192.168.31.128
port: 8888
主-主 雙主搭建
主1
server:
ip: 192.168.31.128
port: 8888
replication:
slaveof:
type: mirror
host: 192.168.31.128
port: 8889
主2
server:
ip: 192.168.31.128
port: 8889
replication:
slaveof:
type: mirror
host: 192.168.31.128
port: 8888
SSDB 為何可以替代Redis?
SSDB是一個C/C++語言開發的高效能開源NoSQL資料庫伺服器,支援Key-value, Keyhashmap, Key-zset(sorted set) 等資料結構(跟redis很類似),十分適合儲存數億條層級的列表, 排序表等集合資料, 是Redis的替代和增強方案。
SSDB 和Redis在使用上有什麼區別?
SSDB 是一款不錯的 NOSQL 資料庫實現,其豐富的介面和友好的使用對於特定使用情境非常不錯,但是因為持久性和儲存引擎天然的劣勢情況下,並不適合對於持久性要求高或者隨機操作頻繁的業務。至於替代 Redis 的情況,在多節點情況下,Redis 的持久性更加好,而 Redis 的高效能更是 SSDB 無法達到的,SSDB 替代 Redis 的情境應該不會太多。推薦將 SSDB 用於監控應用、非持久訊息佇列和順序操作的快取服務,也就是容許資料丟失或者陰影讀(shadow read)。
SSDB和Redis優缺點比對
優點:SSDB 對記憶體的需求小,是個較便宜的方案。
不差錢的話,Redis 在效能、穩定性和社區上都更加優秀
缺點:SSDB 實現很低效,主要是依賴 leveldb 會按 key 來排序的特性
Redis 測試時資料量小,唯讀寫了記憶體的可能性
SSDB常規指令集參考:http://ssdb.io/docs/zh_cn/commands/index.html
SSDB源碼分析 – 主從和多主同步原理解析:(http://www.ideawu.net/blog/archives/849.html)
SSDB: Redis 的替代(http://www.wzxue.com/ssdb/)
大資料學習總結記錄—SSDB