久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

NoSQL數(shù)據(jù)庫概覽及其與SQL語法的比較是怎樣的

142次閱讀
沒有評論

共計(jì) 4238 個(gè)字符,預(yù)計(jì)需要花費(fèi) 11 分鐘才能閱讀完成。

NoSQL 數(shù)據(jù)庫概覽及其與 SQL 語法的比較是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面丸趣 TV 小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

HBase 是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng),同時(shí)也是知名的 NoSQL 數(shù)據(jù)庫之一。NoSQL 數(shù)據(jù)庫的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用的難題。

丸趣 TV 小編對 NoSQL 數(shù)據(jù)庫的定義、分類、特征、當(dāng)前比較流行的 NoSQL 數(shù)據(jù)庫系統(tǒng)等進(jìn)行了簡單的介紹,并對 NoSQL 和 SQL 語法進(jìn)行了簡單的比較,為大家對 NoSQL 數(shù)據(jù)庫的學(xué)習(xí)提供了有益的參考。

一、NoSQL 的出現(xiàn)

關(guān)系型數(shù)據(jù)庫系統(tǒng)多年來在解決數(shù)據(jù)存儲(chǔ)、服務(wù)和處理問題方面取得了巨大的成功。一些大型的公司使用關(guān)系型數(shù)據(jù)庫建立了自己的系統(tǒng),如聯(lián)機(jī)事務(wù)處理系統(tǒng)和后端分析應(yīng)用系統(tǒng)。聯(lián)機(jī)事務(wù)處理 (OLTP) 系統(tǒng)用來實(shí)時(shí)記錄交易信息。對這類系統(tǒng)的期望是能夠快速返回響應(yīng)信息 (一般在毫秒級)。聯(lián)機(jī)分析處理(OLAP) 系統(tǒng)用來分析查詢所儲(chǔ)存的數(shù)據(jù)。OLAP 屬于商業(yè)智能的范疇,數(shù)據(jù)需要研究、處理和分析,以便收集信息,進(jìn)一步驅(qū)動(dòng)商業(yè)決策。

關(guān)系型數(shù)據(jù)庫的內(nèi)部設(shè)計(jì)由關(guān)系算法決定,這些系統(tǒng)需要預(yù)先定義一個(gè)模式 (schema) 和數(shù)據(jù)要遵守的類型。SQL 是與這些系統(tǒng)交互的標(biāo)準(zhǔn)方式。但在對象 - 關(guān)系不匹配問題出現(xiàn)的場合,SQL 就不是表達(dá)訪問模式的 *** 方式了。例如目前炙手可熱的大數(shù)據(jù)領(lǐng)域,關(guān)系型數(shù)據(jù)庫不能很好地工作。

有關(guān)大數(shù)據(jù)常見定義包括:***,大數(shù)據(jù)意味著數(shù)據(jù)足夠大,為了從這些數(shù)據(jù)中獲得一些真知灼見,你不得不研究它;第二,大數(shù)據(jù)就是不再適用于單臺(tái)機(jī)器的數(shù)據(jù)。這些觀點(diǎn)并不完整,我們需要用一種根本上不同的方式來考慮數(shù)據(jù),從如何驅(qū)動(dòng)商業(yè)價(jià)值的角度來考慮數(shù)據(jù),這種數(shù)據(jù)就是大數(shù)據(jù)。

在大數(shù)據(jù)領(lǐng)域中,系統(tǒng)需要能夠適應(yīng)不同種類的數(shù)據(jù)格式和數(shù)據(jù)源,不需要預(yù)先嚴(yán)格定義模式,并且能夠處理大規(guī)模數(shù)據(jù)。這樣,NoSQL 就出現(xiàn)了。

二、NoSQL 的定義

NoSQL(NoSQL= Not Only SQL),意即“不僅僅是 SQL”,是一項(xiàng)全新的數(shù)據(jù)庫革命性運(yùn)動(dòng)。NoSQL 的擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)據(jù)存儲(chǔ)。大多數(shù)數(shù)據(jù)庫技術(shù)不能保證支持 ACID(原子性、一致性、隔離性和持久性),而且大部分技術(shù)都是開源項(xiàng)目,這些技術(shù)作為整體被稱為 NoSQL。

三、NoSQL 的分類

一般將 NoSQL 數(shù)據(jù)庫分為四大類:鍵值 (Key-Value) 存儲(chǔ)數(shù)據(jù)庫、列存儲(chǔ)數(shù)據(jù)庫、文檔型數(shù)據(jù)庫和圖形 (Graph) 數(shù)據(jù)庫。它們的數(shù)據(jù)模型、優(yōu)缺點(diǎn)、典型應(yīng)用場景如表 1 所示。

表 1 四大 NoSQL 數(shù)據(jù)庫分析

四、NoSQL 的特征

NoSQL 數(shù)據(jù)庫并沒有一個(gè)統(tǒng)一的架構(gòu),但是它們都普遍存在表 2 所示的一些共同特征。

表 2 NoSQL 的特征

五、常見的 NoSQL 數(shù)據(jù)庫

比較適合采用 NoSQL 數(shù)據(jù)庫的場合是:(1)數(shù)據(jù)模型比較簡單;(2)需要靈活性更強(qiáng)的 IT 系統(tǒng);(3)對數(shù)據(jù)庫性能要求較高;(4)不需要高度的數(shù)據(jù)一致性;(5)對于給定 key,比較容易映射復(fù)雜值的環(huán)境。

常見的 NoSQL 數(shù)據(jù)庫如表 3 所示。

表 3 常見的 NoSQL 數(shù)據(jù)庫

六、NoSQL 和 SQL 語法的簡單比較

前面介紹了 NoSQL 的基本情況,下面以 HBase 和 ORACLE 為例,對 NoSQL 和 SQL 的語法進(jìn)行簡單的比較。HBase 數(shù)據(jù)庫被認(rèn)為是安全特性最完善的 NoSQL 數(shù)據(jù)庫產(chǎn)品之一,它被證實(shí)是一個(gè)強(qiáng)大的工具,尤其是在已經(jīng)使用 Hadoop 的場合。如今,它已經(jīng)是 Apache*** 項(xiàng)目,有著眾多的開發(fā)人員和興旺的用戶社區(qū)。

1. 創(chuàng)建表

如果要?jiǎng)?chuàng)建一個(gè)表“mytable”,其中包含了一個(gè)“info”字段,那么:

(1)ORACLE 中的語法為:

create table mytable

(

info  varchar(30) not null

);

(2)HBase 中的語法為:

create mytable , cf

該命令創(chuàng)建了一個(gè)有一個(gè)列族 (“cf”) 的表“mytable”。

2. 寫數(shù)據(jù)

如果要向表中寫入數(shù)據(jù)“hello hbase”,那么:

(1)ORACLE 中的語法為:

insert into mytable(info) values(hello hbase

(2)HBase 中的語法為:

put mytable , first , cf:info , hello hbase

該命令在“mytable”表的“first”行中的“cf:info”列對應(yīng)的數(shù)據(jù)單元中插入“hello hbase”。

3. 讀 (查) 數(shù)據(jù)

如果要從表中讀出單條數(shù)據(jù),那么:

(1)ORACLE 中的語法為:

select * from mytable where info = hello hbase

(2)HBase 中的語法為:

get mytable , first

該命令輸出了該行的數(shù)據(jù)單元。

如果要從表中讀出所有數(shù)據(jù),那么:

(1)ORACLE 中的語法為:

select * from mytable;

(2)HBase 中的語法為:

scan mytable

該命令輸出了所有數(shù)據(jù)。

4. 刪數(shù)據(jù)

如果要從表中刪除數(shù)據(jù),那么:

(1)ORACLE 中的語法為:

delete from mytable where info = hello hbase

(2)HBase 中的語法為:

put mytable , first , cf:info , hello hbase1

該命令用 *** 的值覆蓋了舊的值,就相當(dāng)于將原數(shù)據(jù)刪除了。

5. 修改數(shù)據(jù)

如果要在表中修改數(shù)據(jù),那么:

(1)ORACLE 中的語法為:

update mytable set info = hello hbase1 where info = hellohbase

(2)HBase 中的語法為:

put mytable , first , cf:info , hello hbase1

該命令用 *** 的值覆蓋了舊的值,就相當(dāng)于修改了原數(shù)據(jù)。

6. 刪表

如果要?jiǎng)h除表,那么:

(1)ORACLE 中的語法為:

drop table mytable;

(2)HBase 中的語法為:

disable mytable

drop mytable

該命令先將表“disable”掉,然后再“drop”掉。

我們可以看到,HBase 的語法比較的簡單,因此完全可以將上述所有命令放到一個(gè) shell 腳本中,讓命令批量執(zhí)行。下面,我們來具體操作一下:

*** 步,編寫名為“command.sh”的腳本,其內(nèi)容如下:

exec /root/zhouzx/hbase-1.0.1/bin/hbase shell  EOF create  mytable ,  cf  put  mytable ,  first ,  cf:info ,  hello hbase  get  mytable ,  first  scan  mytable  put  mytable ,  first ,  cf:info ,  hello hbase1  disable  mytable  drop  mytable  EOF

第二步,將該腳本上傳到 Linux 機(jī)器的安裝 HBase 的用戶下,依次執(zhí)行“dos2unix command.sh”和“chmod 777command.sh”命令來轉(zhuǎn)換文件格式和對文件賦權(quán)限。

第三步,執(zhí)行“./command.sh”命令,在 Linux 界面上,我們可以看到如下輸出信息:

HBase Shell; enter  help RETURN  for list of supportedcommands. Type  exit RETURN  to leave the HBase Shell Version 1.0.1, r66a93c09df3b12ff7b86c39bc8475c60e15af82d, Fri Apr17 22:14:06 PDT 2015 create  mytable ,  cf  0 row(s) in 0.6660 seconds Hbase::Table - mytable put  mytable ,  first ,  cf:info ,  hello hbase  0 row(s) in 0.1140 seconds get  mytable ,  first  COLUMN CELL cf:info timestamp=1435807200326, value=hello hbase 1 row(s) in 0.0440 seconds scan  mytable  ROW COLUMN+CELL first column=cf:info,timestamp=1435807200326, value=hello hbase 1 row(s) in 0.0210 seconds put  mytable ,  first ,  cf:info ,  hello hbase1  0 row(s) in 0.0040 seconds disable  mytable  0 row(s) in 1.1930 seconds drop  mytable  0 row(s) in 0.1940 seconds

整個(gè)腳本執(zhí)行過程不過幾秒鐘,但我們之前提到的所有 HBase 命令都包括其中了,由此可見批處理的威力。大家一定要好好體會(huì)一下。

七、總結(jié)

本文對 NoSQL 進(jìn)行了全面的介紹,并比較了它與 SQL 語法之間的不同。盡管大多數(shù) NoSQL 數(shù)據(jù)存儲(chǔ)系統(tǒng)都已被部署到實(shí)際應(yīng)用中,但仍存在以下挑戰(zhàn)性問題需要解決:

第一,已有 key-value 數(shù)據(jù)庫產(chǎn)品大多是面向特定應(yīng)用自治構(gòu)建的,缺乏通用性。

第二,已有產(chǎn)品支持的功能有限(不支持事務(wù)特性),導(dǎo)致其應(yīng)用具有一定的局限性。

第三,已有一些研究成果和改進(jìn)的 NoSQL 數(shù)據(jù)存儲(chǔ)系統(tǒng),但它們都是針對不同應(yīng)用需求而提出的相應(yīng)解決方案,很少從全局考慮系統(tǒng)的通用性,也沒有形成系列化的研究成果。

第四,缺乏類似關(guān)系數(shù)據(jù)庫所具有的強(qiáng)有力的理論 (如 armstrong 公理系統(tǒng))、技術(shù)(如成熟的基于啟發(fā)式的優(yōu)化策略、兩段封鎖協(xié)議等)、標(biāo)準(zhǔn)規(guī)范(如 SQL 語言) 的支持。

第五,很多 NoSQL 數(shù)據(jù)庫沒有提供內(nèi)建的安全機(jī)制。

隨著云計(jì)算、移動(dòng)互聯(lián)網(wǎng)等技術(shù)的發(fā)展,大數(shù)據(jù)廣泛存在,同時(shí)也出現(xiàn)了許多云環(huán)境下的新型應(yīng)用,如社交網(wǎng)絡(luò)、移動(dòng)服務(wù)、協(xié)作編輯等。這些新型應(yīng)用對海量數(shù)據(jù)管理或稱云數(shù)據(jù)管理系統(tǒng)也提出了新的需求,NoSQL 數(shù)據(jù)庫在這些方面有大展身手的機(jī)會(huì)。我們有理由相信,NoSQL 數(shù)據(jù)庫的明天會(huì)更加的美好!

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝您對丸趣 TV 的支持。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-19發(fā)表,共計(jì)4238字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 高雄县| 竹北市| 西吉县| 栖霞市| 綦江县| 锡林郭勒盟| 天等县| 昌图县| 阳信县| 府谷县| 定安县| 章丘市| 贵州省| 林甸县| 双江| 安仁县| 衡阳县| 新邵县| 开化县| 皮山县| 汉源县| 喀喇| 临朐县| 大悟县| 建平县| 呼玛县| 施秉县| 札达县| 容城县| 邛崃市| 钟祥市| 三门县| 棋牌| 武鸣县| 佳木斯市| 柳林县| 青神县| 元江| 青川县| 福泉市| 唐山市|