SSDB(LevelDB 服務(wù)器, NoSQL 存儲方案)的 zscan 是最強大的一條命令, 因為它操作的是 zset(sorted set) 數(shù)據(jù)類型, 只需要一條 zscan 命令就能直接地表達業(yè)務(wù)邏輯, "所寫即所想". 例如, 獲取用戶的未讀消息列表, 獲取按上架時間排序的商品列表, 獲取微博 timeline...

公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出深圳免費做網(wǎng)站回饋大家。
zset 可以理解為關(guān)系數(shù)據(jù)庫里具有兩個字段的表, 一個字段是 key, UNIQUE 索引, 也即數(shù)據(jù)的唯一標(biāo)識; 另一個字段是浮點型 score, 每一個 key 對應(yīng)的排序權(quán)重值. 在關(guān)系數(shù)據(jù)庫中, 要分頁遍歷數(shù)據(jù), 就要執(zhí)行類似的一條 SQL 查詢:
select * from table order by score, key limit start, size
每一次查詢都會進行排序, 性能非常低. 而 SSDB 的 zset 中的數(shù)據(jù)是已經(jīng)排好序的, 讀取時不需要進行排序. zscan 的命令原型為:
zscan name key_start score_start score_end limit
- name: 列表的標(biāo)識
- key_start: 分頁遍歷列表時, 上一次遍歷到的最大(score)的一條數(shù)據(jù) key
- score_start: 上一次遍歷到的數(shù)據(jù)的排序權(quán)重值最大值
- score_end: 想要遍歷的數(shù)據(jù)的排序權(quán)重值最大值
- limit: 分頁返回一次的數(shù)據(jù)條數(shù)
假設(shè)購物網(wǎng)站中有這樣的一個商品表:
id, title, price, update_time
展示商品列表時, 有時需要按價格 price 排序, 有時需要按更新時間 update_time 排序, 用 SSDB 怎么解決? 那就需要建兩個 zset:
#zset 1
key = id
score = price
#zset 2
key = id
score = update_time
這就是 NoSQL 的常用設(shè)計模式, 將帶有 N 字段的關(guān)系數(shù)據(jù)庫表分解成 N-1 個每個只有 2 個字段的數(shù)據(jù)庫表, 這樣每個表對應(yīng)一個 SSDB 的 zset.
分類一:鍵值數(shù)據(jù)庫
Redis,
Voldemort,
Oracle
BDB,國內(nèi)的ssdb
分類二:列存儲數(shù)據(jù)庫
Cassandra,
HBase
分類三:文檔型數(shù)據(jù)庫
CouchDB,
MongoDb,國內(nèi)的SequoiaDB
分類四:圖形(Graph)數(shù)據(jù)庫
Neo4J,
InfoGrid,
Infinite
Graph
項目上需要找一個硬盤型的NoSQL,用于將 Redis 中的冷數(shù)據(jù)落入硬盤。初步選型了幾款 key-value 類型的NoSQL,分別有 levelDB、 rocksDB、 TiDB、 SSDB、swapDB、 Kvrocks、Tikv 。均為基于 levelDB 開發(fā)的幾款NoSQL。其中因為 levelDB、rocksDB 無網(wǎng)絡(luò)接口,不方便做分布式和高可用。, TiDB 過重,還有 swapDB 社區(qū)不夠活躍且相關(guān)client API不完備。暫時選型 SSDB 。
項目需要存儲的其實是一個略長的二進制字符串,初步認為,使用 對象存儲 方案其實也可以替代NoSQL,所以壓測對象添加當(dāng)前非常火的云原生對象存儲 MinIO
硬件名|配置 系統(tǒng)| Ubuntu(基于win10 wsl版的docker啟動) 內(nèi)存| 16GB(實際可用6.08G) CPU| Intel i5-8400
測試項目: 1. 寫50M數(shù)據(jù)100次 2. 隨機讀取任意key 100次(對LRU機制不友好)
寫
數(shù)據(jù)導(dǎo)入成功!
數(shù)據(jù)序列化成功!
a 數(shù)據(jù)大小:50.99295234680176 MB
第1次寫入總用時: 797 ms
第2次寫入總用時: 848 ms
第3次寫入總用時: 3621 ms
第4次寫入總用時: 813 ms
第5次寫入總用時: 1862 ms
第6次寫入總用時: 838 ms
第7次寫入總用時: 2235 ms
第8次寫入總用時: 836 ms
第9次寫入總用時: 900 ms
第10次寫入總用時: 1027 ms
第11次寫入總用時: 1101 ms
第12次寫入總用時: 880 ms
第13次寫入總用時: 1956 ms
第14次寫入總用時: 866 ms
第15次寫入總用時: 2422 ms
第16次寫入總用時: 852 ms
第17次寫入總用時: 4511 ms
第18次寫入總用時: 875 ms
第19次寫入總用時: 2736 ms
第20次寫入總用時: 814 ms
第21次寫入總用時: 7172 ms
第22次寫入總用時: 891 ms
第23次寫入總用時: 7820 ms
第24次寫入總用時: 836 ms
第25次寫入總用時: 22103 ms
第26次寫入總用時: 877 ms
第27次寫入總用時: 2712 ms
第28次寫入總用時: 841 ms
第29次寫入總用時: 1928 ms
第30次寫入總用時: 916 ms
第31次寫入總用時: 839 ms
第32次寫入總用時: 826 ms
第33次寫入總用時: 7759 ms
第34次寫入總用時: 843 ms
第35次寫入總用時: 10670 ms
第36次寫入總用時: 843 ms
第37次寫入總用時: 9361 ms
第38次寫入總用時: 821 ms
第39次寫入總用時: 810 ms
第40次寫入總用時: 794 ms
第41次寫入總用時: 13281 ms
第42次寫入總用時: 833 ms
第43次寫入總用時: 811 ms
第44次寫入總用時: 798 ms
第45次寫入總用時: 18843 ms
第46次寫入總用時: 911 ms
第47次寫入總用時: 9428 ms
第48次寫入總用時: 898 ms
第49次寫入總用時: 17582 ms
第50次寫入總用時: 903 ms
第51次寫入總用時: 831 ms
第52次寫入總用時: 800 ms
第53次寫入總用時: 14602 ms
第54次寫入總用時: 827 ms
第55次寫入總用時: 5898 ms
第56次寫入總用時: 856 ms
第57次寫入總用時: 5693 ms
第58次寫入總用時: 1050 ms
第59次寫入總用時: 882 ms
第60次寫入總用時: 1020 ms
第61次寫入總用時: 15060 ms
第62次寫入總用時: 902 ms
第63次寫入總用時: 1062 ms
第64次寫入總用時: 915 ms
第65次寫入總用時: 7572 ms
第66次寫入總用時: 823 ms
第67次寫入總用時: 9649 ms
第68次寫入總用時: 832 ms
第69次寫入總用時: 10403 ms
第70次寫入總用時: 907 ms
第71次寫入總用時: 978 ms
第72次寫入總用時: 789 ms
第73次寫入總用時: 2111 ms
第74次寫入總用時: 947 ms
第75次寫入總用時: 4675 ms
第76次寫入總用時: 944 ms
第77次寫入總用時: 8592 ms
第78次寫入總用時: 832 ms
第79次寫入總用時: 2940 ms
第80次寫入總用時: 842 ms
第81次寫入總用時: 19835 ms
第82次寫入總用時: 862 ms
第83次寫入總用時: 7646 ms
第84次寫入總用時: 873 ms
第85次寫入總用時: 1002 ms
第86次寫入總用時: 842 ms
第87次寫入總用時: 9057 ms
第88次寫入總用時: 801 ms
第89次寫入總用時: 5117 ms
第90次寫入總用時: 918 ms
第91次寫入總用時: 798 ms
第92次寫入總用時: 853 ms
第93次寫入總用時: 7728 ms
第94次寫入總用時: 810 ms
第95次寫入總用時: 3969 ms
第96次寫入總用時: 814 ms
第97次寫入總用時: 2050 ms
第98次寫入總用時: 819 ms
第99次寫入總用時: 9566 ms
第100次寫入總用時: 833 ms/pre
隨機讀
第1次讀取 15總用時: 2251 ms
第2次讀取 73總用時: 2045 ms
第3次讀取 98總用時: 1548 ms
第4次讀取 20總用時: 2683 ms
第5次讀取 46總用時: 1156 ms
第6次讀取 69總用時: 1160 ms
第7次讀取 46總用時: 1520 ms
第8次讀取 51總用時: 1381 ms
第9次讀取 48總用時: 1000 ms
第10次讀取 69總用時: 1400 ms
第11次讀取 82總用時: 1236 ms
第12次讀取 22總用時: 1140 ms
第13次讀取 36總用時: 864 ms
第14次讀取 66總用時: 843 ms
第15次讀取 47總用時: 922 ms
第16次讀取 17總用時: 885 ms
第17次讀取 14總用時: 864 ms
第18次讀取 64總用時: 888 ms
第19次讀取 74總用時: 815 ms
第20次讀取 33總用時: 866 ms
第21次讀取 36總用時: 822 ms
第22次讀取 78總用時: 975 ms
第23次讀取 40總用時: 1186 ms
第24次讀取 54總用時: 857 ms
第25次讀取 92總用時: 963 ms
第26次讀取 43總用時: 955 ms
第27次讀取 38總用時: 853 ms
第28次讀取 47總用時: 926 ms
第29次讀取 62總用時: 877 ms
第30次讀取 70總用時: 890 ms
第31次讀取 88總用時: 895 ms
第32次讀取 15總用時: 937 ms
第33次讀取 3總用時: 993 ms
第34次讀取 99總用時: 892 ms
第35次讀取 76總用時: 818 ms
第36次讀取 30總用時: 1020 ms
第37次讀取 89總用時: 863 ms
第38次讀取 99總用時: 819 ms
第39次讀取 62總用時: 818 ms
第40次讀取 1總用時: 871 ms
第41次讀取 66總用時: 809 ms
第42次讀取 68總用時: 847 ms
第43次讀取 72總用時: 910 ms
第44次讀取 50總用時: 1128 ms
第45次讀取 47總用時: 898 ms
第46次讀取 26總用時: 909 ms
第47次讀取 35總用時: 872 ms
第48次讀取 30總用時: 826 ms
第49次讀取 79總用時: 904 ms
第50次讀取 66總用時: 863 ms
第51次讀取 2總用時: 885 ms
第52次讀取 65總用時: 900 ms
第53次讀取 67總用時: 1023 ms
第54次讀取 16總用時: 934 ms
第55次讀取 63總用時: 892 ms
第56次讀取 9總用時: 894 ms
第57次讀取 71總用時: 896 ms
第58次讀取 20總用時: 947 ms
第59次讀取 89總用時: 865 ms
第60次讀取 57總用時: 872 ms
第61次讀取 62總用時: 856 ms
第62次讀取 14總用時: 881 ms
第63次讀取 19總用時: 950 ms
第64次讀取 14總用時: 876 ms
第65次讀取 86總用時: 968 ms
第66次讀取 12總用時: 911 ms
第67次讀取 93總用時: 877 ms
第68次讀取 59總用時: 886 ms
第69次讀取 79總用時: 878 ms
第70次讀取 49總用時: 869 ms
第71次讀取 91總用時: 964 ms
第72次讀取 38總用時: 838 ms
第73次讀取 73總用時: 915 ms
第74次讀取 8總用時: 875 ms
第75次讀取 96總用時: 827 ms
第76次讀取 98總用時: 826 ms
第77次讀取 95總用時: 892 ms
第78次讀取 36總用時: 843 ms
第79次讀取 44總用時: 872 ms
第80次讀取 89總用時: 863 ms
第81次讀取 24總用時: 883 ms
第82次讀取 89總用時: 804 ms
第83次讀取 49總用時: 876 ms
第84次讀取 81總用時: 873 ms
第85次讀取 72總用時: 914 ms
第86次讀取 68總用時: 861 ms
第87次讀取 73總用時: 893 ms
第88次讀取 4總用時: 880 ms
第89次讀取 3總用時: 987 ms
第90次讀取 76總用時: 896 ms
第91次讀取 16總用時: 1010 ms
第92次讀取 73總用時: 903 ms
第93次讀取 83總用時: 933 ms
第94次讀取 52總用時: 945 ms
第95次讀取 48總用時: 901 ms
第96次讀取 26總用時: 942 ms
第97次讀取 37總用時: 883 ms
第98次讀取 44總用時: 866 ms
第99次讀取 89總用時: 921 ms
第100次讀取 61總用時: 896 ms/pre
寫
數(shù)據(jù)導(dǎo)入成功!
第1次寫入總用時: 956 ms
第2次寫入總用時: 912 ms
第3次寫入總用時: 1241 ms
第4次寫入總用時: 1564 ms
第5次寫入總用時: 942 ms
第6次寫入總用時: 3666 ms
第7次寫入總用時: 1629 ms
第8次寫入總用時: 1712 ms
第9次寫入總用時: 977 ms
第10次寫入總用時: 1515 ms
第11次寫入總用時: 911 ms
第12次寫入總用時: 1009 ms
第13次寫入總用時: 1024 ms
第14次寫入總用時: 1206 ms
第15次寫入總用時: 984 ms
第16次寫入總用時: 943 ms
第17次寫入總用時: 954 ms
第18次寫入總用時: 1033 ms
第19次寫入總用時: 1008 ms
第20次寫入總用時: 1121 ms
第21次寫入總用時: 963 ms
第22次寫入總用時: 949 ms
第23次寫入總用時: 889 ms
第24次寫入總用時: 1066 ms
第25次寫入總用時: 1289 ms
第26次寫入總用時: 1125 ms
第27次寫入總用時: 1111 ms
第28次寫入總用時: 953 ms
第29次寫入總用時: 964 ms
第30次寫入總用時: 1125 ms
第31次寫入總用時: 998 ms
第32次寫入總用時: 1993 ms
第33次寫入總用時: 926 ms
第34次寫入總用時: 920 ms
第35次寫入總用時: 926 ms
第36次寫入總用時: 1169 ms
第37次寫入總用時: 1325 ms
第38次寫入總用時: 1170 ms
第39次寫入總用時: 1074 ms
第40次寫入總用時: 1011 ms
第41次寫入總用時: 931 ms
第42次寫入總用時: 984 ms
第43次寫入總用時: 1563 ms
第44次寫入總用時: 905 ms
第45次寫入總用時: 944 ms
第46次寫入總用時: 1147 ms
第47次寫入總用時: 1429 ms
第48次寫入總用時: 934 ms
第49次寫入總用時: 1133 ms
第50次寫入總用時: 912 ms
第51次寫入總用時: 953 ms
第52次寫入總用時: 1127 ms
第53次寫入總用時: 1065 ms
第54次寫入總用時: 1323 ms
第55次寫入總用時: 1003 ms
第56次寫入總用時: 1489 ms
第57次寫入總用時: 1377 ms
第58次寫入總用時: 940 ms
第59次寫入總用時: 1317 ms
第60次寫入總用時: 912 ms
第61次寫入總用時: 898 ms
第62次寫入總用時: 934 ms
第63次寫入總用時: 1005 ms
第64次寫入總用時: 1729 ms
第65次寫入總用時: 983 ms
第66次寫入總用時: 1684 ms
第67次寫入總用時: 908 ms
第68次寫入總用時: 895 ms
第69次寫入總用時: 1171 ms
第70次寫入總用時: 1372 ms
第71次寫入總用時: 1261 ms
第72次寫入總用時: 1024 ms
第73次寫入總用時: 1048 ms
第74次寫入總用時: 904 ms
第75次寫入總用時: 941 ms
第76次寫入總用時: 928 ms
第77次寫入總用時: 1806 ms
第78次寫入總用時: 1052 ms
第79次寫入總用時: 1030 ms
第80次寫入總用時: 1092 ms
第81次寫入總用時: 1117 ms
第82次寫入總用時: 950 ms
第83次寫入總用時: 933 ms
第84次寫入總用時: 928 ms
第85次寫入總用時: 935 ms
第86次寫入總用時: 1908 ms
第87次寫入總用時: 994 ms
第88次寫入總用時: 1097 ms
第89次寫入總用時: 930 ms
第90次寫入總用時: 1052 ms
第91次寫入總用時: 1119 ms
第92次寫入總用時: 958 ms
第93次寫入總用時: 987 ms
第94次寫入總用時: 973 ms
第95次寫入總用時: 2036 ms
第96次寫入總用時: 891 ms
第97次寫入總用時: 954 ms
第98次寫入總用時: 951 ms
第99次寫入總用時: 1044 ms
第100次寫入總用時: 1366 ms/pre
隨機讀
第1次讀取 46總用時: 40 ms
第2次讀取 8總用時: 36 ms
第3次讀取 28總用時: 26 ms
第4次讀取 80總用時: 10 ms
第5次讀取 77總用時: 13 ms
第6次讀取 27總用時: 49 ms
第7次讀取 86總用時: 20 ms
第8次讀取 0總用時: 45 ms
第9次讀取 54總用時: 34 ms
第10次讀取 24總用時: 153 ms
第11次讀取 78總用時: 29 ms
第12次讀取 0總用時: 17 ms
第13次讀取 91總用時: 56 ms
第14次讀取 5總用時: 99 ms
第15次讀取 23總用時: 138 ms
第16次讀取 37總用時: 120 ms
第17次讀取 40總用時: 156 ms
第18次讀取 88總用時: 41 ms
第19次讀取 76總用時: 32 ms
第20次讀取 49總用時: 102 ms
第21次讀取 20總用時: 179 ms
第22次讀取 40總用時: 68 ms
第23次讀取 6總用時: 215 ms
第24次讀取 36總用時: 197 ms
第25次讀取 37總用時: 30 ms
第26次讀取 68總用時: 154 ms
第27次讀取 14總用時: 314 ms
第28次讀取 27總用時: 91 ms
第29次讀取 51總用時: 255 ms
第30次讀取 66總用時: 166 ms
第31次讀取 86總用時: 140 ms
第32次讀取 29總用時: 374 ms
第33次讀取 96總用時: 235 ms
第34次讀取 68總用時: 72 ms
第35次讀取 74總用時: 264 ms
第36次讀取 11總用時: 334 ms
第37次讀取 55總用時: 316 ms
第38次讀取 31總用時: 287 ms
第39次讀取 93總用時: 233 ms
第40次讀取 44總用時: 499 ms
第41次讀取 26總用時: 312 ms
第42次讀取 76總用時: 33 ms
第43次讀取 11總用時: 31 ms
第44次讀取 86總用時: 191 ms
第45次讀取 96總用時: 217 ms
第46次讀取 20總用時: 145 ms
第47次讀取 1總用時: 772 ms
第48次讀取 69總用時: 477 ms
第49次讀取 9總用時: 320 ms
第50次讀取 46總用時: 42 ms
第51次讀取 34總用時: 823 ms
第52次讀取 76總用時: 115 ms
第53次讀取 62總用時: 635 ms
第54次讀取 99總用時: 596 ms
第55次讀取 64總用時: 657 ms
第56次讀取 66總用時: 97 ms
第57次讀取 18總用時: 461 ms
第58次讀取 91總用時: 247 ms
第59次讀取 46總用時: 147 ms
第60次讀取 12總用時: 702 ms
第61次讀取 79總用時: 545 ms
第62次讀取 47總用時: 956 ms
第63次讀取 17總用時: 853 ms
第64次讀取 97總用時: 771 ms
第65次讀取 74總用時: 368 ms
第66次讀取 84總用時: 790 ms
第67次讀取 72總用時: 866 ms
第68次讀取 82總用時: 742 ms
第69次讀取 93總用時: 313 ms
第70次讀取 57總用時: 917 ms
第71次讀取 61總用時: 1185 ms
第72次讀取 66總用時: 162 ms
第73次讀取 5總用時: 168 ms
第74次讀取 68總用時: 275 ms
第75次讀取 43總用時: 1108 ms
第76次讀取 74總用時: 281 ms
第77次讀取 65總用時: 955 ms
第78次讀取 22總用時: 1169 ms
第79次讀取 88總用時: 501 ms
第80次讀取 80總用時: 1685 ms
第81次讀取 92總用時: 1286 ms
第82次讀取 89總用時: 1680 ms
第83次讀取 30總用時: 1537 ms
第84次讀取 41總用時: 1576 ms
第85次讀取 2總用時: 2193 ms
第86次讀取 52總用時: 1817 ms
第87次讀取 8總用時: 323 ms
第88次讀取 81總用時: 1409 ms
第89次讀取 40總用時: 577 ms
第90次讀取 88總用時: 598 ms
第91次讀取 19總用時: 2324 ms
第92次讀取 75總用時: 2275 ms
第93次讀取 29總用時: 668 ms
第94次讀取 77總用時: 2773 ms
第95次讀取 62總用時: 484 ms
第96次讀取 84總用時: 883 ms
第97次讀取 32總用時: 2945 ms
第98次讀取 44總用時: 884 ms
第99次讀取 66總用時: 631 ms
第100次讀取 38總用時: 2739 ms/pre
非常奇怪的是 MinIO 整體性能略優(yōu)于 SSDB 但是理論上不太應(yīng)該, SSDB 怎么說也是半內(nèi)存半硬盤的NoSQL不應(yīng)該比純硬盤的 MinIO 性能要差,有可能是 SSDB 寫到一定數(shù)據(jù)量后把本機內(nèi)存寫爆了,導(dǎo)致讀寫非常慢。但這變相驗證了 SSDB 在極端情況下的不穩(wěn)定。
當(dāng)前題目:ssdbnosql的簡單介紹
網(wǎng)站地址:http://chinadenli.net/article33/dsiihss.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站內(nèi)鏈、動態(tài)網(wǎng)站、標(biāo)簽優(yōu)化、移動網(wǎng)站建設(shè)、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)