欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Nosql存儲引擎,nosql數(shù)據(jù)庫的技術(shù)特點

什么是MySQL存儲引擎?

MySQL 可能是最著名的 關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS),作為一款免費開源軟件開發(fā),最初由 MYSQL AB 公司提供支持,但現(xiàn)在歸 Oracle 所有。

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、做網(wǎng)站、滄縣網(wǎng)絡(luò)推廣、小程序制作、滄縣網(wǎng)絡(luò)營銷、滄縣企業(yè)策劃、滄縣品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供滄縣建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:chinadenli.net

在 MySQL 中,用于表的“存儲引擎”決定了數(shù)據(jù)的處理方式。有幾種可用的存儲引擎,但最常用的是 InnoDB 和 MyISAM 。

在本文中,我們將了解它們的顯著特征以及它們之間的主要區(qū)別。

在本教程中,您將學(xué)習(xí):

在我們討論兩個主要 MySQL 存儲引擎之間的特性和區(qū)別之前,先來了解一下什么是存儲引擎?

存儲引擎,也稱為“ 表處理程序 ”,基本上是解釋和管理與數(shù)據(jù)庫表的 SQL 查詢相關(guān)的操作的數(shù)據(jù)庫部分。

在最新版本的 MySQL 中,可以使用“ 可插拔 ”架構(gòu)來組織和管理存儲引擎,存在多種存儲引擎,但最常用的兩個是 InnoDB 和 MyISAM 。

要獲得我們正在使用的數(shù)據(jù)庫中可用存儲引擎的列表,我們所要做的就是發(fā)出一個簡單的 SQL 查詢,因此我們需要做的第一件事就是打開一個 MySQL 交互式提示并使用數(shù)據(jù)庫用戶登錄及其密碼:

如果登錄成功,提示將變?yōu)閙ysql,在這里,我們可以運行我們的 SQL 查詢來可視化可用的存儲引擎:

執(zhí)行查詢后,我們應(yīng)該獲得類似于以下內(nèi)容的結(jié)果:

在上表中,作為查詢結(jié)果生成,我們可以通過查看Support每行列中的值輕松了解支持哪些存儲引擎,“YES”值表示存儲引擎可用,否則“NO”。相反,同一列中的“DEFAULT”值表示相應(yīng)的引擎(在本例中為 InnoDB)是服務(wù)器使用的默認引擎。

“ Transactions ”和“ Savepoints ”列中存在的值分別表示存儲引擎是否支持事務(wù)和回滾。正如我們通過查看表可以看到的,只有 InnoDB 引擎可以。

關(guān)于存儲引擎的信息存在于“ INFORMATION_SCHEMA ”數(shù)據(jù)庫的“ ENGINES ”表中,因此我們也可以發(fā)出標(biāo)準(zhǔn)的“SELECT”查詢來獲取我們需要的數(shù)據(jù):

我們將獲得與上面看到的相同的結(jié)果。

讓我們看看兩個最常用的存儲引擎 InnoDB 和 MyISAM 之間的主要特性和區(qū)別是什么。

正如我們已經(jīng)說過的, InnoDB 是自 MySQL 以來的默認存儲引擎5.5。

此存儲引擎的一些主要功能如下:

對事務(wù)的支持提供了一種安全的方式來執(zhí)行多個查詢以保持數(shù)據(jù)一致。

當(dāng)多個修改數(shù)據(jù)的操作被執(zhí)行并且我們想要確保它們只有在所有操作都成功并且沒有錯誤發(fā)生時才有效時,我們想要使用事務(wù)。

典型的處理方式是啟動事務(wù)并執(zhí)行查詢:如果出現(xiàn)錯誤,則執(zhí)行回滾,否則提交更改。

當(dāng)使用 InnoDB 數(shù)據(jù)鎖定發(fā)生在行級別時,因此在事務(wù)期間鎖定的數(shù)據(jù)量是有限的。

InnoDB 有兩種類型的鎖:

一個共享鎖允許誰擁有它讀取該行的交易,而一個排它鎖允許交易執(zhí)行其修改行的操作,所以要更新或刪除數(shù)據(jù)。

當(dāng)一個事務(wù)在某行上獲得共享鎖,而另一個事務(wù)需要相同的鎖類型時,立即授予;但是,如果第二個事務(wù)在同一行上請求排他鎖,它將不得不等待。

如果第一個事務(wù)持有該行的排他鎖,則第二個事務(wù)將不得不等待該鎖被釋放以獲得共享鎖或排他鎖。

外鍵是一個非常重要的特性,因為它們可用于基于表之間的邏輯關(guān)系來強制執(zhí)行數(shù)據(jù)完整性。想象一下,我們的數(shù)據(jù)庫中有三個表(假設(shè)它被稱為“testdb”):一個user包含現(xiàn)有用戶的job表,一個注冊所有可用作業(yè)的user_job表,以及一個用于表示用戶和用戶之間存在的多對多關(guān)系的表。作業(yè)(一個用戶可以有多個作業(yè),多個作業(yè)可以與同一個用戶關(guān)聯(lián))。

該user_job表就是所謂的連接表或關(guān)聯(lián)表,因為它的唯一目的是表示用戶-工作關(guān)聯(lián)。該表有兩列,一個叫user_id和其他job id。表中會存在兩個外鍵約束,強制執(zhí)行以下規(guī)則:user_id列中的值只能引用表id列中的值,列中的user值job_id必須引用表id列中的現(xiàn)有值job.

這將強制執(zhí)行完整性,因為僅允許現(xiàn)有用戶和作業(yè)的 ID 存在于關(guān)聯(lián)表中。刪除涉及表中一個或多個關(guān)聯(lián)的用戶或作業(yè)user_job也是不允許的,除非為相應(yīng)的外鍵設(shè)置了CASCADE DELETE規(guī)則。在這種情況下,當(dāng)刪除用戶或作業(yè)時,它們所涉及的關(guān)系也將被刪除。

MyISAM 曾經(jīng)是默認的 MySQL 存儲引擎,但已被 InnoDB 取代。使用此引擎時,數(shù)據(jù)鎖定發(fā)生在表級別,因此執(zhí)行操作時鎖定的數(shù)據(jù)更多。

與 InnoDB 不同,MyISAM 不支持事務(wù)回滾和提交,因此必須手動執(zhí)行回滾。MyISAM 和 InnoDB 之間的另一個很大區(qū)別是前者不支持外鍵。MyISAM 更簡單,并且在對有限數(shù)據(jù)集進行讀取密集型操作時可能具有優(yōu)勢(有爭議)。

在表上使用 MyISAM 時,會設(shè)置一個標(biāo)志,指示該表是否需要修復(fù),例如在突然關(guān)閉之后。稍后可以使用適當(dāng)?shù)墓ぞ邎?zhí)行表修復(fù)。

如何知道特定表使用了什么存儲引擎?我們所要做的就是發(fā)出一個簡單的查詢。

例如,要知道user我們在前面的例子中提到的表使用了什么存儲引擎,我們將運行:

注意上面的查詢我們使用了G,為了讓查詢結(jié)果垂直顯示,優(yōu)化空間。執(zhí)行查詢后,我們將獲得以下結(jié)果:

在這種情況下,通過查看“Engine”列中存儲的值,我們可以清楚地看到該表使用的是“InnoDB”引擎。獲取相同信息的另一種方法是INFORMATION_SCHEMA.TABLES直接查詢表:

上面的查詢將只返回表使用的引擎:

如果我們稍微更改查詢,我們可以獲得數(shù)據(jù)庫中所有表名的列表以及它們使用的引擎:

如果我們要為一個表設(shè)置一個特定的存儲引擎,我們可以在創(chuàng)建時指定它。例如,假設(shè)我們正在創(chuàng)建job表,并且出于某種原因我們想要使用 MyISAM 存儲引擎。我們將發(fā)出以下 SQL 查詢:

相反,如果我們想要更改用于已存在表的存儲引擎,我們只需要使用ALTERSQL 語句。假設(shè)我們要將上一個示例中創(chuàng)建的“job”表所使用的存儲引擎更改為 InnoDB;我們會運行:

在本教程中,我們學(xué)習(xí)了什么是數(shù)據(jù)庫存儲引擎,并且我們看到了兩個最常用的 MySQL 引擎的主要特性: InnoDB 和 MyISAM 。

我們看到了如何檢查哪些引擎可用、哪些引擎用于表以及如何使用 SQL 查詢設(shè)置和修改表引擎。

為什么要使用NoSQL?NOSQL的優(yōu)勢

這次的NoSQL專欄系列將先整體介紹NoSQL,然后介紹如何把NoSQL運用到自己的項目中合適的場景中,還會適當(dāng)?shù)胤治鲆恍┏晒Π咐M谐晒κ褂肗oSQL經(jīng)驗的朋友給我提供一些線索和信息。

NoSQL概念隨著web2.0的快速發(fā)展,非關(guān)系型、分布式數(shù)據(jù)存儲得到了快速的發(fā)展,它們不保證關(guān)系數(shù)據(jù)的ACID特性。NoSQL概念在2009年被提了出來。NoSQL最常見的解釋是“non-relational”,“Not Only SQL”也被很多人接受。(“NoSQL”一詞最早于1998年被用于一個輕量級的關(guān)系數(shù)據(jù)庫的名字。)

NoSQL被我們用得最多的當(dāng)數(shù)key-value存儲,當(dāng)然還有其他的文檔型的、列存儲、圖型數(shù)據(jù)庫、xml數(shù)據(jù)庫等。在NoSQL概念提出之前,這些數(shù)據(jù)庫就被用于各種系統(tǒng)當(dāng)中,但是卻很少用于web互聯(lián)網(wǎng)應(yīng)用。比如cdb、qdbm、bdb數(shù)據(jù)庫。

傳統(tǒng)關(guān)系數(shù)據(jù)庫的瓶頸

傳統(tǒng)的關(guān)系數(shù)據(jù)庫具有不錯的性能,高穩(wěn)定型,久經(jīng)歷史考驗,而且使用簡單,功能強大,同時也積累了大量的成功案例。在互聯(lián)網(wǎng)領(lǐng)域,MySQL成為了絕對靠前的王者,毫不夸張的說,MySQL為互聯(lián)網(wǎng)的發(fā)展做出了卓越的貢獻。

在90年代,一個網(wǎng)站的訪問量一般都不大,用單個數(shù)據(jù)庫完全可以輕松應(yīng)付。在那個時候,更多的都是靜態(tài)網(wǎng)頁,動態(tài)交互類型的網(wǎng)站不多。

到了最近10年,網(wǎng)站開始快速發(fā)展。火爆的論壇、博客、sns、微博逐漸引領(lǐng)web領(lǐng)域的潮流。在初期,論壇的流量其實也不大,如果你接觸網(wǎng)絡(luò)比較早,你可能還記得那個時候還有文本型存儲的論壇程序,可以想象一般的論壇的流量有多大。

Memcached+MySQL

后來,隨著訪問量的上升,幾乎大部分使用MySQL架構(gòu)的網(wǎng)站在數(shù)據(jù)庫上都開始出現(xiàn)了性能問題,web程序不再僅僅專注在功能上,同時也在追求性能。程序員們開始大量的使用緩存技術(shù)來緩解數(shù)據(jù)庫的壓力,優(yōu)化數(shù)據(jù)庫的結(jié)構(gòu)和索引。開始比較流行的是通過文件緩存來緩解數(shù)據(jù)庫壓力,但是當(dāng)訪問量繼續(xù)增大的時候,多臺web機器通過文件緩存不能共享,大量的小文件緩存也帶了了比較高的IO壓力。在這個時候,Memcached就自然的成為一個非常時尚的技術(shù)產(chǎn)品。

Memcached作為一個獨立的分布式的緩存服務(wù)器,為多個web服務(wù)器提供了一個共享的高性能緩存服務(wù),在Memcached服務(wù)器上,又發(fā)展了根據(jù)hash算法來進行多臺Memcached緩存服務(wù)的擴展,然后又出現(xiàn)了一致性hash來解決增加或減少緩存服務(wù)器導(dǎo)致重新hash帶來的大量緩存失效的弊端。當(dāng)時,如果你去面試,你說你有Memcached經(jīng)驗,肯定會加分的。

Mysql主從讀寫分離

由于數(shù)據(jù)庫的寫入壓力增加,Memcached只能緩解數(shù)據(jù)庫的讀取壓力。讀寫集中在一個數(shù)據(jù)庫上讓數(shù)據(jù)庫不堪重負,大部分網(wǎng)站開始使用主從復(fù)制技術(shù)來達到讀寫分離,以提高讀寫性能和讀庫的可擴展性。Mysql的master-slave模式成為這個時候的網(wǎng)站標(biāo)配了。

分表分庫隨著web2.0的繼續(xù)高速發(fā)展,在Memcached的高速緩存,MySQL的主從復(fù)制,讀寫分離的基礎(chǔ)之上,這時MySQL主庫的寫壓力開始出現(xiàn)瓶頸,而數(shù)據(jù)量的持續(xù)猛增,由于MyISAM使用表鎖,在高并發(fā)下會出現(xiàn)嚴重的鎖問題,大量的高并發(fā)MySQL應(yīng)用開始使用InnoDB引擎代替MyISAM。同時,開始流行使用分表分庫來緩解寫壓力和數(shù)據(jù)增長的擴展問題。這個時候,分表分庫成了一個熱門技術(shù),是面試的熱門問題也是業(yè)界討論的熱門技術(shù)問題。也就在這個時候,MySQL推出了還不太穩(wěn)定的表分區(qū),這也給技術(shù)實力一般的公司帶來了希望。雖然MySQL推出了MySQL Cluster集群,但是由于在互聯(lián)網(wǎng)幾乎沒有成功案例,性能也不能滿足互聯(lián)網(wǎng)的要求,只是在高可靠性上提供了非常大的保證。

MySQL的擴展性瓶頸

在互聯(lián)網(wǎng),大部分的MySQL都應(yīng)該是IO密集型的,事實上,如果你的MySQL是個CPU密集型的話,那么很可能你的MySQL設(shè)計得有性能問題,需要優(yōu)化了。大數(shù)據(jù)量高并發(fā)環(huán)境下的MySQL應(yīng)用開發(fā)越來越復(fù)雜,也越來越具有技術(shù)挑戰(zhàn)性。分表分庫的規(guī)則把握都是需要經(jīng)驗的。雖然有像淘寶這樣技術(shù)實力強大的公司開發(fā)了透明的中間件層來屏蔽開發(fā)者的復(fù)雜性,但是避免不了整個架構(gòu)的復(fù)雜性。分庫分表的子庫到一定階段又面臨擴展問題。還有就是需求的變更,可能又需要一種新的分庫方式。

MySQL數(shù)據(jù)庫也經(jīng)常存儲一些大文本字段,導(dǎo)致數(shù)據(jù)庫表非常的大,在做數(shù)據(jù)庫恢復(fù)的時候就導(dǎo)致非常的慢,不容易快速恢復(fù)數(shù)據(jù)庫。比如1000萬4KB大小的文本就接近40GB的大小,如果能把這些數(shù)據(jù)從MySQL省去,MySQL將變得非常的小。

關(guān)系數(shù)據(jù)庫很強大,但是它并不能很好的應(yīng)付所有的應(yīng)用場景。MySQL的擴展性差(需要復(fù)雜的技術(shù)來實現(xiàn)),大數(shù)據(jù)下IO壓力大,表結(jié)構(gòu)更改困難,正是當(dāng)前使用MySQL的開發(fā)人員面臨的問題。

NOSQL的優(yōu)勢易擴展NoSQL數(shù)據(jù)庫種類繁多,但是一個共同的特點都是去掉關(guān)系數(shù)據(jù)庫的關(guān)系型特性。數(shù)據(jù)之間無關(guān)系,這樣就非常容易擴展。也無形之間,在架構(gòu)的層面上帶來了可擴展的能力。

大數(shù)據(jù)量,高性能

NoSQL數(shù)據(jù)庫都具有非常高的讀寫性能,尤其在大數(shù)據(jù)量下,同樣表現(xiàn)優(yōu)秀。這得益于它的無關(guān)系性,數(shù)據(jù)庫的結(jié)構(gòu)簡單。一般MySQL使用Query Cache,每次表的更新Cache就失效,是一種大粒度的Cache,在針對web2.0的交互頻繁的應(yīng)用,Cache性能不高。而NoSQL的Cache是記錄級的,是一種細粒度的Cache,所以NoSQL在這個層面上來說就要性能高很多了。

靈活的數(shù)據(jù)模型

NoSQL無需事先為要存儲的數(shù)據(jù)建立字段,隨時可以存儲自定義的數(shù)據(jù)格式。而在關(guān)系數(shù)據(jù)庫里,增刪字段是一件非常麻煩的事情。如果是非常大數(shù)據(jù)量的表,增加字段簡直就是一個噩夢。這點在大數(shù)據(jù)量的web2.0時代尤其明顯。

高可用NoSQL在不太影響性能的情況,就可以方便的實現(xiàn)高可用的架構(gòu)。比如Cassandra,HBase模型,通過復(fù)制模型也能實現(xiàn)高可用。

總結(jié)NoSQL數(shù)據(jù)庫的出現(xiàn),彌補了關(guān)系數(shù)據(jù)(比如MySQL)在某些方面的不足,在某些方面能極大的節(jié)省開發(fā)成本和維護成本。

MySQL和NoSQL都有各自的特點和使用的應(yīng)用場景,兩者的緊密結(jié)合將會給web2.0的數(shù)據(jù)庫發(fā)展帶來新的思路。

newsql和nosql的區(qū)別和聯(lián)系

在大數(shù)據(jù)時代,“多種架構(gòu)支持多類應(yīng)用”成為數(shù)據(jù)庫行業(yè)應(yīng)對大數(shù)據(jù)的基本思路,數(shù)據(jù)庫行業(yè)出現(xiàn)互為補充的三大陣營,適用于事務(wù)處理應(yīng)用的OldSQL、適用于數(shù)據(jù)分析應(yīng)用的NewSQL和適用于互聯(lián)網(wǎng)應(yīng)用的NoSQL。但在一些復(fù)雜的應(yīng)用場景中,單一數(shù)據(jù)庫架構(gòu)都不能完全滿足應(yīng)用場景對海量結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的存儲管理、復(fù)雜分析、關(guān)聯(lián)查詢、實時性處理和控制建設(shè)成本等多方面的需要,因此不同架構(gòu)數(shù)據(jù)庫混合部署應(yīng)用成為滿足復(fù)雜應(yīng)用的必然選擇。不同架構(gòu)數(shù)據(jù)庫混合使用的模式可以概括為:OldSQL+NewSQL、OldSQL+NoSQL、NewSQL+NoSQL三種主要模式。下面通過三個案例對不同架構(gòu)數(shù)據(jù)庫的混合應(yīng)用部署進行介紹。

OldSQL+NewSQL 在數(shù)據(jù)中心類應(yīng)用中混合部署

采用OldSQL+NewSQL模式構(gòu)建數(shù)據(jù)中心,在充分發(fā)揮OldSQL數(shù)據(jù)庫的事務(wù)處理能力的同時,借助NewSQL在實時性、復(fù)雜分析、即席查詢等方面的獨特優(yōu)勢,以及面對海量數(shù)據(jù)時較強的擴展能力,滿足數(shù)據(jù)中心對當(dāng)前“熱”數(shù)據(jù)事務(wù)型處理和海量歷史“冷”數(shù)據(jù)分析兩方面的需求。OldSQL+NewSQL模式在數(shù)據(jù)中心類應(yīng)用中的互補作用體現(xiàn)在,OldSQL彌補了NewSQL不適合事務(wù)處理的不足,NewSQL彌補了OldSQL在海量數(shù)據(jù)存儲能力和處理性能方面的缺陷。

商業(yè)銀行數(shù)據(jù)中心采用OldSQL+NewSQL混合部署方式搭建,OldSQL數(shù)據(jù)庫滿足各業(yè)務(wù)系統(tǒng)數(shù)據(jù)的歸檔備份和事務(wù)型應(yīng)用,NewSQL MPP數(shù)據(jù)庫集群對即席查詢、多維分析等應(yīng)用提供高性能支持,并且通過MPP集群架構(gòu)實現(xiàn)應(yīng)對海量數(shù)據(jù)存儲的擴展能力。

商業(yè)銀行數(shù)據(jù)中心存儲架構(gòu)

與傳統(tǒng)的OldSQL模式相比,商業(yè)銀行數(shù)據(jù)中心采用OldSQL+NewSQL混合搭建模式,數(shù)據(jù)加載性能提升3倍以上,即席查詢和統(tǒng)計分析性能提升6倍以上。NewSQL MPP的高可擴展性能夠應(yīng)對新的業(yè)務(wù)需求,可隨著數(shù)據(jù)量的增長采用集群方式構(gòu)建存儲容量更大的數(shù)據(jù)中心。

OldSQL+NoSQL 在互聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用中混合部署

在互聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用中采用OldSQL+NoSQL混合模式,能夠很好的解決互聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用對海量結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)進行存儲和快速處理的需求。在諸如大型電子商務(wù)平臺、大型SNS平臺等互聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用場景中,OldSQL在應(yīng)用中負責(zé)高價值密度結(jié)構(gòu)化數(shù)據(jù)的存儲和事務(wù)型處理,NoSQL在應(yīng)用中負責(zé)存儲和處理海量非結(jié)構(gòu)化的數(shù)據(jù)和低價值密度結(jié)構(gòu)化數(shù)據(jù)。OldSQL+NoSQL模式在互聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用中的互補作用體現(xiàn)在,OldSQL彌補了NoSQL在ACID特性和復(fù)雜關(guān)聯(lián)運算方面的不足,NoSQL彌補了OldSQL在海量數(shù)據(jù)存儲和非結(jié)構(gòu)化數(shù)據(jù)處理方面的缺陷。

數(shù)據(jù)魔方是淘寶網(wǎng)的一款數(shù)據(jù)產(chǎn)品,主要提供行業(yè)數(shù)據(jù)分析、店鋪數(shù)據(jù)分析。淘寶數(shù)據(jù)產(chǎn)品在存儲層采用OldSQL+NoSQL混合模式,由基于MySQL的分布式關(guān)系型數(shù)據(jù)庫集群MyFOX和基于HBase的NoSQL存儲集群Prom組成。由于OldSQL強大的語義和關(guān)系表達能力,在應(yīng)用中仍然占據(jù)著重要地位,目前存儲在MyFOX中的統(tǒng)計結(jié)果數(shù)據(jù)已經(jīng)達到10TB,占據(jù)著數(shù)據(jù)魔方總數(shù)據(jù)量的95%以上。另一方面,NoSQL作為SQL的有益補充,解決了OldSQL數(shù)據(jù)庫無法解決的全屬性選擇器等問題。

淘寶海量數(shù)據(jù)產(chǎn)品技術(shù)架構(gòu)

基于OldSQL+NoSQL混合架構(gòu)的特點,數(shù)據(jù)魔方目前已經(jīng)能夠提供壓縮前80TB的數(shù)據(jù)存儲空間,支持每天4000萬的查詢請求,平均響應(yīng)時間在28毫秒,足以滿足未來一段時間內(nèi)的業(yè)務(wù)增長需求。

NewSQL+NoSQL 在行業(yè)大數(shù)據(jù)應(yīng)用中混合部署

行業(yè)大數(shù)據(jù)與互聯(lián)網(wǎng)大數(shù)據(jù)的區(qū)別在于行業(yè)大數(shù)據(jù)的價值密度更高,并且對結(jié)構(gòu)化數(shù)據(jù)的實時處理、復(fù)雜的多表關(guān)聯(lián)分析、即席查詢、數(shù)據(jù)強一致性等都比互聯(lián)網(wǎng)大數(shù)據(jù)有更高的要求。行業(yè)大數(shù)據(jù)應(yīng)用場景主要是分析類應(yīng)用,如:電信、金融、政務(wù)、能源等行業(yè)的決策輔助、預(yù)測預(yù)警、統(tǒng)計分析、經(jīng)營分析等。

在行業(yè)大數(shù)據(jù)應(yīng)用中采用NewSQL+NoSQL混合模式,充分利用NewSQL在結(jié)構(gòu)化數(shù)據(jù)分析處理方面的優(yōu)勢,以及NoSQL在非結(jié)構(gòu)數(shù)據(jù)處理方面的優(yōu)勢,實現(xiàn)NewSQL與NoSQL的功能互補,解決行業(yè)大數(shù)據(jù)應(yīng)用對高價值結(jié)構(gòu)化數(shù)據(jù)的實時處理、復(fù)雜的多表關(guān)聯(lián)分析、即席查詢、數(shù)據(jù)強一致性等要求,以及對海量非結(jié)構(gòu)化數(shù)據(jù)存儲和精確查詢的要求。在應(yīng)用中,NewSQL承擔(dān)高價值密度結(jié)構(gòu)化數(shù)據(jù)的存儲和分析處理工作,NoSQL承擔(dān)存儲和處理海量非結(jié)構(gòu)化數(shù)據(jù)和不需要關(guān)聯(lián)分析、Ad-hoc查詢較少的低價值密度結(jié)構(gòu)化數(shù)據(jù)的工作。

當(dāng)前電信運營商在集中化BI系統(tǒng)建設(shè)過程中面臨著數(shù)據(jù)規(guī)模大、數(shù)據(jù)處理類型多等問題,并且需要應(yīng)對大量的固定應(yīng)用,以及占統(tǒng)計總數(shù)80%以上的突發(fā)性臨時統(tǒng)計(ad-hoc)需求。在集中化BI系統(tǒng)的建設(shè)中采用NewSQL+NoSQL混搭的模式,充分利用NewSQL在復(fù)雜分析、即席查詢等方面處理性能的優(yōu)勢,及NoSQL在非結(jié)構(gòu)化數(shù)據(jù)處理和海量數(shù)據(jù)存儲方面的優(yōu)勢,實現(xiàn)高效低成本。

集中化BI系統(tǒng)數(shù)據(jù)存儲架構(gòu)

集中化BI系統(tǒng)按照數(shù)據(jù)類型和處理方式的不同,將結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)分別存儲在不同的系統(tǒng)中:非結(jié)構(gòu)化數(shù)據(jù)在Hadoop平臺上存儲與處理;結(jié)構(gòu)化、不需要關(guān)聯(lián)分析、Ad-hoc查詢較少的數(shù)據(jù)保存在NoSQL數(shù)據(jù)庫或Hadoop平臺;結(jié)構(gòu)化、需要關(guān)聯(lián)分析或經(jīng)常ad-hoc查詢的數(shù)據(jù),保存在NewSQL MPP數(shù)據(jù)庫中,短期高價值數(shù)據(jù)放在高性能平臺,中長期放在低成本產(chǎn)品中。

結(jié)語

當(dāng)前信息化應(yīng)用的多樣性、復(fù)雜性,以及三種數(shù)據(jù)庫架構(gòu)各自所具有的優(yōu)勢和局限性,造成任何一種架構(gòu)的數(shù)據(jù)庫都不能完全滿足應(yīng)用需求,因此不同架構(gòu)數(shù)據(jù)庫混合使用,從而彌補其他架構(gòu)的不足成為必然選擇。根據(jù)應(yīng)用場景采用不同架構(gòu)數(shù)據(jù)庫進行組合搭配,充分發(fā)揮每種架構(gòu)數(shù)據(jù)庫的特點和優(yōu)勢,并且與其他架構(gòu)數(shù)據(jù)庫形成互補,完全涵蓋應(yīng)用需求,保證數(shù)據(jù)資源的最優(yōu)化利用,將成為未來一段時期內(nèi)信息化應(yīng)用主要采用的解決方式。

目前在國內(nèi)市場上,OldSQL主要為Oracle、IBM等國外數(shù)據(jù)庫廠商所壟斷,達夢、金倉等國產(chǎn)廠商仍處于追趕狀態(tài);南大通用憑借國產(chǎn)新型數(shù)據(jù)庫GBase 8a異軍突起,與EMC的Greenplum和HP的Vertica躋身NewSQL市場三強;NoSQL方面用戶則大多采用Hadoop開源方案。

為什么不用NoSQL

當(dāng)為大家描述我們的整體服務(wù)架構(gòu)時,最常見的兩個問題是:

為什么采用結(jié)構(gòu)化方式將數(shù)據(jù)存儲在SQL數(shù)據(jù)庫中,而不使用NoSQL平臺?

為什么自己維護數(shù)據(jù)中心,而不將Evernote托管到云服務(wù)提供商?

這兩個問題都很有趣,我們先來探討第一個。

對特定的應(yīng)用而言,相比一個單一的SQL實例,一個現(xiàn)代的鍵值存儲引擎具備顯著的性能優(yōu)勢和可擴展性。

CREATE TABLE notebooks ( id int UNSIGNED NOT NULL PRIMARY KEY, guid binary(16) NOT NULL, user_id int UNSIGNED NOT NULL, name varchar(100) COLLATE utf8_bin NOT NULL, ... ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE notes ( id int UNSIGNED NOT NULL PRIMARY KEY, guid binary(16) NOT NULL, user_id int UNSIGNED NOT NULL, notebook_id int UNSIGNED NOT NULL, title varchar(255) NOT NULL, ... FOREIGN KEY (notebook_id) REFERENCES notebooks(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

如果你在Windows客戶端上創(chuàng)建了一個名為“Cooking”的記事本,并立即在其中粘貼了一個名為“Quick Tomato Sauce”的食譜,客戶端會立刻進行如下同步:

調(diào)用NoteStore.createNotebook() 請求服務(wù)器創(chuàng)建記事本,并返回以創(chuàng)建記事本的GUID。

通過指定記事本的GUID,調(diào)用NoteStore.createNote()在記事本中創(chuàng)建筆記。

每次API調(diào)用都通過SQL事物予以實現(xiàn),可以讓客戶端完全信任服務(wù)器的任何提示。ACID兼容的數(shù)據(jù)庫可以做到這些:

原子性(Atomicity):如果API調(diào)用成功,那么所有的改動都會保存;如果API調(diào)用失敗,所有的改動都不會提交。

一致性(Consistency): 在API調(diào)用完成后,所有的賬戶都可用,并能保證內(nèi)部狀態(tài)的一致性。每篇筆記都與記事本相關(guān)聯(lián),以避免出現(xiàn)孤立項。數(shù)據(jù)庫不允許刪除關(guān)聯(lián)有記事的記事本,這得感謝FOREIGN KEY約束。

持久性(Durability):當(dāng)服務(wù)器發(fā)送記事本已創(chuàng)建完畢的回執(zhí)后,客戶端會認為它的存在具有持久性,以便進行后續(xù)的操作。變更的持久性,可以讓客戶端知道在任何時刻對服務(wù)狀態(tài)的影響都能保持一致性。

對我們的同步協(xié)議而言,持久性最為重要。如果客戶端不能確定服務(wù)器端的變更具有持久性,那么協(xié)議將會變得復(fù)雜而低效。

“大數(shù)據(jù)”問題

得益于事務(wù)處理的數(shù)據(jù)庫的ACID屬性,同樣使得數(shù)據(jù)集非常難以擴展,以超出單臺服務(wù)器的范圍。數(shù)據(jù)庫集群和多主復(fù)制技術(shù)并不理想,鍵值存儲為實現(xiàn)可擴展性提供了一條捷徑。

所幸,Evernote暫時不需要考慮這個問題。即便是我們有近10億的筆記,和近20億的資源文件,這也并不能稱得上是一個大數(shù)據(jù)集。通過按用戶分區(qū),它被劃分成了2千萬個獨立的數(shù)據(jù)集。

我們尚未遇到所謂“大數(shù)據(jù)”引發(fā)的問題,倒是遇到了許多“中數(shù)據(jù)”的存儲問題,這就是通過規(guī)整分區(qū)形成的分片存儲架構(gòu)。

也許以后……

我們對新的存儲系統(tǒng)非常感興趣,非常樂意應(yīng)用在哪些對ACID要求不強,但確實需要橫向擴展的新項目中。例如,我們的報告分析系統(tǒng)已經(jīng)逐漸超出了MySQL平臺的承受力,需要被更快、更先進的系統(tǒng)所取代。

我們現(xiàn)在對以Evernote用戶元數(shù)據(jù)為基礎(chǔ)的MySQL分片存儲頗為滿意,盡管這不會引起那些IT弄潮兒的興趣。

本文標(biāo)題:Nosql存儲引擎,nosql數(shù)據(jù)庫的技術(shù)特點
標(biāo)題來源:http://chinadenli.net/article8/dsgcsip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器網(wǎng)站改版營銷型網(wǎng)站建設(shè)動態(tài)網(wǎng)站App設(shè)計微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作