偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

后SQL時(shí)代,DBA們不用查詢(xún)語(yǔ)句用什么?

原創(chuàng)
數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù) 新聞
數(shù)據(jù)庫(kù)技術(shù)中應(yīng)用得最多的是查詢(xún)語(yǔ)句,那么在后SQL時(shí)代,DBA們是不是該放棄查詢(xún)語(yǔ)句?不用查詢(xún)語(yǔ)句我們用什么呢?

【51CTO外電頭條】今天對(duì)于傳統(tǒng)的數(shù)據(jù)庫(kù)解決方案,我們面臨著很多有關(guān)擴(kuò)展性的問(wèn)題,而 NoSQL 運(yùn)動(dòng)將這些問(wèn)題的根源歸罪于 SQL 查詢(xún)語(yǔ)言。

我認(rèn)為,如此多的人將 SQL 視為“萬(wàn)惡之源”的主要原因在于這樣一個(gè)事實(shí):查詢(xún)語(yǔ)言通常被緊密地融入了數(shù)據(jù)庫(kù)的部署之中。因此,當(dāng)提到“NoSQL”時(shí),我們本質(zhì)上是在對(duì)非擴(kuò)展的傳統(tǒng) RDBMS 部署說(shuō)“不”(No)。

對(duì)于查詢(xún)語(yǔ)言大量的替代方案,這一說(shuō)法也是適用的。這些替代語(yǔ)言中的每一個(gè)都致力于解決傳統(tǒng) SQL 查詢(xún)方案所欠缺的某一個(gè)方面,比如文檔模型,或者提供一種更為簡(jiǎn)潔的方案,如鍵/值(Key/Value)程序。

曾與我交談過(guò)的大多數(shù)人對(duì)于這個(gè)話(huà)題都相當(dāng)困惑,并且往往交替地使用查詢(xún)語(yǔ)言和結(jié)構(gòu)。所以,我想通過(guò)本文拋磚引玉,希望能夠?yàn)?NoSQL 環(huán)境中每個(gè)查詢(xún)術(shù)語(yǔ)所表示的含義提供一個(gè)簡(jiǎn)單快捷的概述。之后,我還會(huì)試圖通過(guò)講解來(lái)消除某些常見(jiàn)的誤解。

[[13094]]

后 SQL 世界中常用的查詢(xún)語(yǔ)法

以下為 NoSQL 語(yǔ)境中一些常用的查詢(xún)語(yǔ)法。

鍵/值查詢(xún):正如字面含義,鍵/值查詢(xún)應(yīng)該是最為基本的查詢(xún)格式。每個(gè)數(shù)據(jù)項(xiàng)關(guān)聯(lián)一個(gè)唯一的標(biāo)識(shí)符(鍵)。在 NoSQL 語(yǔ)境中,memcache 是這種接口最常用的部署方式之一。使用 memcache 執(zhí)行一個(gè)復(fù)雜的查詢(xún)時(shí),最為常見(jiàn)的模式是將查詢(xún)延遲至用作搜索引擎的底層數(shù)據(jù)庫(kù)。這些查詢(xún)的結(jié)果是一個(gè)鍵或一組鍵,然后利用這些鍵通過(guò) memecache 數(shù)據(jù)存儲(chǔ)來(lái)執(zhí)行相應(yīng)的值提取。這種方式在后 SQL 語(yǔ)境中獲得了新的發(fā)展動(dòng)力,原因在于它們自身能夠相當(dāng)自然地與分區(qū)和分發(fā)概念相融合,而分區(qū)和分發(fā)正是使得數(shù)據(jù)存儲(chǔ)具有可擴(kuò)展性的關(guān)鍵所在。換句話(huà)說(shuō),當(dāng)人們別無(wú)選擇時(shí),他們?cè)敢庥么蠖鄶?shù)傳統(tǒng) RDBMS 所提供的強(qiáng)大的查詢(xún)概念來(lái)交換可擴(kuò)展性,即使只提供基本的查詢(xún)支持。

基于文檔的查詢(xún):文檔查詢(xún)這種模型的主要用途在于搜索引擎,在這中環(huán)境中最常見(jiàn)的是存儲(chǔ)不同類(lèi)型的溫度,即使每個(gè)文檔代表的是截然不同的對(duì)象。在 NoSQL 環(huán)境中,文檔并不是我們?cè)谒阉饕嬷幸?jiàn)到的那種典型的 Word 或 PowerPoint 文件,而是 Jason 或 XML 形式的對(duì)象,或者關(guān)聯(lián)一組鍵/值的二進(jìn)制對(duì)象,比如 Cassandra。使用 SQL 術(shù)語(yǔ)來(lái)描述,文檔可視為一個(gè) blob(一種數(shù)據(jù)類(lèi)型),關(guān)聯(lián)著一組鍵,每一個(gè)鍵獨(dú)立地進(jìn)行索引并且維持著至該 blob 的引用。每個(gè) blob 可以是不同的類(lèi)型(表),每個(gè) blob 可以具有不同的關(guān)聯(lián)索引組(鍵)。通過(guò)關(guān)聯(lián)索引來(lái)完成匹配工作。結(jié)果組通常包含多種類(lèi)型,每個(gè)又包含不同的數(shù)據(jù)組。由于索引和 blob 無(wú)需與行和表的嚴(yán)格結(jié)構(gòu)保持一致,所以將其稱(chēng)為“非結(jié)構(gòu)的”(schemaless),也就是說(shuō),它可以具有同一類(lèi)型的不同版本,并且向新的表中添加字段時(shí)無(wú)需修改任何表而且無(wú)需更新數(shù)據(jù)的舊版本。支持這種文檔模型的數(shù)據(jù)庫(kù)有 CouchDB 和 MongoDB。

模板查詢(xún):模板查詢(xún)?cè)?JavaSpaces 和 Hibernate 較新的版本中常常用到。利用基于模板的匹配,你可以根據(jù)類(lèi)類(lèi)型或遺傳等級(jí)抓取一個(gè)對(duì)象,以及該對(duì)象的屬性值。對(duì)于更為面向?qū)ο蟮哪0迤ヅ洌氵€可以根據(jù)圖標(biāo)(graph)屬性中的特定項(xiàng)來(lái)執(zhí)行匹配任務(wù)。在支持 JavaSpaces 模板查詢(xún)模型的解決方案中,GigaSpaces 是較為知名的實(shí)現(xiàn)方式之一。

映射/化簡(jiǎn)(Map/Reduce):映射/化簡(jiǎn)通常用于執(zhí)行分布式數(shù)據(jù)存儲(chǔ)上的聚集查詢(xún)。一個(gè)簡(jiǎn)單的例子,比如 Max 或 Sum。對(duì)于這種情況,查詢(xún)?nèi)蛐枰诿總€(gè)分區(qū)(映射)中獨(dú)立的執(zhí)行,然后進(jìn)行聚集后返回客戶(hù)端(化簡(jiǎn))。隱式的映射/化簡(jiǎn)可以進(jìn)行某個(gè)查詢(xún)請(qǐng)求并隱式地傳播該查詢(xún)的執(zhí)行??蛻?hù)端獲取聚集查詢(xún),就像它是一個(gè)單一查詢(xún)。顯式的模型運(yùn)行用戶(hù)執(zhí)行自由格式(free-form)的代碼,你可以控制映射模型(哪個(gè)調(diào)用指向哪些數(shù)據(jù))、每個(gè)節(jié)點(diǎn)(即任務(wù))中運(yùn)行的代碼以及結(jié)果。在一個(gè)常規(guī)的 Hadoop 部署中,映射/化簡(jiǎn)常常通過(guò)顯式某些來(lái)進(jìn)行。類(lèi)似 Hive 和 Pig 的框架提供給了一個(gè)概要模型,可以隱式地處理進(jìn)程。

SQL 查詢(xún):讓我們思考一下,SQL 也算是另一種形式的動(dòng)態(tài)語(yǔ)言,專(zhuān)門(mén)用于復(fù)雜的數(shù)據(jù)管理。使用 SQL,通??稍诒砗托兄袑?duì)數(shù)據(jù)進(jìn)行排序。SQL 中的某些查詢(xún)語(yǔ)法,比如 Join、分布式事務(wù),以及為了獲得擴(kuò)展性而較常用的反模式語(yǔ)法。大體上來(lái)講,正是 SQL 語(yǔ)法的這一點(diǎn)將 SQL 與有限的可擴(kuò)展性關(guān)聯(lián)起來(lái)了。支持 SQL 的 NoSQL 實(shí)現(xiàn)有使用 JPA 的 Google Bigtable、Hive/Hadoop、MongoDB 和 GigaSpaces。有關(guān)具體含義我將在下文進(jìn)一步詳述。

YeSQL:?jiǎn)栴}與 SQL 無(wú)關(guān)!

上文已經(jīng)講述了查詢(xún)格式背后的某些概念,某個(gè)結(jié)論現(xiàn)在更為明朗了——過(guò)錯(cuò)的確與 SQL 無(wú)關(guān)。與許多語(yǔ)言一樣,SQL 為你提供的是一根足夠長(zhǎng)的繩子,如果你喜歡,甚至可以那它來(lái)做懸梁自盡之用。幾乎每種語(yǔ)言都是如此。如果想要將數(shù)據(jù)模型設(shè)計(jì)為與分布式模型相匹配,你會(huì)看到 SQL 在管理數(shù)據(jù)方面具有非常強(qiáng)大的功能。比如 Hive/Pig/Hbase 和谷歌的 JPA/Bigtable 就是很好的例子。對(duì)于這兩種情況,底層的數(shù)據(jù)存儲(chǔ)是基于可擴(kuò)展的鍵/值存儲(chǔ),但前端查詢(xún)語(yǔ)言剛好是基于 SQL 的。MongoDB 瞄準(zhǔn)的也是類(lèi)似的目標(biāo),主要的區(qū)別在于,這種數(shù)據(jù)庫(kù)提供類(lèi)似 SQL 的支持但并不完全遵守任何現(xiàn)有的標(biāo)準(zhǔn)。

請(qǐng)注意:事關(guān)架構(gòu)!

諸如 Hive/HBase 以及 JPA/Bigtable 之類(lèi)的 NoSQL 實(shí)現(xiàn),可以視為很好的示例:下一代數(shù)據(jù)庫(kù)如何同時(shí)支持線(xiàn)性擴(kuò)展和 SQL API 接口。

關(guān)鍵之處在于將查詢(xún)語(yǔ)法與底層數(shù)據(jù)存儲(chǔ)剝離開(kāi)來(lái),如下圖所示:

谷歌的 Bigtable 在 NoSQL 數(shù)據(jù)存儲(chǔ)只是提供對(duì) SQL API 的支持

融合正在發(fā)生

上周作者參加了 Hadoop summit 會(huì)議。Hadoop 提供的環(huán)境類(lèi)似一個(gè)非常通用的培養(yǎng)基,這將為其帶來(lái)一個(gè)生機(jī)勃勃的微生物系統(tǒng)。今天已經(jīng)存在許多新的框架,它們?cè)诓樵?xún)和處理方面對(duì) Hadoop 數(shù)據(jù)管理方式進(jìn)行了不同等級(jí)的萃取,比如 Hive、Cascading 和 Pig。許多框架提供的工具已經(jīng)遠(yuǎn)遠(yuǎn)超出了 Hadoop 創(chuàng)建者最初的設(shè)想。

這讓我想到一點(diǎn):我們可以利用上文提到的分離模式,從而在與 SQl 的連接中提供對(duì)穩(wěn)定模型的支持。也可以這樣表述,我認(rèn)為大多數(shù)數(shù)據(jù)庫(kù)中領(lǐng)先者將支持所有上述語(yǔ)法,并且用戶(hù)將不用只是因?yàn)槟硞€(gè)數(shù)據(jù)庫(kù)實(shí)現(xiàn)支持某種查詢(xún)語(yǔ)言而選擇它。

我們已經(jīng)在動(dòng)態(tài)語(yǔ)言上看到類(lèi)似的趨勢(shì)。以前,一門(mén)語(yǔ)言必須提供完整的工具、編譯器、庫(kù)和支持該語(yǔ)言的開(kāi)發(fā)工具,這讓選擇某種語(yǔ)言成為一種重要的戰(zhàn)略。而今天,Java 中的 JVM 或 .Net 中的 CLR 提供了相同的環(huán)境,能夠支持更多的同一 JVM 運(yùn)行時(shí)之上的動(dòng)態(tài)語(yǔ)言。類(lèi)似的例子,比如:Groovy 和 Java 或 Jruby。

***的話(huà)

在本文中我一直在講,SQL 事實(shí)上是一個(gè)相當(dāng)不錯(cuò)的查詢(xún)語(yǔ)言并且將繼續(xù)在后 SQL 世界中發(fā)揮重大的作用。不過(guò),一家通吃的情況不會(huì)繼續(xù)下去。數(shù)據(jù)管理的世界將建立在多種工具盒數(shù)據(jù)管理語(yǔ)言之上,每種語(yǔ)言或工具提供將某種特定的功能或服務(wù)。最為理想的情況,無(wú)論數(shù)據(jù)存儲(chǔ)方式如何,我們應(yīng)能夠使用任何查詢(xún)語(yǔ)言來(lái)訪問(wèn)任何數(shù)據(jù)。例如,我應(yīng)能夠使用文檔模型來(lái)存儲(chǔ) JSON 對(duì)象,而且,無(wú)論任何時(shí)候,我都應(yīng)能夠使用 SQL 查詢(xún)語(yǔ)法或簡(jiǎn)單的鍵/值 API 來(lái)查詢(xún)這個(gè) JSON 對(duì)象。

原文標(biāo)題:YeSQL: An Overview of the Various Query Semantics in the Post Onl

【編輯推薦】

  1. 用NoSQL來(lái)替代MySQL在Digg中的原因
  2. MongoDB CEO談NoSQL的大數(shù)據(jù)量處理能力
  3. 51CTO專(zhuān)訪蓋國(guó)強(qiáng):NoSQL很火 但還需市場(chǎng)檢驗(yàn)
  4. 詳解NoSQL數(shù)據(jù)庫(kù)使用實(shí)例
  5. 云計(jì)算時(shí)代NoSQL當(dāng)?shù)?關(guān)系數(shù)據(jù)庫(kù)日薄西山 
     
責(zé)任編輯:楊鵬飛 來(lái)源: 51CTO
相關(guān)推薦

2010-09-07 09:45:48

SQL語(yǔ)句

2022-06-26 06:32:28

MySQL數(shù)據(jù)庫(kù)維護(hù)

2014-12-15 09:59:28

LinuxApache

2011-07-07 14:22:24

SQL查詢(xún)update

2018-01-12 15:32:55

大數(shù)據(jù)DBA數(shù)據(jù)庫(kù)管理員

2010-09-26 15:23:24

SQL語(yǔ)句

2010-10-21 14:27:35

SQL Server時(shí)

2010-10-21 10:28:13

SQL Server查

2010-09-07 10:56:58

SQL語(yǔ)句

2019-07-26 09:22:20

工具代碼開(kāi)發(fā)

2010-10-21 12:16:11

SQL Server查

2010-07-13 17:13:55

SQL ServerS

2013-12-25 09:07:24

微軟鮑爾默諾基亞

2017-09-07 16:20:39

SQL查詢(xún)語(yǔ)句查詢(xún)優(yōu)化

2010-09-07 10:35:38

SQL語(yǔ)句

2019-11-06 09:30:35

SQL查詢(xún)語(yǔ)句數(shù)據(jù)庫(kù)

2011-10-24 22:13:37

DBASQL Server

2010-09-28 14:33:13

SQL語(yǔ)句

2010-09-25 16:32:02

SQL語(yǔ)句

2009-04-10 09:06:16

DBA數(shù)據(jù)庫(kù)云計(jì)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)