本期目錄
創(chuàng)新互聯(lián)建站10多年企業(yè)網(wǎng)站制作服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及高端網(wǎng)站定制服務(wù),企業(yè)網(wǎng)站制作及推廣,對(duì)混凝土攪拌站等多個(gè)行業(yè)擁有多年的網(wǎng)站維護(hù)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。
DB-Engines數(shù)據(jù)庫(kù)排行榜
新聞快訊
一、RDBMS家族
二、NoSQL家族
三、NewSQL家族
四、時(shí)間序列
五、大數(shù)據(jù)生態(tài)圈
六、國(guó)產(chǎn)數(shù)據(jù)庫(kù)概覽
七、云數(shù)據(jù)庫(kù)
八、推出dbaplus Newsletter的想法
九、感謝名單
為方便閱讀、重點(diǎn)呈現(xiàn),本期Newsletter(2019年1月)將對(duì)各個(gè)板塊的內(nèi)容進(jìn)行精簡(jiǎn)。需要閱讀全文的同學(xué)可點(diǎn)擊文末 【閱讀原文】 或登錄
進(jìn)行下載。
DB-Engines數(shù)據(jù)庫(kù)排行榜
以下取自2019年1月的數(shù)據(jù),具體信息可以參考,數(shù)據(jù)僅供參考。
DB-Engines排名的數(shù)據(jù)依據(jù)5個(gè)不同的因素:
新聞快訊
1、2018年9月24日,微軟公布了SQL Server2019預(yù)覽版,SQL Server 2019將結(jié)合Spark創(chuàng)建統(tǒng)一數(shù)據(jù)平臺(tái)。
2、2018年10月5日,ElasticSearch在美國(guó)紐約證券交易所上市。
3、亞馬遜放棄甲骨文數(shù)據(jù)庫(kù)軟件,導(dǎo)致最大倉(cāng)庫(kù)之一在黃金時(shí)段宕機(jī)。受此消息影響,亞馬遜盤前股價(jià)小幅跳水,跌超2%。
4、2018年10月31日,Percona發(fā)布了Percona Server 8.0 RC版本,發(fā)布對(duì)MongoDB 4.0的支持,發(fā)布對(duì)XtraBackup測(cè)試第二個(gè)版本。
5、2018年10月31日,Gartner陸續(xù)發(fā)布了2018年的數(shù)據(jù)庫(kù)系列報(bào)告,包括《數(shù)據(jù)庫(kù)魔力象限》、《數(shù)據(jù)庫(kù)核心能力》以及《數(shù)據(jù)庫(kù)推薦報(bào)告》。
今年的總上榜數(shù)據(jù)庫(kù)產(chǎn)品達(dá)到了5家,分別來(lái)自:阿里云,華為,巨杉數(shù)據(jù)庫(kù),騰訊云,星環(huán) 科技 。其中阿里云和巨杉數(shù)據(jù)庫(kù)已經(jīng)連續(xù)兩年入選。
6、2018年11月初,Neo4j宣布完成E輪8000萬(wàn)美元融資。11月15日,Neo4j宣布企業(yè)版徹底閉源:
7、2019年1月8日,阿里巴巴以1.033億美元(9000萬(wàn)歐元)的價(jià)格收購(gòu)了Apache Flink商業(yè)公司DataArtisans。
8、2019年1月11日早間消息,亞馬遜宣布推出云數(shù)據(jù)庫(kù)軟件,亞馬遜和MongoDB將會(huì)直接競(jìng)爭(zhēng)。
RDBMS家族
Oracle 發(fā)布18.3版本
2018年7月,Oracle Database 18.3通用版開(kāi)始提供下載。我們可以將Oracle Database 18c視為采用之前發(fā)布模式的Oracle Database 12c第2版的第一個(gè)補(bǔ)丁集。未來(lái),客戶將不再需要等待多年才能用上最新版Oracle數(shù)據(jù)庫(kù),而是每年都可以期待新數(shù)據(jù)庫(kù)特性和增強(qiáng)。Database 19c將于2019年Q1率先在Oracle cloud上發(fā)布云版本。
Oracle Database 18c及19c部分關(guān)鍵功能:
1、性能
2、多租戶,大量功能增強(qiáng)及改進(jìn),大幅節(jié)省成本和提高敏捷性
3、高可用
4、數(shù)據(jù)倉(cāng)庫(kù)和大數(shù)據(jù)
MySQL發(fā)布8.0.13版本
1、賬戶管理
經(jīng)過(guò)配置,修改密碼時(shí),必須帶上原密碼。在之前的版本,用戶登錄之后,就可以修改自己的密碼。這種方式存在一定安全風(fēng)險(xiǎn)。比如用戶登錄上數(shù)據(jù)庫(kù)后,中途離開(kāi)一段時(shí)間,那么非法用戶可能會(huì)修改密碼。由參數(shù)password_require_current控制。
2、配置
Innodb表必須有主鍵。在用戶沒(méi)有指定主鍵時(shí),系統(tǒng)會(huì)生成一個(gè)默認(rèn)的主鍵。但是在主從復(fù)制的場(chǎng)景下,默認(rèn)的主鍵,會(huì)對(duì)叢庫(kù)應(yīng)用速度帶來(lái)致命的影響。如果設(shè)置sql_require_primary_key,那么數(shù)據(jù)庫(kù)會(huì)強(qiáng)制用戶在創(chuàng)建表、修改表時(shí),加上主鍵。
3、字段默認(rèn)值
BLOB、TEXT、GEOMETRY和JSON字段可以指定默認(rèn)值了。
4、優(yōu)化器
1)Skip Scan
非前綴索引也可以用了。
之前的版本,任何沒(méi)有帶上f1字段的查詢,都沒(méi)法使用索引。在新的版本中,它可以忽略前面的字段,讓這個(gè)查詢使用到索引。其實(shí)現(xiàn)原理就是把(f1 = 1 AND f2 40) 和(f1 = 2 AND f2 40)的查詢結(jié)果合并。
2)函數(shù)索引
之前版本只能基于某個(gè)列或者多個(gè)列加索引,但是不允許在上面做計(jì)算,如今這個(gè)限制消除了。
5、SQL語(yǔ)法
GROUP BY ASC和GROUP BY DESC語(yǔ)法已經(jīng)被廢棄,要想達(dá)到類似的效果,請(qǐng)使用GROUP BY ORDER BY ASC和GROUP BY ORDER BY DESC。
6、功能變化
1)設(shè)置用戶變量,請(qǐng)使用SET語(yǔ)句
如下類型語(yǔ)句將要被廢棄SELECT @var, @var:=@var+1。
2)新增innodb_fsync_threshold
該變量是控制文件刷新到磁盤的速率,防止磁盤在短時(shí)間內(nèi)飽和。
3)新增會(huì)話級(jí)臨時(shí)表空間
在以往的版本中,當(dāng)執(zhí)行SQL時(shí),產(chǎn)生的臨時(shí)表都在全局表空間ibtmp1中,及時(shí)執(zhí)行結(jié)束,臨時(shí)表被釋放,空間不會(huì)被回收。新版本中,會(huì)為session從臨時(shí)表空間池中分配一個(gè)臨時(shí)表空間,當(dāng)連接斷開(kāi)時(shí),臨時(shí)表空間的磁盤空間被回收。
4)在線切換Group Replication的狀態(tài)
5)新增了group_replication_member_expel_timeout
之前,如果某個(gè)節(jié)點(diǎn)被懷疑有問(wèn)題,在5秒檢測(cè)期結(jié)束之后,那么就直接被驅(qū)逐出這個(gè)集群。即使該節(jié)點(diǎn)恢復(fù)正常時(shí),也不會(huì)再被加入集群。那么,瞬時(shí)的故障,會(huì)把某些節(jié)點(diǎn)驅(qū)逐出集群。
group_replication_member_expel_timeout讓管理員能更好的依據(jù)自身的場(chǎng)景,做出最合適的配置(建議配置時(shí)間小于一個(gè)小時(shí))。
MariaDB 10.3版本功能展示
1、MariaDB 10.3支持update多表ORDER BY and LIMIT
1)update連表更新,limit語(yǔ)句
update t1 join t2 on t1.id=t2.id set t1.name='hechunyang' limit 3;
MySQL 8.0直接報(bào)錯(cuò)
MariaDB 10.3更新成功
2)update連表更新,ORDER BY and LIMIT語(yǔ)句
update t1 join t2 on t1.id=t2.id set t1.name='HEchunyang' order by t1.id DESC limit 3;
MySQL 8.0直接報(bào)錯(cuò)
MariaDB 10.3更新成功
參考:
2、MariaDB10.3增補(bǔ)AliSQL補(bǔ)丁——安全執(zhí)行Online DDL
Online DDL從名字上看很容易誤導(dǎo)新手,以為不論什么情況,修改表結(jié)構(gòu)都不會(huì)鎖表,理想很豐滿,現(xiàn)實(shí)很骨感,注意這個(gè)坑!
有以下兩種情況執(zhí)行DDL操作會(huì)鎖表的,Waiting for table metadata lock(元數(shù)據(jù)表鎖):
針對(duì)第二種情況,MariaDB10.3增補(bǔ)AliSQL補(bǔ)丁-DDL FAST FAIL,讓其DDL操作快速失敗。
例:
如果線上有某個(gè)慢SQL對(duì)該表進(jìn)行操作,可以使用WAIT n(以秒為單位設(shè)置等待)或NOWAIT在語(yǔ)句中顯式設(shè)置鎖等待超時(shí),在這種情況下,如果無(wú)法獲取鎖,語(yǔ)句將立即失敗。 WAIT 0相當(dāng)于NOWAIT。
參考:
3、MariaDB Window Functions窗口函數(shù)分組取TOP N記錄
窗口函數(shù)在MariaDB10.2版本里實(shí)現(xiàn),其簡(jiǎn)化了復(fù)雜SQL的撰寫,提高了可讀性。
參考:
Percona Server發(fā)布8.0 GA版本
2018年12月21日,Percona發(fā)布了Percona Server 8.0 GA版本。
在支持MySQL8.0社區(qū)的基礎(chǔ)版上,Percona Server for MySQL 8.0版本中帶來(lái)了許多新功能:
1、安全性和合規(guī)性
2、性能和可擴(kuò)展性
3、可觀察性和可用性
Percona Server for MySQL 8.0中將要被廢用功能:
Percona Server for MySQL 8.0中刪除的功能:
RocksDB發(fā)布V5.17.2版本
2018年10月24日,RocksDB發(fā)布V5.17.2版本。
RocksDB是Facebook在LevelDB基礎(chǔ)上用C++寫的高效內(nèi)嵌式K/V存儲(chǔ)引擎。相比LevelDB,RocksDB提供了Column-Family,TTL,Transaction,Merge等方面的支持。目前MyRocks,TiKV等底層的存儲(chǔ)都是基于RocksDB來(lái)構(gòu)建。
PostgreSQL發(fā)布11版本
2018年10月18日,PostgreSQL 11發(fā)布。
1、PostgreSQL 11的重大增強(qiáng)
2、PostgreSQL 插件動(dòng)態(tài)
1)分布式插件citus發(fā)布 8.1
citus是PostgreSQL的一款sharding插件,目前國(guó)內(nèi)蘇寧、鐵總、探探有較大量使用案例。
2)地理信息插件postgis發(fā)布2.5.1
PostGIS是專業(yè)的時(shí)空數(shù)據(jù)庫(kù)插件,在測(cè)繪、航天、氣象、地震、國(guó)土資源、地圖等時(shí)空專業(yè)領(lǐng)域應(yīng)用廣泛。同時(shí)在互聯(lián)網(wǎng)行業(yè)也得到了對(duì)GIS有性能、功能深度要求的客戶青睞,比如共享出行、外賣等客戶。
3)時(shí)序插件timescale發(fā)布1.1.1
timescale是PostgreSQL的一款時(shí)序數(shù)據(jù)庫(kù)插件,在IoT行業(yè)中有非常好的應(yīng)用。github star數(shù)目前有5000多,是一個(gè)非?;鸨牟寮?。
4)流計(jì)算插件 pipelinedb 正式插件化
Pipelinedb是PostgreSQL的一款流計(jì)算插件,使用這個(gè)創(chuàng)建可以對(duì)高速寫入的數(shù)據(jù)進(jìn)行實(shí)時(shí)根據(jù)定義的聚合規(guī)則進(jìn)行聚合(支持概率計(jì)算),實(shí)時(shí)根據(jù)定義的規(guī)則觸發(fā)事件(支持事件處理函數(shù)的自定義)??捎糜贗oT,監(jiān)控,F(xiàn)EED實(shí)時(shí)計(jì)算等場(chǎng)景。
3、PostgreSQL衍生開(kāi)源產(chǎn)品動(dòng)態(tài)
1)agensgraph發(fā)布 2.0.0版本
agensgraph是兼容PostgreSQL、opencypher的專業(yè)圖數(shù)據(jù)庫(kù),適合圖式關(guān)系的管理。
2)gpdb發(fā)布5.15
gpdb是兼容PostgreSQL的mpp數(shù)據(jù)庫(kù),適合OLAP場(chǎng)景。近兩年,gpdb一直在追趕PostgreSQL的社區(qū)版本,預(yù)計(jì)很快會(huì)追上10的PostgreSQL,在TP方面的性能也會(huì)得到顯著提升。
3)antdb發(fā)布3.2
antdb是以Postgres-XC為基礎(chǔ)開(kāi)發(fā)的一款PostgreSQL sharding數(shù)據(jù)庫(kù),亞信主導(dǎo)開(kāi)發(fā),開(kāi)源,目前主要服務(wù)于亞信自有客戶。
4)遷移工具M(jìn)TK發(fā)布52版本
MTK是EDB提供的可以將Oracle、PostgreSQL、MySQL、MSSQL、Sybase數(shù)據(jù)庫(kù)遷移到PostgreSQL, PPAS的產(chǎn)品,遷移速度可以達(dá)到100萬(wàn)行/s以上。
DB2發(fā)布 11.1.4.4版本
DB2最新發(fā)布Mod Pack 4 and Fix Pack 4,包含以下幾方面的改動(dòng)及增強(qiáng):
1、性能
2、高可用
3、管理視圖
4、應(yīng)用開(kāi)發(fā)方面
5、聯(lián)邦功能
6、pureScale
NoSQL家族
Redis發(fā)布5.0.3版本
MongoDB升級(jí)更新MongoDB Mobile和MongoDB Stitch
2018年11月21日,MongoDB升級(jí)更新MongoDB Mobile和MongoDB Stitch,助力開(kāi)發(fā)人員提升工作效率。
MongoDB 公司日前發(fā)布了多項(xiàng)新產(chǎn)品功能,旨在更好地幫助開(kāi)發(fā)人員在世界各地管理數(shù)據(jù)。通過(guò)利用存儲(chǔ)在移動(dòng)設(shè)備和后臺(tái)數(shù)據(jù)庫(kù)的數(shù)據(jù)之間的實(shí)時(shí)、自動(dòng)的同步特性,MongoDB Mobile通用版本助力開(kāi)發(fā)人員構(gòu)建更快捷、反應(yīng)更迅速的應(yīng)用程序。此前,這只能通過(guò)在移動(dòng)應(yīng)用內(nèi)部安裝一個(gè)可供選擇或限定功能的數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)。
MongoDB Mobile在為客戶提供隨處運(yùn)行的自由度方面更進(jìn)了一步。用戶在iOS和安卓終端設(shè)備上可擁有MongoDB所有功能,將網(wǎng)絡(luò)邊界擴(kuò)展到其物聯(lián)網(wǎng)資產(chǎn)范疇。應(yīng)用系統(tǒng)還可以使用MongoDB Stitch的軟件開(kāi)發(fā)包訪問(wèn)移動(dòng)客戶端或后臺(tái)數(shù)據(jù),幫助開(kāi)發(fā)人員通過(guò)他們希望的任意方式查詢移動(dòng)終端數(shù)據(jù)和物聯(lián)網(wǎng)數(shù)據(jù),包括本地讀寫、本地JSON存儲(chǔ)、索引和聚合。通過(guò)Stitch移動(dòng)同步功能(現(xiàn)可提供beta版),用戶可以自動(dòng)對(duì)保存在本地的數(shù)據(jù)以及后臺(tái)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行同步。
本期新秀:Cassandra發(fā)布3.11.3版本
2018年8月11日,Cassandra發(fā)布正式版3.11.3。
Apache Cassandra是一款開(kāi)源分布式NoSQL數(shù)據(jù)庫(kù)系統(tǒng),使用了基于Google BigTable的數(shù)據(jù)模型,與面向行(row)的傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)或鍵值存儲(chǔ)key-value數(shù)據(jù)庫(kù)不同,Cassandra使用的是寬列存儲(chǔ)模型(Wide Column Stores)。與BigTable和其模仿者HBase不同,數(shù)據(jù)并不存儲(chǔ)在分布式文件系統(tǒng)如GFS或HDFS中,而是直接存于本地。
Cassandra的系統(tǒng)架構(gòu)與Amazon DynamoDB類似,是基于一致性哈希的完全P2P架構(gòu),每行數(shù)據(jù)通過(guò)哈希來(lái)決定應(yīng)該存在哪個(gè)或哪些節(jié)點(diǎn)中。集群沒(méi)有master的概念,所有節(jié)點(diǎn)都是同樣的角色,徹底避免了整個(gè)系統(tǒng)的單點(diǎn)問(wèn)題導(dǎo)致的不穩(wěn)定性,集群間的狀態(tài)同步通過(guò)Gossip協(xié)議來(lái)進(jìn)行P2P的通信。
3.11.3版本的一些bug fix和改進(jìn):
NewSQL家族
TiDB 發(fā)布2.1.2版本
2018 年 12 月 22 日,TiDB 發(fā)布 2.1.2 版,TiDB-Ansible 相應(yīng)發(fā)布 2.1.2 版本。該版本在 2.1.1 版的基礎(chǔ)上,對(duì)系統(tǒng)兼容性、穩(wěn)定性做出了改進(jìn)。
TiDB 是一款定位于在線事務(wù)處理/在線分析處理( HTAP: Hybrid Transactional/Analytical Processing)的融合型數(shù)據(jù)庫(kù)產(chǎn)品。除了底層的 RocksDB 存儲(chǔ)引擎之外,分布式SQL層、分布式KV存儲(chǔ)引擎(TiKV)完全自主設(shè)計(jì)和研發(fā)。
TiDB 完全開(kāi)源,兼容MySQL協(xié)議和語(yǔ)法,可以簡(jiǎn)單理解為一個(gè)可以無(wú)限水平擴(kuò)展的MySQL,并且提供分布式事務(wù)、跨節(jié)點(diǎn) JOIN、吞吐和存儲(chǔ)容量水平擴(kuò)展、故障自恢復(fù)、高可用等優(yōu)異的特性;對(duì)業(yè)務(wù)沒(méi)有任何侵入性,簡(jiǎn)化開(kāi)發(fā),利于維護(hù)和平滑遷移。
TiDB:
PD:
TiKV:
Tools:
1)TiDB-Lightning
2)TiDB-Binlog
EsgynDB發(fā)布R2.5版本
2018年12月22日,EsgynDB R2.5版本正式發(fā)布。
作為企業(yè)級(jí)產(chǎn)品,EsgynDB 2.5向前邁進(jìn)了一大步,它擁有以下功能和改進(jìn):
CockroachDB發(fā)布2.1版本
2018年10月30日,CockroachDB正式發(fā)布2.1版本,其新增特性如下:
新增企業(yè)級(jí)特性:
新增SQL特性:
新增內(nèi)核特性:
Admin UI增強(qiáng):
時(shí)間序列
本期新秀:TimescaleDB發(fā)布1.0版本
10月底,TimescaleDB 1.0宣布正式推出,官方表示該版本已可用于生產(chǎn)環(huán)境,支持完整SQL和擴(kuò)展。
TimescaleDB是基于PostgreSQL數(shù)據(jù)庫(kù)開(kāi)發(fā)的一款時(shí)序數(shù)據(jù)庫(kù),以插件化的形式打包提供,隨著PostgreSQL的版本升級(jí)而升級(jí),不會(huì)因?yàn)榱砹⒎种?lái)麻煩。
TimescaleDB架構(gòu):
數(shù)據(jù)自動(dòng)按時(shí)間和空間分片(chunk)
更新亮點(diǎn):
大數(shù)據(jù)生態(tài)圈
Hadoop發(fā)布2.9.2版本
2018年11月中旬,Hadoop在2.9分支上發(fā)布了新的2.9.2版本,該版本進(jìn)行了204個(gè)大大小小的變更,主要變更如下:
Greenplum 發(fā)布5.15版本
Greenplum最新的5.15版本中發(fā)布了流式數(shù)據(jù)加載工具。
該版本中的Greenplum Streem Server組件已經(jīng)集成了Kafka流式加載功能,并通過(guò)了Confluent官方的集成認(rèn)證,其支持的主要功能如下:
國(guó)產(chǎn)數(shù)據(jù)庫(kù)概覽
K-DB發(fā)布數(shù)據(jù)庫(kù)一體機(jī)版
2018年11月7日,K-DB發(fā)布了數(shù)據(jù)庫(kù)一體機(jī)版。該版本更新情況如下:
OceanBase遷移服務(wù)發(fā)布1.0版本
1月4日,OceanBase 正式發(fā)布OMS遷移服務(wù)1.0版本。
以下內(nèi)容包含 OceanBase 遷移服務(wù)的重要特性和功能:
SequoiaDB發(fā)布3.0.1新版本
1、架構(gòu)
1)完整計(jì)算存儲(chǔ)分離架構(gòu),兼容MySQL協(xié)議、語(yǔ)法
計(jì)算存儲(chǔ)分離體系以松耦合的方式將計(jì)算與存儲(chǔ)層分別部署,通過(guò)標(biāo)準(zhǔn)接口或插件對(duì)各個(gè)模塊和組件進(jìn)行無(wú)縫替換,在計(jì)算層與存儲(chǔ)層均可實(shí)現(xiàn)自由的彈性伸縮。
SequoiaDB巨杉數(shù)據(jù)庫(kù)“計(jì)算-存儲(chǔ)分離”架構(gòu)詳細(xì)示意
用戶可以根據(jù)自身業(yè)務(wù)特征選擇面向交易的SQL解析器(例如MySQL或PGSQL)或面向統(tǒng)計(jì)分析的執(zhí)行引擎(例如SparkSQL)。眾所周知,使用不同的SQL優(yōu)化與執(zhí)行方式,數(shù)據(jù)庫(kù)的訪問(wèn)性能可能會(huì)存在上千上萬(wàn)倍的差距。計(jì)算存儲(chǔ)分離的核心思想便是在數(shù)據(jù)存儲(chǔ)層面進(jìn)行一體化存儲(chǔ),在計(jì)算層面則利用每種執(zhí)行引擎的特點(diǎn)針對(duì)不同業(yè)務(wù)場(chǎng)景進(jìn)行選擇和優(yōu)化,用戶可以在存儲(chǔ)層進(jìn)行邏輯與物理的隔離,將面向高頻交易的前端業(yè)務(wù)與面向高吞吐量的統(tǒng)計(jì)分析使用不同的硬件進(jìn)行存儲(chǔ),確保在多類型數(shù)據(jù)訪問(wèn)時(shí)互不干擾,以真正達(dá)到生產(chǎn)環(huán)境可用的多租戶與HTAP能力。
2、其他更新信息
1)接口變更:
2)主要特性:
云數(shù)據(jù)庫(kù)
本期新秀:騰訊發(fā)布數(shù)據(jù)庫(kù)CynosDB,開(kāi)啟公測(cè)
1、News
1)騰訊云數(shù)據(jù)庫(kù)MySQL2018年重大更新:
2)騰訊云數(shù)據(jù)庫(kù)MongoDB2018年重大更新:
3)騰訊云數(shù)據(jù)庫(kù)Redis/CKV+2018年重大更新:
4)騰訊云數(shù)據(jù)庫(kù)CTSDB2018年重大更新:
2、Redis 4.0集群版商業(yè)化上線
2018年10月,騰訊云數(shù)據(jù)庫(kù)Redis 4.0集群版完成邀測(cè)、公測(cè)、商業(yè)化三個(gè)迭代,在廣州、上海、北京正式全量商業(yè)化上線。
產(chǎn)品特性:
使用場(chǎng)景:
官網(wǎng)文檔:
3、騰訊自研數(shù)據(jù)庫(kù)CynosDB發(fā)布,開(kāi)啟公測(cè)
2018年11月22日,騰訊云召開(kāi)新一代自研數(shù)據(jù)庫(kù)CynosDB發(fā)布會(huì),業(yè)界第一款全面兼容市面上兩大最主流的開(kāi)源數(shù)據(jù)庫(kù)MySQL和PostgreSQL的高性能企業(yè)級(jí)分布式云數(shù)據(jù)庫(kù)。
本期新秀:京東云DRDS發(fā)布1.0版本
12月24日,京東云分布式關(guān)系型數(shù)據(jù)庫(kù)DRDS正式發(fā)布1.0版本。
DRDS是京東云精心自研的數(shù)據(jù)庫(kù)中間件產(chǎn)品,獲得了2018年 ”可信云技術(shù)創(chuàng)新獎(jiǎng)”。DRDS可實(shí)現(xiàn)海量數(shù)據(jù)下的自動(dòng)分庫(kù)分表,具有高性能,分布式,彈性升級(jí),兼容MySQL等優(yōu)點(diǎn),適用于高并發(fā)、大規(guī)模數(shù)據(jù)的在線交易, 歷史 數(shù)據(jù)查詢,自動(dòng)數(shù)據(jù)分片等業(yè)務(wù)場(chǎng)景,歷經(jīng)多次618,雙十一的考驗(yàn),已經(jīng)在京東集團(tuán)內(nèi)大規(guī)模使用。
京東云DRDS產(chǎn)品有以下主要特性
1)自動(dòng)分庫(kù)分表
通過(guò)簡(jiǎn)單的定義即可自動(dòng)實(shí)現(xiàn)分庫(kù)分表,將數(shù)據(jù)實(shí)際存放在多個(gè)MySQL實(shí)例的數(shù)據(jù)庫(kù)中,但呈現(xiàn)給應(yīng)用程序的依舊是一張表,對(duì)業(yè)務(wù)透明,應(yīng)用程序幾乎無(wú)需改動(dòng),實(shí)現(xiàn)了對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)和處理能力的水平擴(kuò)展。
2)分布式架構(gòu)
基于分布式架構(gòu)的集群方案,多個(gè)對(duì)等節(jié)點(diǎn)同時(shí)對(duì)外提供服務(wù),不但可有效規(guī)避服務(wù)的單點(diǎn)故障,而且更加容易擴(kuò)展。
3)超強(qiáng)性能
具有極高的處理能力,雙節(jié)點(diǎn)即可支持?jǐn)?shù)萬(wàn)QPS,滿足用戶超大規(guī)模處理能力的需求。
4)兼容MySQL
兼容絕大部分MySQL語(yǔ)法,包括MySQL語(yǔ)法、數(shù)據(jù)類型、索引、常用函數(shù)、排序、關(guān)聯(lián)等DDL,DML語(yǔ)句,使用成本低。
參考鏈接:
RadonDB發(fā)布1.0.3版本
2018年12月26日,MyNewSQL領(lǐng)域的RadonDB云數(shù)據(jù)庫(kù)發(fā)布1.0.3版本。
推出dbaplus Newsletter的想法
dbaplus Newsletter旨在向廣大技術(shù)愛(ài)好者提供數(shù)據(jù)庫(kù)行業(yè)的最新技術(shù)發(fā)展趨勢(shì),為社區(qū)的技術(shù)發(fā)展提供一個(gè)統(tǒng)一的發(fā)聲平臺(tái)。為此,我們策劃了RDBMS、NoSQL、NewSQL、時(shí)間序列、大數(shù)據(jù)生態(tài)圈、國(guó)產(chǎn)數(shù)據(jù)庫(kù)、云數(shù)據(jù)庫(kù)等幾個(gè)版塊。
我們不以商業(yè)宣傳為目的,不接受任何商業(yè)廣告宣傳,嚴(yán)格審查信息源的可信度和準(zhǔn)確性,力爭(zhēng)為大家提供一個(gè)純凈的技術(shù)學(xué)習(xí)環(huán)境,歡迎大家監(jiān)督指正。
至于Newsletter發(fā)布的周期,目前計(jì)劃是每三個(gè)月左右會(huì)做一次跟進(jìn), 下期計(jì)劃時(shí)間是2019年4月14日~4月25日, 如果有相關(guān)的信息提供請(qǐng)發(fā)送至郵箱:newsletter@dbaplus.cn
感謝名單
最后要感謝那些提供寶貴信息和建議的專家朋友,排名不分先后。
往期回顧:
↓↓別忘了點(diǎn)這里下載 2019年1月 完整版Newsletter 哦~
Lambda架構(gòu)的核心理念是“流批一體化”,因?yàn)殡S著機(jī)器性能和數(shù)據(jù)框架的不斷完善,用戶其實(shí)不關(guān)心底層是如何運(yùn)行的,批處理也好,流式處理也罷,能按照統(tǒng)一的模型返回結(jié)果就可以了,這就是Lambda架構(gòu)誕生的原因?,F(xiàn)在很多應(yīng)用,例如Spark和Flink,都支持這種結(jié)構(gòu),也就是數(shù)據(jù)進(jìn)入平臺(tái)后,可以選擇批處理運(yùn)行,也可以選擇流式處理運(yùn)行,但不管怎樣,一致性都是相同的。
Kylin
Kylin的主要特點(diǎn)是預(yù)計(jì)算,提前計(jì)算好各個(gè)cube,這樣的優(yōu)點(diǎn)是查詢快速,秒級(jí)延遲;缺點(diǎn)也非常明顯,靈活性不足,無(wú)法做一些 探索 式的,關(guān)聯(lián)性的數(shù)據(jù)分析。
適合的場(chǎng)景也是比較固定的,場(chǎng)景清晰的地方。
ClickHouse
Clickhouse由俄羅斯yandex公司開(kāi)發(fā)。專為在線數(shù)據(jù)分析而設(shè)計(jì)。
Clickhouse最大的特點(diǎn)首先是快 ,為了快采用了列式儲(chǔ)存,列式儲(chǔ)存更好的支持壓縮,壓縮后的數(shù)據(jù)傳輸量變小,所以更快;同時(shí)支持分片,支持分布式執(zhí)行,支持SQL。
ClickHouse很輕量級(jí),支持?jǐn)?shù)據(jù)壓縮和最終數(shù)據(jù)一致性,其數(shù)據(jù)量級(jí)在PB級(jí)別。
另外Clickhouse不是為關(guān)聯(lián)分析而生,所以多表關(guān)聯(lián)支持的不太好。
同樣Clickhouse不能修改或者刪除數(shù)據(jù),僅能用于批量刪除或修改。沒(méi)有完整的事務(wù)支持,不支持二級(jí)索引等等,缺點(diǎn)也非常明顯。
與Kylin相比ClickHouse更加的靈活,sql支持的更好,但是相比Kylin,ClickHouse不支持大并發(fā),也就是不能很多訪問(wèn)同時(shí)在線。
總之ClickHouse用于在線數(shù)據(jù)分析,支持功能簡(jiǎn)單。CPU 利用率高,速度極快。最好的場(chǎng)景用于行為統(tǒng)計(jì)分析。
Hive
Hive這個(gè)工具,大家一定很熟悉,大數(shù)據(jù)倉(cāng)庫(kù)的首選工具。可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供完整的sql查詢功能。
主要功能是可以將sql語(yǔ)句轉(zhuǎn)換為相對(duì)應(yīng)的MapReduce任務(wù)進(jìn)行運(yùn)行,這樣可能處理海量的數(shù)據(jù)批量,
Hive與HDFS結(jié)合緊密,在大數(shù)據(jù)開(kāi)始初期,提供一種直接使用sql就能訪問(wèn)HDFS的方案,擺脫了寫MapReduce任務(wù)的方式,極大的降低了大數(shù)據(jù)的門檻。
當(dāng)然Hive的缺點(diǎn)非常明顯,定義的是分鐘級(jí)別的查詢延遲,估計(jì)都是在比較理想的情況。 但是作為數(shù)據(jù)倉(cāng)庫(kù)的每日批量工具,的確是一個(gè)穩(wěn)定合格的產(chǎn)品。
Presto
Presto極大的改進(jìn)了Hive的查詢速度,而且Presto 本身并不存儲(chǔ)數(shù)據(jù),但是可以接入多種數(shù)據(jù)源,并且支持跨數(shù)據(jù)源的級(jí)聯(lián)查詢,支持包括復(fù)雜查詢、聚合、連接等等。
Presto沒(méi)有使用MapReduce,它是通過(guò)一個(gè)定制的查詢和執(zhí)行引擎來(lái)完成的。它的所有的查詢處理是在內(nèi)存中,這也是它的性能很高的一個(gè)主要原因。
Presto由于是基于內(nèi)存的,缺點(diǎn)可能是多張大表關(guān)聯(lián)操作時(shí)易引起內(nèi)存溢出錯(cuò)誤。
另外Presto不支持OLTP的場(chǎng)景,所以不要把Presto當(dāng)做數(shù)據(jù)庫(kù)來(lái)使用。
Presto相比ClickHouse優(yōu)點(diǎn)主要是多表join效果好。相比ClickHouse的支持功能簡(jiǎn)單,場(chǎng)景支持單一,Presto支持復(fù)雜的查詢,應(yīng)用范圍更廣。
Impala
Impala是Cloudera 公司推出,提供對(duì) HDFS、Hbase 數(shù)據(jù)的高性能、低延遲的交互式 SQL 查詢功能。
Impala 使用 Hive的元數(shù)據(jù), 完全在內(nèi)存中計(jì)算。是CDH 平臺(tái)首選的 PB 級(jí)大數(shù)據(jù)實(shí)時(shí)查詢分析引擎。
Impala 的缺點(diǎn)也很明顯,首先嚴(yán)重依賴Hive,而且穩(wěn)定性也稍差,元數(shù)據(jù)需要單獨(dú)的mysql/pgsql來(lái)存儲(chǔ),對(duì)數(shù)據(jù)源的支持比較少,很多nosql是不支持的。但是,估計(jì)是cloudera的國(guó)內(nèi)市場(chǎng)推廣做的不錯(cuò),Impala在國(guó)內(nèi)的市場(chǎng)不錯(cuò)。
SparkSQL
SparkSQL的前身是Shark,它將 SQL 查詢與 Spark 程序無(wú)縫集成,可以將結(jié)構(gòu)化數(shù)據(jù)作為 Spark 的 RDD 進(jìn)行查詢。
SparkSQL后續(xù)不再受限于Hive,只是兼容Hive。
SparkSQL提供了sql訪問(wèn)和API訪問(wèn)的接口。
支持訪問(wèn)各式各樣的數(shù)據(jù)源,包括Hive, Avro, Parquet, ORC, JSON, and JDBC。
Drill
Drill好像國(guó)內(nèi)使用的很少,根據(jù)定義,Drill是一個(gè)低延遲的分布式海量數(shù)據(jù)交互式查詢引擎,支持多種數(shù)據(jù)源,包括hadoop,NoSQL存儲(chǔ)等等。
除了支持多種的數(shù)據(jù)源,Drill跟BI工具集成比較好。
Druid
Druid是專為海量數(shù)據(jù)集上的做高性能 OLAP而設(shè)計(jì)的數(shù)據(jù)存儲(chǔ)和分析系統(tǒng)。
Druid 的架構(gòu)是 Lambda 架構(gòu),分成實(shí)時(shí)層和批處理層。
Druid的核心設(shè)計(jì)結(jié)合了數(shù)據(jù)倉(cāng)庫(kù),時(shí)間序列數(shù)據(jù)庫(kù)和搜索系統(tǒng)的思想,以創(chuàng)建一個(gè)統(tǒng)一的系統(tǒng),用于針對(duì)各種用例的實(shí)時(shí)分析。Druid將這三個(gè)系統(tǒng)中每個(gè)系統(tǒng)的關(guān)鍵特征合并到其接收層,存儲(chǔ)格式,查詢層和核心體系結(jié)構(gòu)中。
目前 Druid 的去重都是非精確的,Druid 適合處理星型模型的數(shù)據(jù),不支持關(guān)聯(lián)操作。也不支持?jǐn)?shù)據(jù)的更新。
Druid最大的優(yōu)點(diǎn)還是支持實(shí)時(shí)與查詢功能,解約了很多開(kāi)發(fā)工作。
Kudu
kudu是一套完全獨(dú)立的分布式存儲(chǔ)引擎,很多設(shè)計(jì)概念上借鑒了HBase,但是又跟HBase不同,不需要HDFS,通過(guò)raft做數(shù)據(jù)復(fù)制;分片策略支持keyrange和hash等多種。
數(shù)據(jù)格式在parquet基礎(chǔ)上做了些修改,支持二級(jí)索引,更像一個(gè)列式存儲(chǔ),而不是HBase schema-free的kv方式。
kudu也是cloudera主導(dǎo)的項(xiàng)目,跟Impala結(jié)合比較好,通過(guò)impala可以支持update操作。
kudu相對(duì)于原有parquet和ORC格式主要還是做增量更新的。
Hbase
Hbase使用的很廣,更多的是作為一個(gè)KV數(shù)據(jù)庫(kù)來(lái)使用,查詢的速度很快。
Hawq
Hawq是一個(gè)Hadoop原生大規(guī)模并行SQL分析引擎,Hawq采用 MPP 架構(gòu),改進(jìn)了針對(duì) Hadoop 的基于成本的查詢優(yōu)化器。
除了能高效處理本身的內(nèi)部數(shù)據(jù),還可通過(guò) PXF 訪問(wèn) HDFS、Hive、HBase、JSON 等外部數(shù)據(jù)源。HAWQ全面兼容 SQL 標(biāo)準(zhǔn),還可用 SQL 完成簡(jiǎn)單的數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)。無(wú)論是功能特性,還是性能表現(xiàn),HAWQ 都比較適用于構(gòu)建 Hadoop 分析型數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用。
一、分庫(kù)分表的必要性
分庫(kù)分表技術(shù)的使用,主要是數(shù)據(jù)庫(kù)產(chǎn)生了瓶頸,如單庫(kù)的并發(fā)訪問(wèn)或單表的查詢都超出了閾值。對(duì)系統(tǒng)使用造成一定的影響,不得已而產(chǎn)生的技術(shù)。
通過(guò)分庫(kù)分表技術(shù)來(lái)解決此類問(wèn)題,但正因?yàn)槭褂么思夹g(shù),會(huì)產(chǎn)生ACID一系列的問(wèn)題,各類中間件解決此類問(wèn)題各有各的優(yōu)勢(shì)。
提示:如場(chǎng)景無(wú)必要,千萬(wàn)不要使用分庫(kù)分表。
二、分庫(kù)分表的思路
1、垂直區(qū)分
垂直分庫(kù):從業(yè)務(wù)角度,一個(gè)庫(kù)分成多個(gè)庫(kù),如把訂單和用戶信息分成兩個(gè)庫(kù)來(lái)存儲(chǔ)。這樣的好處就是可以微服務(wù)了。每塊的業(yè)務(wù)單獨(dú)部署,互不影響,通過(guò)接口去調(diào)用。
垂直分表:把大表分成多個(gè)小表,如熱點(diǎn)數(shù)據(jù)和非熱點(diǎn)數(shù)據(jù)分開(kāi),提高查詢速度。
2、水平區(qū)分
水平分表:同一業(yè)務(wù)如數(shù)據(jù)量大了以后,根據(jù)一定的規(guī)則分為不同的表進(jìn)行存儲(chǔ)。
水平分庫(kù):如訂單分成多個(gè)庫(kù)存儲(chǔ),分解服務(wù)器壓力。
以上一般來(lái)說(shuō),垂直分庫(kù)和水平分表用的會(huì)多些。
三、分庫(kù)分表的原理分析
分庫(kù)分表常用的方案:Hash取模方案和range范圍方案;
路由算法為最主要的算法,指得是把路由的Key按照指定的算法進(jìn)行存放;
1、Hash取模方案
根據(jù)取余分配到不同的表里。要根據(jù)實(shí)際情況確認(rèn)模的大小。此方案由于平均分配,不存在熱點(diǎn)問(wèn)題,但數(shù)據(jù)遷移很復(fù)雜。
2、Range范圍方案
range根據(jù)范圍進(jìn)行劃分,如日期,大小。此方案不存在數(shù)據(jù)遷移,但存在熱點(diǎn)問(wèn)題。
四、分庫(kù)分表的技術(shù)選型
1、技術(shù)選型
解決方案主要分為4種:MySQL的分區(qū)技術(shù)、NoSql、NewSQL、MySQL的分庫(kù)分表。
(1)mysql分區(qū)技術(shù):把一張表存放在不同存儲(chǔ)文件。由于無(wú)法負(fù)載,使用較少。
(2)NoSQL(如MongoDB):如是訂單等比較重要數(shù)據(jù),強(qiáng)關(guān)聯(lián)關(guān)系,需約束一致性,不太適應(yīng)。
(3)NewSql(具有NoSQL對(duì)海量數(shù)據(jù)的存儲(chǔ)管理能力,還保持了傳統(tǒng)數(shù)據(jù)庫(kù)支持ACID和SQL等特性):如TiDB可滿足需求。
(4)MySQL的分庫(kù)分表:如使用mysql,此種方案為主流方式。
2、中間件
解決此類問(wèn)題的中間件主要為:Proxy模式、Client模式。
(1)Proxy模式
(2)Client模式
把分庫(kù)分表相關(guān)邏輯存放在客戶端,一版客戶端的應(yīng)用會(huì)引用一個(gè)jar,然后再jar中處理SQL組合、數(shù)據(jù)庫(kù)路由、執(zhí)行結(jié)果合并等相關(guān)功能。
(3)中間件的比較
由于Client模式少了一層,運(yùn)維方便,相對(duì)來(lái)說(shuō)容易些。
五、分庫(kù)分表的實(shí)踐
根據(jù)容量(當(dāng)前容量和增長(zhǎng)量)評(píng)估分庫(kù)或分表個(gè)數(shù) - 選key(均勻)- 分表規(guī)則(hash或range等)- 執(zhí)行(一般雙寫)- 擴(kuò)容問(wèn)題(盡量減少數(shù)據(jù)的移動(dòng))。
在這里我們選用中間件share-jdbc。
1、引入maven依賴
2、spring boot規(guī)則配置
行表達(dá)式標(biāo)識(shí)符可以使用${...}或$-{...},但前者與Spring本身的屬性文件占位符沖突,因此在Spring環(huán)境中使用行表達(dá)式標(biāo)識(shí)符建議使用$-{...}。
3、創(chuàng)建DataSource
通過(guò)ShardingDataSourceFactory工廠和規(guī)則配置對(duì)象獲取ShardingDataSource,ShardingDataSource實(shí)現(xiàn)自JDBC的標(biāo)準(zhǔn)接口DataSource。然后即可通過(guò)DataSource選擇使用原生JDBC開(kāi)發(fā),或者使用JPA, MyBatis等ORM工具。
NoSQL,指的是非關(guān)系型的數(shù)據(jù)庫(kù)。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)在應(yīng)付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的
SNS類型的web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問(wèn)題,而非關(guān)系型的數(shù)據(jù)庫(kù)則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。
NoSQL(NoSQL
= Not Only SQL
),意即“不僅僅是SQL”,是一項(xiàng)全新的數(shù)據(jù)庫(kù)革命性運(yùn)動(dòng),早期就有人提出,發(fā)展至2009年趨勢(shì)越發(fā)高漲。NoSQL的擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)
據(jù)存儲(chǔ),相對(duì)于鋪天蓋地的關(guān)系型數(shù)據(jù)庫(kù)運(yùn)用,這一概念無(wú)疑是一種全新的思維的注入。
從這一新興技術(shù)中選擇一款正確的NoSQL數(shù)據(jù)庫(kù)是非常具有挑戰(zhàn)性的。比一下網(wǎng)建議在選擇時(shí)考慮以下因素:
并發(fā)控制
并
發(fā)控制指的是當(dāng)多個(gè)用戶同時(shí)更新運(yùn)行時(shí),用于保護(hù)數(shù)據(jù)庫(kù)完整性的各種技術(shù)。并發(fā)機(jī)制不正確可能導(dǎo)致臟讀、幻讀和不可重復(fù)讀等此類問(wèn)題。并發(fā)控制的目的是保
證一個(gè)用戶的工作不會(huì)對(duì)另一個(gè)用戶的工作產(chǎn)生不合理的影響。在某些情況下,這些措施保證了當(dāng)用戶和其他用戶一起操作時(shí),所得的結(jié)果和她單獨(dú)操作時(shí)的結(jié)果是
一樣的。在另一些情況下,這表示用戶的工作按預(yù)定的方式受其他用戶的影響。
封鎖
就是事務(wù)T在對(duì)某個(gè)數(shù)據(jù)對(duì)象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)出請(qǐng)求,對(duì)其加鎖。加鎖后事務(wù)T就對(duì)該數(shù)據(jù)對(duì)象有了一定的控制,在事務(wù)T釋放它的鎖之前,其它的事務(wù)不能更新此數(shù)據(jù)對(duì)象。
封鎖是一次只允許一個(gè)用戶讀取或修改的一種機(jī)制,是實(shí)現(xiàn)并發(fā)控制的一個(gè)非常重要的技術(shù)。
MVCC
Multi-Version Concurrency Control多版本并發(fā)控制,維持一個(gè)數(shù)據(jù)的多個(gè)版本使讀寫操作沒(méi)有沖突。MVCC優(yōu)化了數(shù)據(jù)庫(kù)并發(fā)系統(tǒng),使系統(tǒng)在有大量并發(fā)用戶時(shí)得到最高的性能,并且可以不用關(guān)閉服務(wù)器就直接進(jìn)行熱備份。
ACID
指
數(shù)據(jù)庫(kù)事務(wù)正確執(zhí)行的四個(gè)基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久
性(Durability)。一個(gè)支持事務(wù)(Transaction)的數(shù)據(jù)庫(kù)系統(tǒng),必需要具有這四種特性,否則在事務(wù)過(guò)程(Transaction
processing)當(dāng)中無(wú)法保證數(shù)據(jù)的正確性,交易過(guò)程極可能達(dá)不到交易方的要求。
None
一些系統(tǒng)不提供原子性。
鏡像
數(shù)據(jù)庫(kù)鏡像是DBMS根據(jù)DBA的要求,自動(dòng)把整個(gè)數(shù)據(jù)庫(kù)或其中的關(guān)鍵數(shù)據(jù)復(fù)制到另一個(gè)磁盤上,每當(dāng)主數(shù)據(jù)庫(kù)更新時(shí),DBMS會(huì)自動(dòng)把更新后的數(shù)據(jù)復(fù)制過(guò)去,即DBMS自動(dòng)保證鏡像數(shù)據(jù)與主數(shù)據(jù)的一致性。
鏡像分為同步和異步。
數(shù)據(jù)存儲(chǔ)
指的是數(shù)據(jù)的物理特性怎樣被存儲(chǔ)在數(shù)據(jù)庫(kù)中。
磁盤 數(shù)據(jù)被存儲(chǔ)在硬盤驅(qū)動(dòng)器里;
GFS或谷歌文件系統(tǒng)是一個(gè)由谷歌開(kāi)發(fā)的專有的分布式文件系統(tǒng);
Hadoop是Apache軟件框架,免費(fèi)許可下支持?jǐn)?shù)據(jù)密集型分布式應(yīng)用程序;
RAM隨機(jī)存儲(chǔ)器;
插件 可以添加外部插件;
Amazon S3通過(guò)Web服務(wù)接口提供存儲(chǔ);
BDB:BDB
全稱是 “Berkeley DB”,它是MySQL具有事務(wù)能力的表類型,由Sleepycat
Software開(kāi)發(fā)。BDB表類型提供了MySQL用戶長(zhǎng)久期盼的功能,即事務(wù)控制能力。在任何RDBMS中,事務(wù)控制能力都是一種極其重要和寶貴的功
能。事務(wù)控制能力使得我們能夠確保一組命令確實(shí)已經(jīng)全部執(zhí)行成功,或者確保當(dāng)任何一個(gè)命令出現(xiàn)錯(cuò)誤時(shí)所有命令的執(zhí)行結(jié)果均被退回。
實(shí)現(xiàn)語(yǔ)言
實(shí)現(xiàn)語(yǔ)言會(huì)影響數(shù)據(jù)庫(kù)的發(fā)展速度。典型的NoSQL數(shù)據(jù)庫(kù)是用低級(jí)語(yǔ)言如C / C + +編寫的。另一方面,那些更高層次的語(yǔ)言如Java,使自定義更容易。
實(shí)現(xiàn)語(yǔ)言有:C, C++, Erlang, Java, Python
特性
考慮下列哪一個(gè)特點(diǎn)對(duì)你的數(shù)據(jù)庫(kù)是最重要的:
持久性
可用性
一致性
分區(qū)容忍性
證書(shū)類型
下面這些許可證是一個(gè)不同的開(kāi)放源碼許可的形式:
GPL:通用公共許可證
BSD:伯克利軟件分發(fā)
MPL:Mozilla公共許可證
EPL:Eclipse公共許可證
IDPL:最初的開(kāi)發(fā)者的公共許可證
LGPL:較寬松通用公共許可證
存儲(chǔ)類型
存儲(chǔ)類型是NoSQL數(shù)據(jù)庫(kù)最大的不同,是決定使用哪款數(shù)據(jù)庫(kù)的一個(gè)首要指標(biāo)。
關(guān)鍵字:支持get、put和刪除操作
按列存儲(chǔ):相對(duì)于傳統(tǒng)的按行存儲(chǔ),數(shù)據(jù)集成容易多了
面向文件系統(tǒng):存儲(chǔ)像是JSON或XML這樣的結(jié)構(gòu)化文件,很容易就能從面向?qū)ο筌浖蝎@取數(shù)據(jù)。
特點(diǎn):
它們可以處理超大量的數(shù)據(jù)。
它們運(yùn)行在便宜的PC服務(wù)器集群上。
PC集群擴(kuò)充起來(lái)非常方便并且成本很低,避免了“sharding”操作的復(fù)雜性和成本。
它們擊碎了性能瓶頸。
NoSQL的支持者稱,通過(guò)NoSQL架構(gòu)可以省去將Web或Java應(yīng)用和數(shù)據(jù)轉(zhuǎn)換成SQL友好格式的時(shí)間,執(zhí)行速度變得更快。
“SQL并非適用于所有的程序代碼,” 對(duì)于那些繁重的重復(fù)操作的數(shù)據(jù),SQL值得花錢。但是當(dāng)數(shù)據(jù)庫(kù)結(jié)構(gòu)非常簡(jiǎn)單時(shí),SQL可能沒(méi)有太大用處。
沒(méi)有過(guò)多的操作。
雖然NoSQL的支持者也承認(rèn)關(guān)系數(shù)據(jù)庫(kù)提供了無(wú)可比擬的功能集合,而且在數(shù)據(jù)完整性上也發(fā)揮絕對(duì)穩(wěn)定,他們同時(shí)也表示,企業(yè)的具體需求可能沒(méi)有那么多。
Bootstrap支持
因?yàn)镹oSQL項(xiàng)目都是開(kāi)源的,因此它們?nèi)狈?yīng)商提供的正式支持。這一點(diǎn)它們與大多數(shù)開(kāi)源項(xiàng)目一樣,不得不從社區(qū)中尋求支持。
優(yōu)點(diǎn):
易擴(kuò)展
NoSQL數(shù)據(jù)庫(kù)種類繁多,但是一個(gè)共同的特點(diǎn)都是去掉關(guān)系數(shù)據(jù)庫(kù)的關(guān)系型特性。數(shù)據(jù)之間無(wú)關(guān)系,這樣就非常容易擴(kuò)展。也無(wú)形之間,在架構(gòu)的層面上帶來(lái)了可擴(kuò)展的能力。
大數(shù)據(jù)量,高性能
NoSQL數(shù)據(jù)庫(kù)都具有非常高的讀寫性能,尤其在大數(shù)據(jù)量下,同樣表現(xiàn)優(yōu)秀。這得益于它的無(wú)關(guān)系性,數(shù)據(jù)庫(kù)的結(jié)構(gòu)簡(jiǎn)單。一般MySQL使用 Query Cache,每次表的更新Cache就失效,是一種大粒度的Cache,在針對(duì)web2.0的交互頻繁的應(yīng)用,Cache性能不高。而NoSQL的 Cache是記錄級(jí)的,是一種細(xì)粒度的Cache,所以NoSQL在這個(gè)層面上來(lái)說(shuō)就要性能高很多了。
靈活的數(shù)據(jù)模型
NoSQL無(wú)需事先為要存儲(chǔ)的數(shù)據(jù)建立字段,隨時(shí)可以存儲(chǔ)自定義的數(shù)據(jù)格式。而在關(guān)系數(shù)據(jù)庫(kù)里,增刪字段是一件非常麻煩的事情。如果是非常大數(shù)據(jù)量的表,增加字段簡(jiǎn)直就是一個(gè)噩夢(mèng)。這點(diǎn)在大數(shù)據(jù)量的web2.0時(shí)代尤其明顯。
高可用
NoSQL在不太影響性能的情況,就可以方便的實(shí)現(xiàn)高可用的架構(gòu)。比如Cassandra,HBase模型,通過(guò)復(fù)制模型也能實(shí)現(xiàn)高可用。
主要應(yīng)用:
Apache HBase
這個(gè)大數(shù)據(jù)管理平臺(tái)建立在谷歌強(qiáng)大的BigTable管理引擎基礎(chǔ)上。作為具有開(kāi)源、Java編碼、分布式多個(gè)優(yōu)勢(shì)的數(shù)據(jù)庫(kù),Hbase最初被設(shè)計(jì)應(yīng)用于Hadoop平臺(tái),而這一強(qiáng)大的數(shù)據(jù)管理工具,也被Facebook采用,用于管理消息平臺(tái)的龐大數(shù)據(jù)。
Apache Storm
用于處理高速、大型數(shù)據(jù)流的分布式實(shí)時(shí)計(jì)算系統(tǒng)。Storm為Apache Hadoop添加了可靠的實(shí)時(shí)數(shù)據(jù)處理功能,同時(shí)還增加了低延遲的儀表板、安全警報(bào),改進(jìn)了原有的操作方式,幫助企業(yè)更有效率地捕獲商業(yè)機(jī)會(huì)、發(fā)展新業(yè)務(wù)。
Apache Spark
該技術(shù)采用內(nèi)存計(jì)算,從多迭代批量處理出發(fā),允許將數(shù)據(jù)載入內(nèi)存做反復(fù)查詢,此外還融合數(shù)據(jù)倉(cāng)庫(kù)、流處理和圖計(jì)算等多種計(jì)算范式,Spark用Scala語(yǔ)言實(shí)現(xiàn),構(gòu)建在HDFS上,能與Hadoop很好的結(jié)合,而且運(yùn)行速度比MapReduce快100倍。
Apache Hadoop
該技術(shù)迅速成為了大數(shù)據(jù)管理標(biāo)準(zhǔn)之一。當(dāng)它被用來(lái)管理大型數(shù)據(jù)集時(shí),對(duì)于復(fù)雜的分布式應(yīng)用,Hadoop體現(xiàn)出了非常好的性能,平臺(tái)的靈活性使它可以運(yùn)行在商用硬件系統(tǒng),它還可以輕松地集成結(jié)構(gòu)化、半結(jié)構(gòu)化和甚至非結(jié)構(gòu)化數(shù)據(jù)集。
Apache Drill
你有多大的數(shù)據(jù)集?其實(shí)無(wú)論你有多大的數(shù)據(jù)集,Drill都能輕松應(yīng)對(duì)。通過(guò)支持HBase、Cassandra和MongoDB,Drill建立了交互式分析平臺(tái),允許大規(guī)模數(shù)據(jù)吞吐,而且能很快得出結(jié)果。
Apache Sqoop
也許你的數(shù)據(jù)現(xiàn)在還被鎖定于舊系統(tǒng)中,Sqoop可以幫你解決這個(gè)問(wèn)題。這一平臺(tái)采用并發(fā)連接,可以將數(shù)據(jù)從關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)方便地轉(zhuǎn)移到Hadoop中,可以自定義數(shù)據(jù)類型以及元數(shù)據(jù)傳播的映射。事實(shí)上,你還可以將數(shù)據(jù)(如新的數(shù)據(jù))導(dǎo)入到HDFS、Hive和Hbase中。
Apache Giraph
這是功能強(qiáng)大的圖形處理平臺(tái),具有很好可擴(kuò)展性和可用性。該技術(shù)已經(jīng)被Facebook采用,Giraph可以運(yùn)行在Hadoop環(huán)境中,可以將它直接部署到現(xiàn)有的Hadoop系統(tǒng)中。通過(guò)這種方式,你可以得到強(qiáng)大的分布式作圖能力,同時(shí)還能利用上現(xiàn)有的大數(shù)據(jù)處理引擎。
Cloudera Impala
Impala模型也可以部署在你現(xiàn)有的Hadoop群集上,監(jiān)視所有的查詢。該技術(shù)和MapReduce一樣,具有強(qiáng)大的批處理能力,而且Impala對(duì)于實(shí)時(shí)的SQL查詢也有很好的效果,通過(guò)高效的SQL查詢,你可以很快的了解到大數(shù)據(jù)平臺(tái)上的數(shù)據(jù)。
Gephi
它可以用來(lái)對(duì)信息進(jìn)行關(guān)聯(lián)和量化處理,通過(guò)為數(shù)據(jù)創(chuàng)建功能強(qiáng)大的可視化效果,你可以從數(shù)據(jù)中得到不一樣的洞察力。Gephi已經(jīng)支持多個(gè)圖表類型,而且可以在具有上百萬(wàn)個(gè)節(jié)點(diǎn)的大型網(wǎng)絡(luò)上運(yùn)行。Gephi具有活躍的用戶社區(qū),Gephi還提供了大量的插件,可以和現(xiàn)有系統(tǒng)完美的集成到一起,它還可以對(duì)復(fù)雜的IT連接、分布式系統(tǒng)中各個(gè)節(jié)點(diǎn)、數(shù)據(jù)流等信息進(jìn)行可視化分析。
MongoDB
這個(gè)堅(jiān)實(shí)的平臺(tái)一直被很多組織推崇,它在大數(shù)據(jù)管理上有極好的性能。MongoDB最初是由DoubleClick公司的員工創(chuàng)建,現(xiàn)在該技術(shù)已經(jīng)被廣泛的應(yīng)用于大數(shù)據(jù)管理。MongoDB是一個(gè)應(yīng)用開(kāi)源技術(shù)開(kāi)發(fā)的NoSQL數(shù)據(jù)庫(kù),可以用于在JSON這樣的平臺(tái)上存儲(chǔ)和處理數(shù)據(jù)。目前,紐約時(shí)報(bào)、Craigslist以及眾多企業(yè)都采用了MongoDB,幫助他們管理大型數(shù)據(jù)集。(Couchbase服務(wù)器也作為一個(gè)參考)。
十大頂尖公司:
Amazon Web Services
Forrester將AWS稱為“云霸主”,談到云計(jì)算領(lǐng)域的大數(shù)據(jù),那就不得不提到亞馬遜。該公司的Hadoop產(chǎn)品被稱為EMR(Elastic Map Reduce),AWS解釋這款產(chǎn)品采用了Hadoop技術(shù)來(lái)提供大數(shù)據(jù)管理服務(wù),但它不是純開(kāi)源Hadoop,經(jīng)過(guò)修改后現(xiàn)在被專門用在AWS云上。
Forrester稱EMR有很好的市場(chǎng)前景。很多公司基于EMR為客戶提供服務(wù),有一些公司將EMR應(yīng)用于數(shù)據(jù)查詢、建模、集成和管理。而且AWS還在創(chuàng)新,F(xiàn)orrester稱未來(lái)EMR可以基于工作量的需要自動(dòng)縮放調(diào)整大小。亞馬遜計(jì)劃為其產(chǎn)品和服務(wù)提供更強(qiáng)大的EMR支持,包括它的RedShift數(shù)據(jù)倉(cāng)庫(kù)、新公布的Kenesis實(shí)時(shí)處理引擎以及計(jì)劃中的NoSQL數(shù)據(jù)庫(kù)和商業(yè)智能工具。不過(guò)AWS還沒(méi)有自己的Hadoop發(fā)行版。
Cloudera
Cloudera有開(kāi)源Hadoop的發(fā)行版,這個(gè)發(fā)行版采用了Apache Hadoop開(kāi)源項(xiàng)目的很多技術(shù),不過(guò)基于這些技術(shù)的發(fā)行版也有很大的進(jìn)步。Cloudera為它的Hadoop發(fā)行版開(kāi)發(fā)了很多功能,包括Cloudera管理器,用于管理和監(jiān)控,以及名為Impala的SQL引擎等。Cloudera的Hadoop發(fā)行版基于開(kāi)源Hadoop,但也不是純開(kāi)源的產(chǎn)品。當(dāng)Cloudera的客戶需要Hadoop不具備的某些功能時(shí),Cloudera的工程師們就會(huì)實(shí)現(xiàn)這些功能,或者找一個(gè)擁有這項(xiàng)技術(shù)的合作伙伴。Forrester表示:“Cloudera的創(chuàng)新方法忠于核心Hadoop,但因?yàn)槠淇蓪?shí)現(xiàn)快速創(chuàng)新并積極滿足客戶需求,這一點(diǎn)使它不同于其他那些供應(yīng)商?!蹦壳?,Cloudera的平臺(tái)已經(jīng)擁有200多個(gè)付費(fèi)客戶,一些客戶在Cloudera的技術(shù)支持下已經(jīng)可以跨1000多個(gè)節(jié)點(diǎn)實(shí)現(xiàn)對(duì)PB級(jí)數(shù)據(jù)的有效管理。
Hortonworks
和Cloudera一樣,Hortonworks是一個(gè)純粹的Hadoop技術(shù)公司。與Cloudera不同的是,Hortonworks堅(jiān)信開(kāi)源Hadoop比任何其他供應(yīng)商的Hadoop發(fā)行版都要強(qiáng)大。Hortonworks的目標(biāo)是建立Hadoop生態(tài)圈和Hadoop用戶社區(qū),推進(jìn)開(kāi)源項(xiàng)目的發(fā)展。Hortonworks平臺(tái)和開(kāi)源Hadoop聯(lián)系緊密,公司管理人員表示這會(huì)給用戶帶來(lái)好處,因?yàn)樗梢苑乐贡还?yīng)商套牢(如果Hortonworks的客戶想要離開(kāi)這個(gè)平臺(tái),他們可以輕松轉(zhuǎn)向其他開(kāi)源平臺(tái))。這并不是說(shuō)Hortonworks完全依賴開(kāi)源Hadoop技術(shù),而是因?yàn)樵摴緦⑵渌虚_(kāi)發(fā)的成果回報(bào)給了開(kāi)源社區(qū),比如Ambari,這個(gè)工具就是由Hortonworks開(kāi)發(fā)而成,用來(lái)填充集群管理項(xiàng)目漏洞。Hortonworks的方案已經(jīng)得到了Teradata、Microsoft、Red Hat和SAP這些供應(yīng)商的支持。
IBM
當(dāng)企業(yè)考慮一些大的IT項(xiàng)目時(shí),很多人首先會(huì)想到IBM。IBM是Hadoop項(xiàng)目的主要參與者之一,F(xiàn)orrester稱IBM已有100多個(gè)Hadoop部署,它的很多客戶都有PB級(jí)的數(shù)據(jù)。IBM在網(wǎng)格計(jì)算、全球數(shù)據(jù)中心和企業(yè)大數(shù)據(jù)項(xiàng)目實(shí)施等眾多領(lǐng)域有著豐富的經(jīng)驗(yàn)?!癐BM計(jì)劃繼續(xù)整合SPSS分析、高性能計(jì)算、BI工具、數(shù)據(jù)管理和建模、應(yīng)對(duì)高性能計(jì)算的工作負(fù)載管理等眾多技術(shù)?!?/p>
Intel
和AWS類似,英特爾不斷改進(jìn)和優(yōu)化Hadoop使其運(yùn)行在自己的硬件上,具體來(lái)說(shuō),就是讓Hadoop運(yùn)行在其至強(qiáng)芯片上,幫助用戶打破Hadoop系統(tǒng)的一些限制,使軟件和硬件結(jié)合的更好,英特爾的Hadoop發(fā)行版在上述方面做得比較好。Forrester指出英特爾在最近才推出這個(gè)產(chǎn)品,所以公司在未來(lái)還有很多改進(jìn)的可能,英特爾和微軟都被認(rèn)為是Hadoop市場(chǎng)上的潛力股。
MapR Technologies
MapR的Hadoop發(fā)行版目前為止也許是最好的了,不過(guò)很多人可能都沒(méi)有聽(tīng)說(shuō)過(guò)。Forrester對(duì)Hadoop用戶的調(diào)查顯示,MapR的評(píng)級(jí)最高,其發(fā)行版在架構(gòu)和數(shù)據(jù)處理能力上都獲得了最高分。MapR已將一套特殊功能融入其Hadoop發(fā)行版中。例如網(wǎng)絡(luò)文件系統(tǒng)(NFS)、災(zāi)難恢復(fù)以及高可用性功能。Forrester說(shuō)MapR在Hadoop市場(chǎng)上沒(méi)有Cloudera和Hortonworks那樣的知名度,MapR要成為一個(gè)真正的大企業(yè),還需要加強(qiáng)伙伴關(guān)系和市場(chǎng)營(yíng)銷。
Microsoft
微軟在開(kāi)源軟件問(wèn)題上一直很低調(diào),但在大數(shù)據(jù)形勢(shì)下,它不得不考慮讓W(xué)indows也兼容Hadoop,它還積極投入到開(kāi)源項(xiàng)目中,以更廣泛地推動(dòng)Hadoop生態(tài)圈的發(fā)展。我們可以在微軟的公共云Windows Azure HDInsight產(chǎn)品中看到其成果。微軟的Hadoop服務(wù)基于Hortonworks的發(fā)行版,而且是為Azure量身定制的。
微軟也有一些其他的項(xiàng)目,包括名為Polybase的項(xiàng)目,讓Hadoop查詢實(shí)現(xiàn)了SQLServer查詢的一些功能。Forrester說(shuō):“微軟在數(shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù)、云、OLAP、BI、電子表格(包括PowerPivot)、協(xié)作和開(kāi)發(fā)工具市場(chǎng)上有很大優(yōu)勢(shì),而且微軟擁有龐大的用戶群,但要在Hadoop這個(gè)領(lǐng)域成為行業(yè)領(lǐng)導(dǎo)者還有很遠(yuǎn)的路要走?!?/p>
Pivotal Software
EMC和Vmware部分大數(shù)據(jù)業(yè)務(wù)分拆組合產(chǎn)生了Pivotal。Pivotal一直努力構(gòu)建一個(gè)性能優(yōu)越的Hadoop發(fā)行版,為此,Pivotal在開(kāi)源Hadoop的基礎(chǔ)上又添加了一些新的工具,包括一個(gè)名為HAWQ的SQL引擎以及一個(gè)專門解決大數(shù)據(jù)問(wèn)題的Hadoop應(yīng)用。Forrester稱Pivotal Hadoop平臺(tái)的優(yōu)勢(shì)在于它整合了Pivotal、EMC、Vmware的眾多技術(shù),Pivotal的真正優(yōu)勢(shì)實(shí)際上等于EMC和Vmware兩大公司為其撐腰。到目前為止,Pivotal的用戶還不到100個(gè),而且大多是中小型客戶。
Teradata
對(duì)于Teradata來(lái)說(shuō),Hadoop既是一種威脅也是一種機(jī)遇。數(shù)據(jù)管理,特別是關(guān)于SQL和關(guān)系數(shù)據(jù)庫(kù)這一領(lǐng)域是Teradata的專長(zhǎng)。所以像Hadoop這樣的NoSQL平臺(tái)崛起可能會(huì)威脅到Teradata。相反,Teradata接受了Hadoop,通過(guò)與Hortonworks合作,Teradata在Hadoop平臺(tái)集成了SQL技術(shù),這使Teradata的客戶可以在Hadoop平臺(tái)上方便地使用存儲(chǔ)在Teradata數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)。
AMPLab
通過(guò)將數(shù)據(jù)轉(zhuǎn)變?yōu)樾畔ⅲ覀儾趴梢岳斫馐澜?,而這也正是AMPLab所做的。AMPLab致力于機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘、數(shù)據(jù)庫(kù)、信息檢索、自然語(yǔ)言處理和語(yǔ)音識(shí)別等多個(gè)領(lǐng)域,努力改進(jìn)對(duì)信息包括不透明數(shù)據(jù)集內(nèi)信息的甄別技術(shù)。除了Spark,開(kāi)源分布式SQL查詢引擎Shark也源于AMPLab,Shark具有極高的查詢效率,具有良好的兼容性和可擴(kuò)展性。近幾年的發(fā)展使計(jì)算機(jī)科學(xué)進(jìn)入到全新的時(shí)代,而AMPLab為我們?cè)O(shè)想一個(gè)運(yùn)用大數(shù)據(jù)、云計(jì)算、通信等各種資源和技術(shù)靈活解決難題的方案,以應(yīng)對(duì)越來(lái)越復(fù)雜的各種難題。
關(guān)系數(shù)據(jù)庫(kù)經(jīng)過(guò)幾十年的發(fā)展,已經(jīng)非常成熟,但同時(shí)也存在不足:
表結(jié)構(gòu)是強(qiáng)約束的,業(yè)務(wù)變更時(shí)擴(kuò)充很麻煩。
如果對(duì)大數(shù)據(jù)量的表進(jìn)行統(tǒng)計(jì)運(yùn)算,I/O會(huì)很高,因?yàn)榧词怪会槍?duì)某列進(jìn)行運(yùn)算,也需要將整行數(shù)據(jù)讀入內(nèi)存。
全文搜索只能使用 Like 進(jìn)行整表掃描,性能非常低。
針對(duì)這些不足,產(chǎn)生了不同的 NoSQL 解決方案,在某些場(chǎng)景下比關(guān)系數(shù)據(jù)庫(kù)更有優(yōu)勢(shì),但同時(shí)也犧牲了某些特性,所以不能片面的迷信某種方案,應(yīng)將其作為 SQL 的有利補(bǔ)充。
NoSQL != No SQL,而是:
NoSQL = Not Only SQL
典型的 NoSQL 方案分為4類:
Redis 是典型,其 value 是具體的數(shù)據(jù)結(jié)構(gòu),包括 string, hash, list, set, sorted set, bitmap, hyperloglog,常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器。
以 list 為例:
LPOP key 是移除并返回隊(duì)列左邊的第一個(gè)元素。
如果用關(guān)系數(shù)據(jù)庫(kù)就比較麻煩了,需要操作:
Redis 的缺點(diǎn)主要體現(xiàn)在不支持完成的ACID事務(wù),只能保證隔離性和一致性,無(wú)法保證原子性和持久性。
最大的特點(diǎn)是 no-schema,無(wú)需在使用前定義字段,讀取一個(gè)不存在的字段也不會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤。
特點(diǎn):
以電商為例,不同商品的屬性差異很大,如冰箱和電腦,這種差異性在關(guān)系數(shù)據(jù)庫(kù)中會(huì)有很大的麻煩,而使用文檔數(shù)據(jù)庫(kù)則非常方便。
文檔數(shù)據(jù)庫(kù)的主要缺點(diǎn):
關(guān)系數(shù)據(jù)庫(kù)是按行來(lái)存儲(chǔ)的,列式數(shù)據(jù)庫(kù)是按照列來(lái)存儲(chǔ)數(shù)據(jù)。
按行存儲(chǔ)的優(yōu)勢(shì):
在某些場(chǎng)景下,這些優(yōu)勢(shì)就成為劣勢(shì)了,例如,計(jì)算超重人員的數(shù)據(jù),只需要讀取體重這一列進(jìn)行統(tǒng)計(jì)即可,但行式存儲(chǔ)會(huì)將整行數(shù)據(jù)讀取到內(nèi)存中,很浪費(fèi)。
而列式存儲(chǔ)中,只需要讀取體重這列的數(shù)據(jù)即可,I/O 將大大減少。
除了節(jié)省I/O,列式存儲(chǔ)還有更高的壓縮比,可以節(jié)省存儲(chǔ)空間。普通行式數(shù)據(jù)庫(kù)的壓縮比在 3:1 到 5:1 左右,列式數(shù)據(jù)庫(kù)在 8:1 到 30:1,因?yàn)閱蝹€(gè)列的數(shù)據(jù)相似度更高。
列式存儲(chǔ)的隨機(jī)寫效率遠(yuǎn)低于行式存儲(chǔ),因?yàn)樾惺酱鎯?chǔ)時(shí)同一行多個(gè)列都存儲(chǔ)在連續(xù)空間中,而列式存儲(chǔ)將不同列存儲(chǔ)在不連續(xù)的空間。
一般將列式存儲(chǔ)應(yīng)用在離線大數(shù)據(jù)分析統(tǒng)計(jì)場(chǎng)景,因?yàn)檫@時(shí)主要針對(duì)部分列進(jìn)行操作,而且數(shù)據(jù)寫入后無(wú)須更新。
關(guān)系數(shù)據(jù)庫(kù)通過(guò)索引進(jìn)行快速查詢,但在全文搜索的情景下,索引就不夠了,因?yàn)椋?/p>
假設(shè)有一個(gè)交友網(wǎng)站,信息表如下:
需要匹配性別、地點(diǎn)、語(yǔ)言列。
需要匹配性別、地點(diǎn)、愛(ài)好列。
實(shí)際搜索中,各種排列組合非常多,關(guān)系數(shù)據(jù)庫(kù)很難支持。
全文搜索引擎是使用 倒排索引 技術(shù),建立單詞到文檔的索引,例如上面的表信息建立倒排索引:
所以特別適合根據(jù)關(guān)鍵詞來(lái)查詢文檔內(nèi)容。
上面介紹了幾種典型的NoSQL方案,及各自的適用場(chǎng)景和特點(diǎn),您可以根據(jù)實(shí)際需求進(jìn)行選擇。
當(dāng)前題目:nosql技術(shù)選型,nosql的技術(shù)特點(diǎn)
文章起源:http://chinadenli.net/article18/dscsogp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、建站公司、云服務(wù)器、企業(yè)建站、定制開(kāi)發(fā)、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)