欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

對象存儲替代nosql,對象存儲替代hdfs實戰(zhàn)

什么是nosql

nosql是not only sql的意思。是近今年新發(fā)展起來的存儲系統(tǒng)。當(dāng)前使用最多的是key-value模型,用于處理超大規(guī)模的數(shù)據(jù)。

創(chuàng)新互聯(lián)建站長期為超過千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為奇臺企業(yè)提供專業(yè)的做網(wǎng)站、成都網(wǎng)站設(shè)計奇臺網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

以下是摘自百度百科中的一部分

NoSQL 是非關(guān)系型數(shù)據(jù)存儲的廣義定義。它打破了長久以來關(guān)系型數(shù)據(jù)庫與ACID理論大一統(tǒng)的局面。NoSQL 數(shù)據(jù)存儲不需要固定的表結(jié)構(gòu),通常也不存在連接操作。在大數(shù)據(jù)存取上具備關(guān)系型數(shù)據(jù)庫無法比擬的性能優(yōu)勢。該術(shù)語在 2009 年初得到了廣泛認(rèn)同。

當(dāng)今的應(yīng)用體系結(jié)構(gòu)需要數(shù)據(jù)存儲在橫向伸縮性上能夠滿足需求。而 NoSQL 存儲就是為了實現(xiàn)這個需求。Google 的BigTable與Amazon的Dynamo是非常成功的商業(yè) NoSQL 實現(xiàn)。一些開源的 NoSQL 體系,如Facebook 的Cassandra, Apache 的HBase,也得到了廣泛認(rèn)同。從這些NoSQL項目的名字上看不出什么相同之處:Hadoop、Voldemort、Dynomite,還有其它很多。

NoSQL與關(guān)系型數(shù)據(jù)庫設(shè)計理念比較

關(guān)系型數(shù)據(jù)庫中的表都是存儲一些格式化的數(shù)據(jù)結(jié)構(gòu),每個元組字段的組成都一樣,即使不是每個元組都需要所有的字段,但數(shù)據(jù)庫會為每個元組分配所有的字段,這樣的結(jié)構(gòu)可以便于表與表之間進(jìn)行連接等操作,但從另一個角度來說它也是關(guān)系型數(shù)據(jù)庫性能瓶頸的一個因素。而非關(guān)系型數(shù)據(jù)庫以鍵值對存儲,它的結(jié)構(gòu)不固定,每一個元組可以有不一樣的字段,每個元組可以根據(jù)需要增加一些自己的鍵值對,這樣就不會局限于固定的結(jié)構(gòu),可以減少一些時間和空間的開銷。

Hive有哪些支持者和替代品?

Apache Hive社區(qū)項目的提交者包括Cloudera,Hortonworks,F(xiàn)acebook,Intel,LinkedIn,Databricks等。Hadoop發(fā)行版支持Hive。與Hbase NoSQL數(shù)據(jù)庫一樣,它通常作為Hadoop分布式數(shù)據(jù)處理應(yīng)用程序的一部分實現(xiàn)。Hive可從Apache Foundation下載,也可從Hadoop分發(fā)商Cloudera,MapR和Hortonworks下載,也可作為AWS Elastic MapReduce的一部分下載。后一種實現(xiàn)方式支持在Simple Storage Service對象存儲中的數(shù)據(jù)集分析。

Apache Hive是首次將SQL查詢功能引入Hadoop生態(tài)系統(tǒng)的軟件之一。在眾多其他SQL-on-Hadoop產(chǎn)品中出現(xiàn)的是BigSQL,Drill,Hadapt,Impala和Presto。此外,Apache Pig已經(jīng)成為面向Hadoop數(shù)據(jù)庫的HiveQL的替代語言。

ssdb、minio性能測試c

項目上需要找一個硬盤型的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 。

項目需要存儲的其實是一個略長的二進(jìn)制字符串,初步認(rèn)為,使用 對象存儲 方案其實也可以替代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. 隨機(jī)讀取任意key 100次(對LRU機(jī)制不友好)

數(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

隨機(jī)讀

第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

隨機(jī)讀

第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ù)量后把本機(jī)內(nèi)存寫爆了,導(dǎo)致讀寫非常慢。但這變相驗證了 SSDB 在極端情況下的不穩(wěn)定。

NoSQL 數(shù)據(jù)庫和對象云存儲的區(qū)別

1、使用冗余,每個人的好友信息都在數(shù)據(jù)庫中有存儲,就是你說的記錄一對一關(guān)系

2、數(shù)據(jù)緩存到內(nèi)存,數(shù)據(jù)訪問很快

3、狀態(tài)信息修改異步,比如一個人登陸了,他的好友不是馬上就知道,中間間隔幾秒也沒有關(guān)系

4、數(shù)據(jù)可能不放在關(guān)系數(shù)據(jù)庫中,可能使用nosql數(shù)據(jù)庫,比如mongodb,bigtable,cassandra等

elasticsearch可以代替NoSQL嗎

我們使用Elasticsearch存儲的文檔數(shù)量接近50億(算上1份復(fù)制,接近100億文檔),總共10個數(shù)據(jù)節(jié)點和2個元數(shù)據(jù)節(jié)點(48GB內(nèi)存,8核心CPU,ES使用內(nèi)存達(dá)到70%),每天的文檔增量大概是3000W條(速度持續(xù)增加中)。目前來看,單個文檔的查詢效率基本處于實時狀態(tài);對于1到2周的數(shù)據(jù)的聚合統(tǒng)計操作也可以在10秒之內(nèi)返回結(jié)果。

但是,還有提升的空間:

1. 對于查詢單條數(shù)據(jù)的應(yīng)用場景來說,我們可以使用ES的路由機(jī)制,將同一索引內(nèi)的具有相同特征(比如具有相同的userid)的文檔全部存儲于一個節(jié)點上,這樣我們之后的查詢都可以直接定位到這個節(jié)點上,而不用將查詢廣播道所有的節(jié)點上;

2. 隨著數(shù)據(jù)節(jié)點的增加,適當(dāng)增加分片數(shù)量,提升系統(tǒng)的分布水平,也可以通過分而治之的方式優(yōu)化查詢性能;

個人以為Elasticsearch作為內(nèi)部存儲來說還是不錯的,效率也基本能夠滿足,在某些方面替代傳統(tǒng)DB也是可以的,前提是你的業(yè)務(wù)不對操作的事性務(wù)有特殊要求;而權(quán)限管理也不用那么細(xì),因為ES的權(quán)限這塊還不完善。由于我們對ES的應(yīng)用場景僅僅是在于對某段時間內(nèi)的數(shù)據(jù)聚合操作,沒有大量的單文檔請求(比如通過userid來找到一個用戶的文檔,類似于NoSQL的應(yīng)用場景),所以能否替代NoSQL還需要各位自己的測試。如果讓我選擇的話,我會嘗試使用ES來替代傳統(tǒng)的NoSQL,因為它的橫向擴(kuò)展機(jī)制太方便了。

在我的工作過程中,我深切體會到:經(jīng)驗固然是一個很重要的東西,因為它能夠幫助我們少走很多彎路,但同時也應(yīng)該看到經(jīng)驗的另一面——它會變成一個籠子,將我們閉塞其中,使我們錯過一些可能更好的解決方案,關(guān)鍵是我們要學(xué)會嘗試,接觸新的世界。

nosql數(shù)據(jù)庫是什么 具有代表性以key-value的形式存儲的

什么是NoSQL

大家有沒有聽說過“NoSQL”呢?近年,這個詞極受關(guān)注。看到“NoSQL”這個詞,大家可能會誤以為是“No!SQL”的縮寫,并深感憤怒:“SQL怎么會沒有必要了呢?”但實際上,它是“Not Only SQL”的縮寫。它的意義是:適用關(guān)系型數(shù)據(jù)庫的時候就使用關(guān)系型數(shù)據(jù)庫,不適用的時候也沒有必要非使用關(guān)系型數(shù)據(jù)庫不可,可以考慮使用更加合適的數(shù)據(jù)存儲。

為彌補(bǔ)關(guān)系型數(shù)據(jù)庫的不足,各種各樣的NoSQL數(shù)據(jù)庫應(yīng)運(yùn)而生。

為了更好地了解本書所介紹的NoSQL數(shù)據(jù)庫,對關(guān)系型數(shù)據(jù)庫的理解是必不可少的。那么,就讓我們先來看一看關(guān)系型數(shù)據(jù)庫的歷史、分類和特征吧。

關(guān)系型數(shù)據(jù)庫簡史

1969年,埃德加?6?1弗蘭克?6?1科德(Edgar Frank Codd)發(fā)表了劃時代的論文,首次提出了關(guān)系數(shù)據(jù)模型的概念。但可惜的是,刊登論文的《IBM Research Report》只是IBM公司的內(nèi)部刊物,因此論文反響平平。1970年,他再次在刊物《Communication of the ACM》上發(fā)表了題為“A Relational Model of Data for Large Shared Data banks”(大型共享數(shù)據(jù)庫的關(guān)系模型)的論文,終于引起了大家的關(guān)注。

科德所提出的關(guān)系數(shù)據(jù)模型的概念成為了現(xiàn)今關(guān)系型數(shù)據(jù)庫的基礎(chǔ)。當(dāng)時的關(guān)系型數(shù)據(jù)庫由于硬件性能低劣、處理速度過慢而遲遲沒有得到實際應(yīng)用。但之后隨著硬件性能的提升,加之使用簡單、性能優(yōu)越等優(yōu)點,關(guān)系型數(shù)據(jù)庫得到了廣泛的應(yīng)用。

通用性及高性能

雖然本書是講解NoSQL數(shù)據(jù)庫的,但有一個重要的大前提,請大家一定不要誤解。這個大前提就是“關(guān)系型數(shù)據(jù)庫的性能絕對不低,它具有非常好的通用性和非常高的性能”。毫無疑問,對于絕大多數(shù)的應(yīng)用來說它都是最有效的解決方案。

突出的優(yōu)勢

關(guān)系型數(shù)據(jù)庫作為應(yīng)用廣泛的通用型數(shù)據(jù)庫,它的突出優(yōu)勢主要有以下幾點:

保持?jǐn)?shù)據(jù)的一致性(事務(wù)處理)

由于以標(biāo)準(zhǔn)化為前提,數(shù)據(jù)更新的開銷很小(相同的字段基本上都只有一處)

可以進(jìn)行JOIN等復(fù)雜查詢

存在很多實際成果和專業(yè)技術(shù)信息(成熟的技術(shù))

這其中,能夠保持?jǐn)?shù)據(jù)的一致性是關(guān)系型數(shù)據(jù)庫的最大優(yōu)勢。在需要嚴(yán)格保證數(shù)據(jù)一致性和處理完整性的情況下,用關(guān)系型數(shù)據(jù)庫是肯定沒有錯的。但是有些情況不需要JOIN,對上述關(guān)系型數(shù)據(jù)庫的優(yōu)點也沒有什么特別需要,這時似乎也就沒有必要拘泥于關(guān)系型數(shù)據(jù)庫了。

關(guān)系型數(shù)據(jù)庫的不足

不擅長的處理

就像之前提到的那樣,關(guān)系型數(shù)據(jù)庫的性能非常高。但是它畢竟是一個通用型的數(shù)據(jù)庫,并不能完全適應(yīng)所有的用途。具體來說它并不擅長以下處理:

大量數(shù)據(jù)的寫入處理

為有數(shù)據(jù)更新的表做索引或表結(jié)構(gòu)(schema)變更

字段不固定時應(yīng)用

對簡單查詢需要快速返回結(jié)果的處理

。。。。。。

NoSQL數(shù)據(jù)庫

為了彌補(bǔ)關(guān)系型數(shù)據(jù)庫的不足(特別是最近幾年),NoSQL數(shù)據(jù)庫出現(xiàn)了。關(guān)系型數(shù)據(jù)庫應(yīng)用廣泛,能進(jìn)行事務(wù)處理和JOIN等復(fù)雜處理。相對地,NoSQL數(shù)據(jù)庫只應(yīng)用在特定領(lǐng)域,基本上不進(jìn)行復(fù)雜的處理,但它恰恰彌補(bǔ)了之前所列舉的關(guān)系型數(shù)據(jù)庫的不足之處。

易于數(shù)據(jù)的分散

如前所述,關(guān)系型數(shù)據(jù)庫并不擅長大量數(shù)據(jù)的寫入處理。原本關(guān)系型數(shù)據(jù)庫就是以JOIN為前提的,就是說,各個數(shù)據(jù)之間存在關(guān)聯(lián)是關(guān)系型數(shù)據(jù)庫得名的主要原因。為了進(jìn)行JOIN處理,關(guān)系型數(shù)據(jù)庫不得不把數(shù)據(jù)存儲在同一個服務(wù)器內(nèi),這不利于數(shù)據(jù)的分散。相反,NoSQL數(shù)據(jù)庫原本就不支持JOIN處理,各個數(shù)據(jù)都是獨立設(shè)計的,很容易把數(shù)據(jù)分散到多個服務(wù)器上。由于數(shù)據(jù)被分散到了多個服務(wù)器上,減少了每個服務(wù)器上的數(shù)據(jù)量,即使要進(jìn)行大量數(shù)據(jù)的寫入操作,處理起來也更加容易。同理,數(shù)據(jù)的讀入操作當(dāng)然也同樣容易。

提升性能和增大規(guī)模

下面說一點題外話,如果想要使服務(wù)器能夠輕松地處理更大量的數(shù)據(jù),那么只有兩個選擇:一是提升性能,二是增大規(guī)模。下面我們來整理一下這兩者的不同。

首先,提升性能指的就是通過提升現(xiàn)行服務(wù)器自身的性能來提高處理能力。這是非常簡單的方法,程序方面也不需要進(jìn)行變更,但需要一些費用。若要購買性能翻倍的服務(wù)器,需要花費的資金往往不只是原來的2倍,可能需要多達(dá)5到10倍。這種方法雖然簡單,但是成本較高。

另一方面,增大規(guī)模指的是使用多臺廉價的服務(wù)器來提高處理能力。它需要對程序進(jìn)行變更,但由于使用廉價的服務(wù)器,可以控制成本。另外,以后只要依葫蘆畫瓢增加廉價服務(wù)器的數(shù)量就可以了。

不對大量數(shù)據(jù)進(jìn)行處理的話就沒有使用的必要嗎?

NoSQL數(shù)據(jù)庫基本上來說為了“使大量數(shù)據(jù)的寫入處理更加容易(讓增加服務(wù)器數(shù)量更容易)”而設(shè)計的。但如果不是對大量數(shù)據(jù)進(jìn)行操作的話,NoSQL數(shù)據(jù)庫的應(yīng)用就沒有意義嗎?

答案是否定的。的確,它在處理大量數(shù)據(jù)方面很有優(yōu)勢。但實際上NoSQL數(shù)據(jù)庫還有各種各樣的特點,如果能夠恰當(dāng)?shù)乩眠@些特點將會是非常有幫助。具體的例子將會在第2章和第3章進(jìn)行介紹,這些用途將會讓你感受到利用NoSQL的好處。

希望順暢地對數(shù)據(jù)進(jìn)行緩存(Cache)處理

希望對數(shù)組類型的數(shù)據(jù)進(jìn)行高速處理

希望進(jìn)行全部保存

多樣的NoSQL數(shù)據(jù)庫

NoSQL數(shù)據(jù)庫存在著“key-value存儲”、“文檔型數(shù)據(jù)庫”、“列存儲數(shù)據(jù)庫”等各種各樣的種類,每種數(shù)據(jù)庫又包含各自的特點。下一節(jié)讓我們一起來了解一下NoSQL數(shù)據(jù)庫的種類和特點。

NoSQL數(shù)據(jù)庫是什么

NoSQL說起來簡單,但實際上到底有多少種呢?我在提筆的時候,到NoSQL的官方網(wǎng)站上確認(rèn)了一下,竟然已經(jīng)有122種了。另外官方網(wǎng)站上也介紹了本書沒有涉及到的圖形數(shù)據(jù)庫和對象數(shù)據(jù)庫等各個類別。不知不覺間,原來已經(jīng)出現(xiàn)了這么多的NoSQL數(shù)據(jù)庫啊。

本節(jié)將為大家介紹具有代表性的NoSQL數(shù)據(jù)庫。

key-value存儲

這是最常見的NoSQL數(shù)據(jù)庫,它的數(shù)據(jù)是以key-value的形式存儲的。雖然它的處理速度非常快,但是基本上只能通過key的完全一致查詢獲取數(shù)據(jù)。根據(jù)數(shù)據(jù)的保存方式可以分為臨時性、永久性和兩者兼具三種。

臨時性

memcached屬于這種類型。所謂臨時性就是 “數(shù)據(jù)有可能丟失”的意思。memcached把所有數(shù)據(jù)都保存在內(nèi)存中,這樣保存和讀取的速度非常快,但是當(dāng)memcached停止的時候,數(shù)據(jù)就不存在了。由于數(shù)據(jù)保存在內(nèi)存中,所以無法操作超出內(nèi)存容量的數(shù)據(jù)(舊數(shù)據(jù)會丟失)。

在內(nèi)存中保存數(shù)據(jù)

可以進(jìn)行非常快速的保存和讀取處理

數(shù)據(jù)有可能丟失

永久性

Tokyo Tyrant、Flare、ROMA等屬于這種類型。和臨時性相反,所謂永久性就是“數(shù)據(jù)不會丟失”的意思。這里的key-value存儲不像memcached那樣在內(nèi)存中保存數(shù)據(jù),而是把數(shù)據(jù)保存在硬盤上。與memcached在內(nèi)存中處理數(shù)據(jù)比起來,由于必然要發(fā)生對硬盤的IO操作,所以性能上還是有差距的。但數(shù)據(jù)不會丟失是它最大的優(yōu)勢。

在硬盤上保存數(shù)據(jù)

可以進(jìn)行非常快速的保存和讀取處理(但無法與memcached相比)

數(shù)據(jù)不會丟失

兩者兼具

Redis屬于這種類型。Redis有些特殊,臨時性和永久性兼具,且集合了臨時性key-value存儲和永久性key-value存儲的優(yōu)點。Redis首先把數(shù)據(jù)保存到內(nèi)存中,在滿足特定條件(默認(rèn)是15分鐘一次以上,5分鐘內(nèi)10個以上,1分鐘內(nèi)10000個以上的key發(fā)生變更)的時候?qū)?shù)據(jù)寫入到硬盤中。這樣既確保了內(nèi)存中數(shù)據(jù)的處理速度,又可以通過寫入硬盤來保證數(shù)據(jù)的永久性。這種類型的數(shù)據(jù)庫特別適合于處理數(shù)組類型的數(shù)據(jù)。

同時在內(nèi)存和硬盤上保存數(shù)據(jù)

可以進(jìn)行非常快速的保存和讀取處理

保存在硬盤上的數(shù)據(jù)不會消失(可以恢復(fù))

適合于處理數(shù)組類型的數(shù)據(jù)

面向文檔的數(shù)據(jù)庫

MongoDB、CouchDB屬于這種類型。它們屬于NoSQL數(shù)據(jù)庫,但與key-value存儲相異。

不定義表結(jié)構(gòu)

面向文檔的數(shù)據(jù)庫具有以下特征:即使不定義表結(jié)構(gòu),也可以像定義了表結(jié)構(gòu)一樣使用。關(guān)系型數(shù)據(jù)庫在變更表結(jié)構(gòu)時比較費事,而且為了保持一致性還需修改程序。然而NoSQL數(shù)據(jù)庫則可省去這些麻煩(通常程序都是正確的),確實是方便快捷。

可以使用復(fù)雜的查詢條件

跟key-value存儲不同的是,面向文檔的數(shù)據(jù)庫可以通過復(fù)雜的查詢條件來獲取數(shù)據(jù)。雖然不具備事務(wù)處理和JOIN這些關(guān)系型數(shù)據(jù)庫所具有的處理能力,但除此以外的其他處理基本上都能實現(xiàn)。這是非常容易使用的NoSQL數(shù)據(jù)庫。

不需要定義表結(jié)構(gòu)

可以利用復(fù)雜的查詢條件

面向列的數(shù)據(jù)庫

Cassandra、Hbase、HyperTable屬于這種類型。由于近年來數(shù)據(jù)量出現(xiàn)爆發(fā)性增長,這種類型的NoSQL數(shù)據(jù)庫尤其引人注目。

面向行的數(shù)據(jù)庫和面向列的數(shù)據(jù)庫

普通的關(guān)系型數(shù)據(jù)庫都是以行為單位來存儲數(shù)據(jù)的,擅長進(jìn)行以行為單位的讀入處理,比如特定條件數(shù)據(jù)的獲取。因此,關(guān)系型數(shù)據(jù)庫也被稱為面向行的數(shù)據(jù)庫。相反,面向列的數(shù)據(jù)庫是以列為單位來存儲數(shù)據(jù)的,擅長以列為單位讀入數(shù)據(jù)。

高擴(kuò)展性

面向列的數(shù)據(jù)庫具有高擴(kuò)展性,即使數(shù)據(jù)增加也不會降低相應(yīng)的處理速度(特別是寫入速度),所以它主要應(yīng)用于需要處理大量數(shù)據(jù)的情況。另外,利用面向列的數(shù)據(jù)庫的優(yōu)勢,把它作為批處理程序的存儲器來對大量數(shù)據(jù)進(jìn)行更新也是非常有用的。但由于面向列的數(shù)據(jù)庫跟現(xiàn)行數(shù)據(jù)庫存儲的思維方式有很大不同,應(yīng)用起來十分困難。

高擴(kuò)展性(特別是寫入處理)

應(yīng)用十分困難

最近,像Twitter和Facebook這樣需要對大量數(shù)據(jù)進(jìn)行更新和查詢的網(wǎng)絡(luò)服務(wù)不斷增加,面向列的數(shù)據(jù)庫的優(yōu)勢對其中一些服務(wù)是非常有用的,但是由于這與本書所要介紹的內(nèi)容關(guān)系不大,就不進(jìn)行詳細(xì)介紹了。

總結(jié):

NoSQL并不是No-SQL,而是指Not Only SQL。

NoSQL的出現(xiàn)是為了彌補(bǔ)SQL數(shù)據(jù)庫因為事務(wù)等機(jī)制帶來的對海量數(shù)據(jù)、高并發(fā)請求的處理的性能上的欠缺。

NoSQL不是為了替代SQL而出現(xiàn)的,它是一種替補(bǔ)方案,而不是解決方案的首選。

絕大多數(shù)的NoSQL產(chǎn)品都是基于大內(nèi)存和高性能隨機(jī)讀寫的(比如具有更高性能的固態(tài)硬盤陣列),一般的小型企業(yè)在選擇NoSQL時一定要慎重!不要為了NoSQL而NoSQL,可能會導(dǎo)致花了冤枉錢又耽擱了項目進(jìn)程。

NoSQL不是萬能的,但在大型項目中,你往往需要它!

網(wǎng)頁名稱:對象存儲替代nosql,對象存儲替代hdfs實戰(zhàn)
瀏覽路徑:http://chinadenli.net/article48/dsepchp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)ChatGPT定制網(wǎng)站關(guān)鍵詞優(yōu)化搜索引擎優(yōu)化做網(wǎng)站

廣告

聲明:本網(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)

手機(jī)網(wǎng)站建設(shè)