成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

NoSQL數據庫概覽及其與SQL語法的比較

數據庫 其他數據庫
隨著云計算、移動互聯網等技術的發展,大數據廣泛存在,同時也出現了許多云環境下的新型應用,如社交網絡、移動服務、協作編輯等。這些新型應用對海量數據管理或稱云數據管理系統也提出了新的需求,NoSQL數據庫在這些方面有大展身手的機會。本文對NoSQL數據庫的定義、分類、特征、當前比較流行的NoSQL數據庫系統等進行了簡單的介紹,并對NoSQL和SQL語法進行了簡單的比較,為大家對NoSQL數據庫的學習提供了有益的參考。

文章摘要

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

本文對NoSQL數據庫的定義、分類、特征、當前比較流行的NoSQL數據庫系統等進行了簡單的介紹,并對NoSQL和SQL語法進行了簡單的比較,為大家對NoSQL數據庫的學習提供了有益的參考。

 

一、NoSQL的出現

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

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

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

在大數據領域中,系統需要能夠適應不同種類的數據格式和數據源,不需要預先嚴格定義模式,并且能夠處理大規模數據。這樣,NoSQL就出現了。

 

二、NoSQL的定義

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

 

三、NoSQL的分類

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

表1 四大NoSQL數據庫分析

 

 

 

 

四、NoSQL的特征

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

表2 NoSQL的特征

 

 

 

 

五、常見的NoSQL數據庫

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

常見的NoSQL數據庫如表3所示。

表3常見的NoSQL數據庫

 

 

 

#p#

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

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

1.創建表

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

(1)ORACLE中的語法為:

create table mytable

(

info varchar(30) not null

);

(2)HBase中的語法為

create 'mytable', 'cf'

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

 

2.寫數據

如果要向表中寫入數據“hello hbase”,那么:

(1)ORACLE中的語法為:

insert into mytable(info) values('hello hbase');

(2)HBase中的語法為:

put 'mytable', 'first', 'cf:info', 'hello hbase'

該命令在“mytable”表的“first”行中的“cf:info”列對應的數據單元中插入“hello hbase”。

 

3.讀(查)數據

如果要從表中讀出單條數據,那么:

(1)ORACLE中的語法為:

select * from mytable where info = 'hello hbase';

(2)HBase中的語法為:

get 'mytable', 'first'

該命令輸出了該行的數據單元。

 

如果要從表中讀出所有數據,那么:

(1)ORACLE中的語法為:

select * from mytable;

(2)HBase中的語法為:

scan 'mytable'

該命令輸出了所有數據。

 

4.刪數據

如果要從表中刪除數據,那么:

(1)ORACLE中的語法為:

delete from mytable where info = 'hello hbase';

(2)HBase中的語法為:

put 'mytable', 'first', 'cf:info', 'hello hbase1'

該命令用***的值覆蓋了舊的值,就相當于將原數據刪除了。

 

5.修改數據

如果要在表中修改數據,那么:

(1)ORACLE中的語法為:

update mytable set info = 'hello hbase1' where info = 'hellohbase';

(2)HBase中的語法為:

put 'mytable', 'first', 'cf:info', 'hello hbase1'

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

 

6.刪表

如果要刪除表,那么:

(1)ORACLE中的語法為:

drop table mytable;

(2)HBase中的語法為:

disable 'mytable'

drop 'mytable'

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

 

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

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

  1. exec /root/zhouzx/hbase-1.0.1/bin/hbase shell <<EOF 
  2.  
  3. create 'mytable''cf' 
  4.  
  5. put 'mytable''first''cf:info''hello hbase' 
  6.  
  7. get 'mytable''first' 
  8.  
  9. scan 'mytable' 
  10.  
  11. put 'mytable''first''cf:info''hello hbase1' 
  12.  
  13. disable 'mytable' 
  14.  
  15. drop 'mytable' 
  16.  
  17. EOF 

 

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

 

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

 

  1. HBase Shell; enter 'help<RETURN>' for list of supportedcommands. 
  2.  
  3. Type "exit<RETURN>" to leave the HBase Shell 
  4.  
  5. Version 1.0.1, r66a93c09df3b12ff7b86c39bc8475c60e15af82d, Fri Apr17 22:14:06 PDT 2015 
  6.  
  7.   
  8.  
  9. create 'mytable''cf' 
  10.  
  11. 0 row(s) in 0.6660 seconds 
  12.  
  13.   
  14.  
  15. Hbase::Table - mytable 
  16.  
  17. put 'mytable''first''cf:info''hello hbase' 
  18.  
  19. 0 row(s) in 0.1140 seconds 
  20.  
  21.   
  22.  
  23. get 'mytable''first' 
  24.  
  25. COLUMN                           CELL                                                                                           
  26.  
  27.  cf:info                         timestamp=1435807200326, value=hello hbase                                                     
  28.  
  29. 1 row(s) in 0.0440 seconds 
  30.  
  31.   
  32.  
  33. scan 'mytable' 
  34.  
  35. ROW                  COLUMN+CELL                                                                                     
  36.  
  37.  first                   column=cf:info,timestamp=1435807200326, value=hello hbase                                     
  38.  
  39. 1 row(s) in 0.0210 seconds 
  40.  
  41.   
  42.  
  43. put 'mytable''first''cf:info''hello hbase1' 
  44.  
  45. 0 row(s) in 0.0040 seconds 
  46.  
  47.   
  48.  
  49. disable 'mytable' 
  50.  
  51. 0 row(s) in 1.1930 seconds 
  52.  
  53.   
  54.  
  55. drop 'mytable' 
  56.  
  57. 0 row(s) in 0.1940 seconds 

 

 

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

 

#p#

七、總結

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

***,已有key-value數據庫產品大多是面向特定應用自治構建的,缺乏通用性。

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

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

第四,缺乏類似關系數據庫所具有的強有力的理論(如armstrong公理系統)、技術(如成熟的基于啟發式的優化策略、兩段封鎖協議等)、標準規范(如SQL語言)的支持。

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

 

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

博文出處:http://blog.csdn.net/zhouzhaoxiong1227/article/details/46725459

責任編輯:Ophira 來源: 個人專欄
相關推薦

2022-02-14 09:00:00

SQLNoSQL數據庫

2024-02-02 10:51:53

2011-08-25 16:50:20

SQL ServerAccessASP

2023-12-20 12:49:05

索引數據檢索數據庫

2011-05-13 09:46:20

MySQLNoSQL

2019-07-13 15:00:17

結構化SQLNOSQL數據庫

2010-04-29 09:35:31

Oracle數據庫

2021-01-28 09:00:00

SQL數據庫NoSQL

2021-09-28 09:25:05

NoSQL數據庫列式數據庫

2019-07-03 10:00:16

NoSQLNewSQL數據庫

2011-10-09 09:38:03

OracleNoSQL

2024-04-02 00:00:00

SQL數據庫數據

2021-10-26 08:00:00

數據庫架構技術

2009-07-06 08:36:28

NoSQL關系數據庫

2016-02-22 10:10:48

SqoopSQLNoSQL

2011-08-02 16:27:50

SQLNoSQL

2020-10-31 22:01:40

NoSQL數據庫

2017-05-25 10:11:46

數據庫令牌節點

2011-08-18 10:21:50

SQL ServerDATEPART

2022-06-27 17:01:34

NoSQ數據庫SQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久综合成人精品亚洲另类欧美 | 一区二区三区精品视频 | 成人福利在线 | 欧美综合一区二区 | 精品国产乱码久久久久久久久 | 天天综合操 | 久草新在线 | 自拍偷拍视频网 | av黄色在线 | 二区不卡 | 91久久精品一区二区二区 | 红色av社区| 日韩电影免费在线观看中文字幕 | 欧美精品 在线观看 | 国产成人福利在线观看 | 狠狠干综合视频 | 日日骚av| 国产性网 | 欧美一区二区三区在线 | av黄色在线观看 | 国产精品亚洲视频 | 欧美日韩国产高清 | 一区二区精品视频 | 国产精品一区一区三区 | 国产美女视频黄a视频免费 国产精品福利视频 | 欧洲亚洲一区二区三区 | 天天操狠狠操 | 日韩在线欧美 | 亚洲综合免费 | 亚洲狠狠爱 | 免费a v网站| 精品国产欧美一区二区三区成人 | 国产精品视屏 | 久久久久免费观看 | 亚洲精品久久久久久久久久久久久 | 亚洲欧美另类在线 | 精品视频一区二区 | 综合网伊人 | 在线观看国产h | 久久9999久久 | 一级a性色生活片久久毛片 一级特黄a大片 |