溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發(fā)布時間:2021-11-29 10:21:08 來源:億速云 閱讀:145 作者:柒染 欄目:數(shù)據(jù)庫

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

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

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

一、NoSQL的出現(xiàn)

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

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

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

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

二、NoSQL的定義

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

三、NoSQL的分類

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

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

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

四、NoSQL的特征

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

表2 NoSQL的特征

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

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

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

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

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

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

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

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

1.創(chuàng)建表

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

(1)ORACLE中的語法為:

create table mytable

(

info  varchar(30) not null

);

(2)HBase中的語法為

create 'mytable', 'cf'

該命令創(chuàng)建了一個有一個列族(“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”列對應的數(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'

該命令用***的值覆蓋了舊的值,就相當于將原數(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'

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

6.刪表

如果要刪除表,那么:

(1)ORACLE中的語法為:

drop table mytable;

(2)HBase中的語法為:

disable 'mytable'

drop 'mytable'

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

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

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

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機器的安裝HBase的用戶下,依次執(zhí)行“dos2unix command.sh”和“chmod 777command.sh”命令來轉換文件格式和對文件賦權限。

第三步,執(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

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

七、總結

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

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

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

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

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

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

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

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

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI