1. 程式人生 > >常用資料庫的特點、應用場景資訊整理

常用資料庫的特點、應用場景資訊整理

關係型資料庫

    關係資料庫,是建立在關係模型基礎上的資料庫,藉助於集合代數等數學概念和方法來處理資料庫中的資料。現實世界中的各種實體以及實體之間的各種聯絡均用關係模型來表示。關係模型是由埃德加·科德於1970年首先提出的,並配合"科德十二定律"。現如今雖然對此模型有一些批評意見,但它還是資料儲存的傳統標準。標準資料查詢語言SQL就是一種基於關係資料庫的語言,這種語言執行對關係資料庫中資料的檢索和操作。 關係模型由關係資料結構、關係操作集合、關係完整性約束三部分組成。

    實體關係模型(Entity-Relationship Model),簡稱E-R Model是陳品山(Peter P.S Chen)博士於1976年提出的一套資料庫的設計工具,他運用真實世界中事物與關係的觀念,來解釋資料庫中的抽象的資料架構。實體關係模型利用圖形的方式(實體-關係圖(Entity-Relationship Diagram))來表示資料庫的概念設計,有助於設計過程中的構思及溝通討論。

    關係模型就是指二維表格模型,因而一個關係型資料庫就是由二維表及其之間的聯絡組成的一個數據組織。當前主流的關係型資料庫有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。

非關係型的資料庫

    NoSQL,泛指非關係型的資料庫。隨著網際網路web2.0網站的興起,傳統的關係資料庫在應付web2.0網站,特別是超大規模和高併發的SNS型別的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,而非關係型的資料庫則由於其本身的特點得到了非常迅速的發展。

    NoSQL,指的是非關係資料庫。由上面的敘述可以看到關係型資料庫中的表都是儲存一下格式化的資料結構,每個元組欄位的組成都是一樣的,即使不是每個元組都需要所有的欄位,但資料庫會為每個元組都分配所有的欄位,這樣的結構可以便於表與表之間進行連線等操作,但從另一個角度來說它也是關係資料庫效能瓶頸的一個因素。而非關係資料庫以鍵值對儲存,它的結構不固定,每一個元組可以有不一樣的欄位,每個元組可以根據需要增加或減少一些自己的鍵值對,這樣就不會侷限於固定的結構,可以減少一些時間和空間的開銷。

    NoSQL(NoSQL = Not Only SQL ),意即"不僅僅是SQL",是一項全新的資料庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關係型的資料儲存,相對於鋪天蓋地的關係型資料庫運用,這一概念無疑是一種全新的思維的注入。

開源資料庫

    在Linux這種開放原始碼的作業系統已經逐漸被越來越多的企業應用時,在基礎軟體平臺的另一端,開源資料庫開始顯山露水。近2年來,美國一些大企業紛紛採用開放原始碼資料庫,它們往往在總部採用商業資料庫,而在分支機構的Linux伺服器上採用開源產品。這些資料庫除了費用便宜,還各有獨到之處。與商業化產品相比,開源資料庫結構簡單,但功能不簡單,讀取操作快捷,易管理,甚至不需要全職的管理員。

嵌入式資料庫

    在嵌入式系統中,對資料庫的操作具有定時限制的特性,這裡把應用於嵌入式系統的資料庫系統稱為嵌入式資料庫系統或嵌入式實時資料庫系統(ERTDBS)。

    可靠性要求是毋庸置疑的,嵌入式系統必須能夠在沒有人工干預的情況下,長時間不間斷地執行。同時要求資料庫操作具備可預知性,而且系統的大小和效能也都必須是可預知的,這樣才能保證系統的效能。嵌入式系統中會不可避免地與底層硬體打交道,因此在資料管理時,也要有底層控制的能力,如什麼時候會發生磁碟操作,磁碟操作的次數,如何控制等。底層控制的能力是決定資料庫管理操作的關鍵。

    目前嵌入式軟體系統開發的挑戰之一,體現在對各種資料的管理能否建立一套可靠、高效、穩定的管理模式,嵌入式資料庫可謂應運而生。

    嵌入式資料庫是嵌入式系統的重要組成部分,也成為對越來越多的個性化應用開發和管理而採用的一種必不可少的有效手段。

    嵌入式資料庫用途廣泛,如用於消費電子產品、移動計算裝置、企業實時管理應用、網路儲存與管理以及各種專用裝置,這一市場目前正處於高速增長之中。 舉簡單例子,手機原來只用來打電話、發簡訊,現在手機增加了很多新的功能,比如彩信、音樂、攝影、視訊等等,應用的功能多了,系統就變得複雜。

記憶體資料庫

    記憶體資料庫,顧名思義就是將資料放在記憶體中直接操作的資料庫。相對於磁碟,記憶體的資料讀寫速度要高出幾個數量級,將資料儲存在記憶體中相比從磁碟上訪問能夠極大地提高應用的效能。同時,記憶體資料庫拋棄了磁碟資料管理的傳統方式,基於全部資料都在記憶體中重新設計了體系結構,並且在資料快取、快速演算法、並行操作方面也進行了相應的改進,所以資料處理速度比傳統資料庫的資料處理速度要快很多,一般都在10倍以上。記憶體資料庫的最大特點是其"主拷貝"或"工作版本" 常駐記憶體,即活動事務只與實時記憶體資料庫的記憶體拷貝打交道。顯然,它要求較大的記憶體量,但並非任何時刻整個資料庫都存放在記憶體,即記憶體資料庫系統還是要處理I/O。
    記憶體資料庫是以犧牲記憶體資源為代價換取資料處理實時性的,記憶體資料庫和磁碟資料庫都是當今資訊社會裡每個企業所必須的關係型資料庫產品,磁碟資料庫解決的是大容量儲存和資料分析問題,而記憶體資料庫解決的是實時處理和高併發問題。兩者的存在是相輔相成的,記憶體資料庫的事務實時處理效能要遠強於磁碟資料庫。但是相對的,他的資料安全方面還沒有達到磁碟資料庫比肩的地步。
    記憶體資料庫將實體記憶體作為資料的第一儲存介質,而將磁碟作為備份。隨著電信業務的發展,系統對實時性的要求和對業務靈活修改的要求非常高,在此種情況下對於記憶體資料庫的需求也越來越高。磁碟資料庫的做法是將資料存入記憶體中進行處理,這種方式的可管理性及資料安全可靠性都沒有保障。而記憶體資料庫正是針對這一弱點進行了改進。
    實際上,記憶體資料庫並不是一項時髦技術,其出現於上世紀60年代末,但由於市場的需求原因在90年代後期才開始發展。作為新一代資料庫,Altibase產品已經走向混合型資料庫,其版本Altibase 4.0已經有一套自帶的磁碟資料庫,使用者一旦購買了Altibase的記憶體資料庫,就無須再購買磁碟資料庫。它把熱資料(經常被使用的、訪問比較高的、經常要運算的資料)放在記憶體資料庫裡,而把歷史性資料放在磁碟資料庫裡,可為使用者進一步減少投資。
    對於記憶體資料庫而言,可以將同樣資料庫的部分內容存放於磁碟上,而另一部分存放於記憶體中。使用者可以選擇將資料儲存在記憶體表中以提供即時的資料訪問。若訪問時間不緊急或資料存於記憶體中所佔空間過大時,使用者可將這些資料存入磁碟表中。

    比如,在手機使用者開始拔打電話時,如果應用基於記憶體資料庫技術的混合資料管理引擎,就通過記憶體表檢索其服務選項並立即驗證使用者身份,而將通話清單和計費清單歸檔到磁碟表中。從而,達到了速度與資源使用的平衡。
    記憶體資料庫的技術,一個很重要的特點,是可以對記憶體中的資料實現全事務處理,這是僅僅把資料以陣列等形式放在記憶體中完全不同的。並且,記憶體資料庫是與應用無關的,顯然這種體系結構具有其合理性。記憶體引擎可以實現查詢與存檔功能使用的是完全相同的資料庫,同時記憶體表與磁碟表也使用的是完全相同的存取方法。儲存的選擇,對於應用開發者而言是完全透明的。
對於記憶體資料庫而言,實現了資料在記憶體中的管理,而不僅僅是作為資料庫的快取。不像其它將磁碟資料塊快取到主存中的資料庫,記憶體資料庫的記憶體引擎使用了為隨機訪問記憶體而特別設計的資料結構和演算法,這種設計使其避免了因使用排序命令而經常破壞快取資料庫效能的問題。通過記憶體資料庫,減少了磁碟I/O,能夠達到了以磁碟I/O 為主的傳統資料庫無法與其相比擬的處理速度。
    因此,記憶體資料庫技術的應用,可以大大提高資料庫的速度,這對於需要高速反應的資料庫應用,如電信、金融等提供了有力支撐。

ACCESS資料庫

型別

    關係型資料庫管理系統

特點

    ACCESS是小型資料庫、桌面資料庫。

    ACCESS中的資料儲存在檔案系統內,不適合海量資料的儲存。

    容易操作,使用廣,成本低。

    Access能夠存取 Access/Jet、Microsoft SQL Server、Oracle(甲骨文軟體公司),或者任何 ODBC 相容資料庫內的資料。

    微軟釋出,結合了 Microsoft Jet Database Engine 和 圖形使用者介面兩項特點,是 Microsoft Office的成員之一。

Access的優點

    儲存方式單一

    Access管理的物件有表、查詢、窗體、報表、頁、巨集和模組,以上物件都存放在後綴為(.mdb)的資料庫檔案種,便於使用者的操作和管理。

    面向物件

    Access是一個面向物件的開發工具,利用面向物件的方式將資料庫系統中的各種功能物件化,將資料庫管理的各種功能封裝在各類物件中。它將一個應用系統當作是由一系列物件組成的,對每個物件它都定義一組方法和屬性,以定義該物件的行為和外國,使用者還可以按需要給物件擴充套件方法和屬性。通過物件的方法、屬性完成資料庫的操作和管理,極大地簡化了使用者的開發工作。同時,這種基於面向物件的開發方式,使得開發應用程式更為簡便。

    介面友好、易操作

    Access是一個視覺化工具,是風格與Windows完全一樣,使用者想要生成物件並應用,只要使用滑鼠進行拖放即可,非常直觀方便。Access能夠匯入和匯出資料,對早期版本Access中儲存和開啟的窗體和報表重新進行了設計,使得共享資訊比以前更輕鬆。

    整合環境、處理多種資料資訊

    Access基於Windows作業系統下的整合開發環境,該環境集成了各種嚮導和生成器工具,極大地提高了開發人員的工作效率,使得建立資料庫、建立表、設計使用者介面、設計資料查詢、報表列印等可以方便有序地進行。整合範圍廣泛的資料來源,Access支援多種資料庫格式,其中包括可擴充套件標記語言XML,OLE,開放式資料庫連線ODBC以及Microsoft Windows SharePoint服務。

    Access支援ODBC

    Access支援ODBC(開發資料庫互連,Open Data Base Connectivity),利用Access強大的DDE(動態資料交換)和OLE(物件的聯接和嵌入)特性,可以在一個數據表中嵌入點陣圖、聲音、Excel表格、Word文件,還可以建立動態的資料庫報表和窗體等。Access還可以將程式應用於網路,並與網路上的動態資料相聯接。利用資料庫訪問頁物件生成HTML檔案,輕鬆構建Internet/Intranet的應用。

    強大的自動更新屬性

    強大的自動更新屬性,在更改表中的欄位屬性後,有控制元件繫結到這個屬性的所有窗體或報表都可以自動更新。

    設計WEB頁的工具功能更強大

    設計WEB頁的工具功能更強大,Access2003能夠在WEB上釋出窗體和報表,並能夠將指定的資訊源定到記錄源,以顯示,更新和處理資料庫中的資料。            

ACCESS的缺點

    網站訪問頻繁,經常達到100人左右的線上的時候效能就會急劇下降。

    記錄數過多,一般記錄數達到10萬條左右的時候效能就會急劇下降。

    資料儲存量小安全性不夠高,加了使用者級密碼容易破解。

    C/S結構下對伺服器要求很高,否則容易造成MDB損壞併發數255,但是對高強度操作適應性差,如果伺服器不夠好,網路不夠好,程式設計的方法不夠好,6-7個人同時訪問就能導致MDB損壞或者並死.

    不能將VBA程式碼開發的軟體系統直接編譯成EXE可執行檔案,不能脫離ACCESS或者ACCESS RUNTIME環境,該環境相對其他軟體體積較大(50M左右)。

    Microsoft Access資料庫有一定的極限,如果資料達到100M左右,很容易造成伺服器iis假死,或者消耗掉伺服器的記憶體導致伺服器崩潰。

使用場景

    ACCESS,一般做小型網站用,效能一般。ASP+ACCESS最常見的小型網站組合,方便快速。

    適合資料量少的應用,在處理少量資料和單機訪問的資料庫時是很好的,效率也很高。

SQL Server資料庫

型別

    關係資料庫管理系統

    是一個全面的資料庫平臺,使用整合的商業智慧 (BI) 工具提供了企業級的資料管理。

特點

    1.真正的客戶機/伺服器體系結構。

    在這種體系結構中,包括多臺計算機,其中處理應用程式,請求服務的計算機稱客戶機,處理資料庫的計算機稱為伺服器。

    2.圖形化使用者介面,使系統管理和資料庫管理更加直觀、簡單。

    提供了表、檢視和查詢定義的圖形介面,在Query Analyze的圖形介面中使用SQL語言,伺服器和資料庫的使用者配置的圖形化介面。

    3.豐富的程式設計介面工具,為使用者進行程式設計提供了更大的選擇餘地。

    SQLServer提供了豐富的應用程式介面來訪問伺服器的資料,主要的訪問方法有:ODBC API、OLE DB、Transact-SQL和DB-Library,客戶機可以通過這些API作為動態連線庫來使用,並通過客戶端的網路庫與SQLServer伺服器通訊。

    4.SQL Server與Windows NT完全整合,利用了NT的許多功能,如傳送和接受訊息,管理登入安全性等。SQL Server也可以很好地與microsoft BackOffice產品整合。

    與NT的安全性系統整合,利用NT的安全機制為伺服器服務,利用NT的效能監測器和使用MS Index Server;與MS BackOffice產品整合,如MS IIS、MS Exchange Server等結合。SQLServer可以設定為用Exchange接收和傳送電子郵件,使用者可以通過郵件資訊向SQLServer傳送查詢請求,查詢結果能夠通過電子郵件返回給使用者。

    5.具有很好的伸縮性,可跨越從執行Windows 95/98的膝上型電腦到執行Windows 2000的大型多處理器等多種平臺使用。

    MS提供了一種單一的資料庫引擎,可以用於Windows95到Windows2000大位元組對稱多處理器叢集的各種場合。NT和SQL不僅支援IntelCPU,而且支援DEC Alpha CPU等處理器。

    6.對Web技術的支援,使使用者能夠很容易地將資料庫中的資料釋出到Web頁面上。

    在Web Assistant中可以將資料庫表中的資料引出來,還可以將HTML中的資料引入到資料庫中。SQLServer的資料可以自動發行到Web頁上;使用者可以通過一個普通的瀏覽器來查詢儲存在SQLServer中的資訊,因此可以用儲存在SQLServer中的資訊建立動態Web頁。

    7.SQL Server提供資料倉庫功能,這個功能只在Oracle和其他更昂貴的DBMS中才有。

    SQL Server2000中包括吸取和分析彙總資料以進行聯機分析處理(OLAP)的工具,還包括一些工具可用於直觀地設計資料庫並通過English Query來分析資料。

    Sqlserver2000依然屬於小型資料庫,2005開始才能算是大型資料庫。

    SQLSERVER 簡單,介面友好,WINDOWS平臺下的好選擇 ,SqlServer後與SYBASE也比較接近的。

SQL Server 2012的優勢

    1.安全性和可用性高。

    2.超快的效能。

    3.企業安全性。

    4.快速的資料發現。

    5.方便易用。

    6.高效的資料壓縮功能。

    7.整合的開發環境。

    SQL Server的劣勢

    1開放性。只能執行在微軟的windows平臺,沒有絲毫的開放性可言。

    2可伸縮性,並行性。並行實施和共存模型並不成熟,很難處理日益增多的使用者數和資料卷,伸縮性有限。

    3效能穩定性。SQLServer當用戶連線多時效能會變的很差,並且不夠穩定。

    4使用風險。SQLServer完全重寫的程式碼,經歷了長期的測試,不斷延遲,許多功能需時間來證明。並不十分相容早期產品。使用需要冒一定風險。

    5客戶端支援及應用模式。只支援C/S模式。

    6 安全性。Oracle的安全認證獲得最高認證級別的ISO標準認證,而SQL Server並沒有獲得什麼安全認證。

使用場景

    主機作業系統為window,主要用於web網站的建設,承載中小型web後臺資料。

    在租賃的虛擬主機中一般會預安裝SQL Server作為資料庫軟體。

MySQL資料庫

型別

    開源的關係型資料庫

    小型關聯式資料庫管理系統

    MySQL是一個快速的、多執行緒、多使用者和健壯的SQL資料庫伺服器。

特點

    其體積小

    總體擁有成本低

    開放原始碼

    可執行在Windows平臺和大多數的Linux平臺上

    快速,輕量級,易於擴充套件,免費,跨平臺

    可以同時處理幾乎不限數量的使用者;

    處理多達50,000,000以上的記錄;

    命令執行速度快,也許是現今最快的;

    簡單有效的使用者特權系統。

優點

    使用C和C++編寫,並使用了多種編譯器進行測試,保證原始碼的可移植性。

    支援AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種作業系統。

    為多種程式語言提供了API。這些程式語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。

    支援多執行緒,充分利用CPU資源。

    既能夠作為一個單獨的應用程式應用在客戶端伺服器網路環境中,也能夠作為一個庫而嵌入到其他的軟體中。

    提供多語言支援,常見的編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作資料表名和資料列名。

    提供TCP/IP、ODBC和JDBC等多種資料庫連線途徑。

    支援多種儲存引擎。

    價格便宜:Mysql是開源的,所以你不需要支付額外的費用。

    MySQL使用標準的SQL資料語言形式。

    Mysql對PHP有很好的支援,PHP是目前最流行的Web開發語言。

    Mysql是可以定製的,採用了GPL協議,你可以修改原始碼來開發自己的Mysql系統。

    效能很出色。純粹就效能而言,MySQL是相當出色的,因為它包含一個預設桌面格式MyISAM。MyISAM資料庫 與磁碟非常地相容而不佔用過多的CPU和記憶體。MySQL可以運行於Windows 系統而不會發生衝突,在UNIX或類似UNIX系統上執行則更好。你還可以通過使用64位處理器來獲取額外的一些效能。因為MySQL在內部裡很多時候都使用64位的整數處理。

缺點

    缺乏一些儲存程式的功能,比如MyISAM引擎聯支援交換功能

    比較的難學;

MySQL不完全支援陌生的關鍵詞;

    MySQL也缺乏一些儲存程式的功能;

    使用預設的ip埠,但是有時候這些ip也會被一些黑客闖入;

    使用myisam配置,如果你不慎損壞資料庫,結果可能會導致所有的資料丟失。

使用場景

    廣泛地應用在Internet上的中小型網站中。

    LAMP(Linux+Apache+Mysql+Php)。

    mysql的優勢在於免費,如果業務系統資料庫不是極其龐大,可用mysql。

DB2資料庫

型別

    關係型資料庫系統

特點

    開放性

    能在所有主流平臺上執行(包括windows)。最適於海量資料。

    可伸縮性,並行性

    具有很好的並行性。DB2把資料庫管理擴充到了並行的、多節點的環境。資料庫分割槽是資料庫的一部分,包含自己的資料、索引、配置檔案、和事務日誌。資料庫分割槽有時被稱為節點。

    安全性

    獲得最高認證級別的ISO標準認證。

    客戶端支援及應用模式

    跨平臺,多層結構,支援ODBC,JDBC等客戶。

    操作

    操作簡單,同時提供GUI和命令列,在windowsNT和unix下操作相同。

    使用風險

    在巨型企業得到廣泛的應用,向下相容性好。風險小。

使用場景

    效能較高適用於資料倉庫和線上事物處理。DB2 超大型資料庫,與ORACLE類似 ,資料倉庫和資料探勘相當的不錯,特別是叢集技術可以使DB2的可擴效能達到極致。

Oracle資料庫

型別

    關係型資料庫系統

特點

優點

    能在所有主流平臺上執行(包括 windows)。完全支援所有的工業標準。採用完全開放策略。可以使客戶選擇最適合的解決方案。對開發商全力支援。

    平行伺服器通過使一組結點共享同一簇中的工作來擴充套件windownt的能力,提供高可用性和高伸縮性的簇的解決方案。

    如果windowsNT不能滿足需要, 使用者可以把資料庫移到UNIX中。

    安全性方面,效能最高。

    客戶端支援及應用模式 ,多層次網路計算,支援多種工業標準,可以用ODBC,JDBC,OCI等網路客戶連線式要求,可根據實際系統需求構造資料庫。

    採用標準的SQL結構化查詢語言。

    具有豐富的開發工具,覆蓋開發週期的各階段。

    支援大型資料庫,資料型別支援數字、字元、大至2GB的二進位制資料,為資料庫的面向物件儲存提供資料支援。

    具有第四代語言的開發工具(SQL*FORMS、SQL*REPORTS、SQL*MENU等)。

     具有字元介面和圖形介面,易於開發。

    通過SQL*DBA控制使用者許可權,提供資料保護功能,監控資料庫的執行狀態,調整資料緩衝區的大小。

    分佈優化查詢功能。

    具有資料透明、網路透明,支援異種網路、異構資料庫系統。並行處理採用動態資料分片技術。

    支援客戶機/伺服器體系結構及混合的體系結構(集中式、分散式、客戶機/伺服器)。

    實現了兩階段提交、多線索查詢手段。

    資料安全保護措施:沒有讀鎖,採取快照SNAP方式完全消除了分佈讀寫衝突。自動檢測死鎖和衝突並解決。

    資料安全級別為C2級(最高階)。

    資料庫內模支援多位元組碼制,支援多種語言文字編碼。

    具有面向製造系統的管理資訊系統和財務系統應用系統。

    WORKGROUP/2000具有ORACLE7WORKGROUP伺服器,POWER OBJECTS(圖形開發環境,支援OS/2、UNIX、WINDOWS/NT平臺。

    在中國的銷售份額佔50%以上,市場份額高。

缺點

    管理維護麻煩一些;

    資料庫崩潰後回覆很麻煩,因為他把很多東西放在記憶體裡;

    資料庫連線要慢些,最好用連線池;

    大物件不好用,vchar2欄位太短,不夠用;

    管理員的工作煩,且經驗非常重要;

    對硬體的要求很高;

    價格昂貴

使用場景

    大部分企事業單位都用oracle,在電信行業佔用最大的份額。

在各個行業中都用使用案例。

Hadoop

型別

    一個分散式系統基礎架構,由Apache基金會所開發。    

    Hadoop是在分散式伺服器叢集上儲存海量資料並執行分散式分析應用的一種方法。

    Hadoop被設計成一種非常"魯棒"的系統,即使某臺伺服器甚至叢集宕機了,執行其上的大資料分析應用也不會中斷。此外Hadoop的效率也很高,因為它並不需要你在網路間來回倒騰資料。

特點

    HDFS和MapReduce.HDFS為海量的資料提供了儲存,則MapReduce為海量的資料提供了計算。

    Hadoop是一個能夠對大量資料進行分散式處理的軟體框架。但是 Hadoop 是以一種可靠、高效、可伸縮的方式進行處理的。

    Hadoop 是可靠的,因為它假設計算元素和儲存會失敗,因此它維護多個工作資料副本,確保能夠針對失敗的節點重新分佈處理。

    Hadoop 是高效的,因為它以並行的方式工作,通過並行處理加快處理速度。

    Hadoop 還是可伸縮的,能夠處理 PB 級資料。

    此外,Hadoop 依賴於社群服務,因此它的成本比較低,任何人都可以使用。

    hadoop大資料處理的意義

    Hadoop得以在大資料處理應用中廣泛應用得益於其自身在資料提取、變形和載入(ETL)方面上的天然優勢。Hadoop的分散式架構,將大資料處理引擎儘可能的靠近儲存,對例如像ETL這樣的批處理操作相對合適,因為類似這樣操作的批處理結果可以直接走向儲存。Hadoop的MapReduce功能實現了將單個任務打碎,並將碎片任務傳送(Map)到多個節點上,之後再以單個數據集的形式載入(Reduce)到資料倉庫裡。

使用場景

    Hadoop 的最常見用法之一是 Web 搜尋。

在百度主要用於如下場景:

    日誌的儲存和統計;

    網頁資料的分析和挖掘;

    商業分析,如使用者的行為和廣告關注度等;

    線上資料的反饋,及時得到線上廣告的點選情況;

    使用者網頁的聚類,分析使用者的推薦度及使用者之間的關聯度。

Hadoop在淘寶和支付寶的應用從09年開始,用於對海量資料的離線處理,例如對日誌的分析,也涉及內容部分,結構化資料等。

Sybase資料庫

型別

    關係型資料庫系統,是一種典型的UNIX或WindowsNT平臺上客戶機/伺服器環境下的大型資料庫系統。

特點

    它是基於客戶/伺服器體系結構的資料庫

    一般的關係資料庫都是基於主/從式的模型的。在主/從式的結構中,所有的應用都執行在一臺機器上。使用者只是通過終端發命令或簡單地檢視應用執行的結果。

    而在客戶/伺服器結構中,應用被分在了多臺機器上執行。一臺機器是另一個系統的客戶,或是另外一些機器的伺服器。這些機器通過區域網或廣域網聯接起來。

    客戶/伺服器模型的好處是:

        ● 它支援共享資源且在多臺裝置間平衡負載

        ● 允許容納多個主機的環境,充分利用了企業已有的各種系統

    它是真正開放的資料庫

    它是一種高效能的資料庫

    1)可程式設計資料庫

    通過提供儲存過程,建立了一個可程式設計資料庫。儲存過程允許使用者編寫自己的資料庫子例程。這些子例程是經過預編譯的,因此不必為每次呼叫都進行編譯、優化、生成查詢規劃,因而查詢速度要快得多。

    2)事件驅動的觸發器

    觸發器是一種特殊的儲存過程。通過觸發器可以啟動另一個儲存過程,從而確保資料庫的完整性。

    3)多線索化

    Sybase資料庫的體系結構的另一個創新之處就是多線索化。一般的資料庫都依靠作業系統來管理與資料庫的連線。當有多個使用者連線時,系統的效能會大幅度下降。Sybase資料庫不讓作業系統來管理程序,把與資料庫的連線當作自己的一部分來管理。此外,Sybase的資料庫引擎還代替作業系統來管理一部分硬體資源,如埠、記憶體、硬碟,繞過了作業系統這一環節,提高了效能。

使用場景

    1、SYBASE ASE

    Sybase ASE 的全稱是 Adaptive Server Enterprise ,是企業及資料庫伺服器,適合用於企業級OLTP(線上聯機事務處理),是功能強大的關係資料庫管理系統。

    2、SYBASE ASA

    Sybase ASA 的全稱是 Adaptive Server Anywhere,是輕量級資料庫伺服器,適合用於移動計算(PDA、帶OS的手機等)、嵌入式計算(POS機、路由器等)、工作組級OLTP環境,特別是移動計算/嵌入式計算。

    3、SYBASE IQ

    Sybase IQ 是企業級資料倉庫資料庫伺服器,適合於DSS環境中的企業級資料倉庫和資料集市。

Informix資料庫

型別

    Informix是IBM公司出品的關係資料庫管理系統(RDBMS)

特點

    操作簡單,管理方便。

    易於安裝、配置

    但是較少的系統性能分析、故障分析、跟蹤工具是它的缺點。

使用場景

    IBM® Informix® 是 IBM 的主要資料庫,適用於高容量線上事務處理(Online Transaction Processing,OLTP)、整合的應用程式,以及目前的速度驚人的資料倉庫/分析工作負載。

firebird資料庫

型別

    關係資料庫系統

    開源資料庫

    嵌入式關係資料庫

特點

    Firebird是一個跨平臺的關係資料庫系統,目前能夠執行在Windows、linux和各種Unix作業系統上,提供了大部分SQL-99標準的功能。它既能作為多使用者環境下的資料庫伺服器執行,也提供嵌入式資料庫的實現。

    firebird是一個全功能的,強大高效的,輕量級,免維護的資料庫。它很容易讓您從單使用者,單資料庫升級到企業級的應用。 給中小型企業提供了一個很好的工具,一些需要小的資料庫的軟體!

    Firebird是一個真正的關係資料庫,支援儲存過程、檢視、觸發器、事務等大型關係資料庫的所有特性;

    Firebird支援SQL92的絕大部分命令,並且支援大部分SQL99命令,新版Firebird 2.0對SQL99的支援更完整;

    Firebird原始碼基於成熟的商業資料庫Interbase,有良好的穩定性,與Interbase有良好的相容性;

    不用考慮授權費用(免費),不用擔心將來有一天你或你的客戶因為使用盜版而被資料庫開發商告上法庭;

    釋出簡易,安裝檔案只有幾M,且高度可定製,客戶端的分發也很簡單,只需一個DLL檔案;

    Firebird的一嵌入式伺服器版本,不用安裝,直接執行,基於單機開發首選;

    Firebird的執行效率非常高;

    具備高度可移植性,可在Linux,Unix,MacOS,Windows,Solaris系統下執行,而且資料庫格式完全一樣,不用修改;

    開發環境支援良好,Delphi,C++Builder不用通過ODBC連線,直接用原生開發介面開發基於Firebird的程式。

使用場景

    免安裝的嵌入式關係資料庫

Greenplum資料庫

型別

    專門做資料倉庫的資料庫

    關係資料庫系統

    開源資料庫

    MPP架構

特點

    GREENPLUM是一個關係型資料庫叢集。它實際上是由數個獨立的資料庫服務組合成的邏輯資料庫。與RAC不同,這種資料庫叢集採取的是MPP架構。

    資料儲存

    當今是個資料不斷膨脹的時代,採取MPP架構的資料庫系統才能對海量資料進行管理。

    Greenplum支援50PB(1PB=1000TB)級海量資料的儲存和處理,Greenplum將來自不同源系統的、不同部門、不同平臺的資料整合到資料庫中集中存放,並且存放詳盡歷史的資料軌跡,業務使用者不用再面對一個又一個資訊孤島,也不再困惑於不同版本資料導致的偏差,同時對於IT人員也降低管理維護工作的複雜度。

    高併發

    隨著商業智慧在企業內的快速發展,BI 使用者對資訊分析平臺的訪問頻率和查詢複雜度也快速提升,因此要求相應的資料庫系統對高併發查詢進行支援。Greenplum利用強大並行處理能力提供併發支援。

    Greenplum提供資源管理功能(workload managemnt)來管理資料庫資源,利用資源佇列管理可實現按使用者組的進行資源分配,如Session同時啟用數、最大資源值等。通過資源管理功能,可以按使用者級別進行資源分配和管理使用者SQL查詢優先級別,同時也能防止低質量SQL(如沒有條件的多表join等)對系統資源的消耗。

    線性擴充套件

    Greenplum與其他分散式大資料產品如Yonghong Z-DataMart一樣採用了通用的MPP並行處理架構,在MPP架構中增加節點就可以線性提高系統的儲存容量和處理能力。Greenplum在擴充套件節點時操作簡單,在很短時間內就能完成資料的重新分佈。

    Greenplum線性擴充套件支援為資料分析系統將來的拓展給予了技術上的保障,使用者可根據實施需要進行容量和效能的擴充套件。

    高性價比

    Greenplum資料庫軟體系統節點基於業界各種開放式硬體平臺,如SUN/HP/DELL等廠商的PC Server等,在普通的x86 Server上就能達到很高的效能,因此價效比很高,相比於其他封閉式資料倉庫專用系    統,Greenplum每TB的投資是前者的1/5甚至更低。同樣,Greenplum產品的維護成本相比同類廠商也低許多。

    反應速度

    我們面對的是一個瞬息變化的市場,誰能首先感知到市場的需求和變化,就能在競爭中先行一步,獲得主動權,在競爭中立於不敗之地。

    Greenplum通過準實時、實時的資料載入方式,實現資料倉庫的實時更新,進而實現動態資料倉庫(ADW)。基於動態資料倉庫,業務使用者能對當前業務資料進行BI實時分析-"Just In Time BI",能夠讓企業敏銳感知市場的變化,加快決策支援反應速度。

    高可用性

    Greenplum是高可用的系統,在已有案例中最多使用了96臺機器的叢集MPP環境。除了硬體級的Raid技術外,Greenplum還提供資料庫層Mirror機制保護,即每個節點資料在另外的節點中同步映象,單個節點的錯誤不影響整個系統的使用。

    對於主節點,Greenplum提供Master/Stand by機制進行主節點容錯,當主節點發生錯誤時,可以切換到Stand by節點繼續服務。

使用場景

    當前使用的 OLTP程式中,使用者訪問一箇中心資料庫,如果採用SMP系統結構,它的效率要比採用MPP結構要快得多。而MPP系統在決策支援和資料探勘方面顯示了優勢,可以這樣說,如果操作相互之間沒有什麼關係,處理單元之間需要進行的通訊比較少,那採用MPP系統就要好,相反就不合適了。

    既主要用於資料倉庫。

MPP 系統

    Greenplum的架構採用了MPP(大規模並行處理)。在 MPP 系統中,每個 SMP節點也可以執行自己的作業系統、資料庫等。換言之,每個節點內的 CPU 不能訪問另一個節點的記憶體。節點之間的資訊互動是通過節點網際網路絡實現的,這個過程一般稱為資料重分配(Data Redistribution) 。與傳統的SMP架構明顯不同,通常情況下,MPP系統因為要在不同處理單元之間傳送資訊,所以它的效率要比SMP要差一點,但是這也不是絕對的,因為 MPP系統不共享資源,因此對它而言,資源比SMP要多,當需要處理的事務達到一定規模時,MPP的效率要比SMP好。這就是看通訊時間佔用計算時間的比例而定,如果通訊時間比較多,那MPP系統就不佔優勢了,相反,如果通訊時間比較少,那MPP系統可以充分發揮資源的優勢,達到高效率。

Hibari資料庫

型別

    非關係型資料庫

    NoSQL,開源非關係型資料庫

特點

    一個Hibari叢集是一個分散式系統。

    一個Hibari叢集是線性可伸縮的。

    一個Hibari叢集是高度可用。

    所有的更新都是持久的。

    所有的更新都是強一致性。

    所有客戶端操作是無鎖的。

    一個Hibari叢集的效能很好。

    多個客戶端訪問協議是可用的。

    修理後自動資料伺服器故障。

    叢集配置可以在任何時間被改變。

    資料是自動重新平衡。

    異構硬體支援是很容易的。

    極大地簡化建立健壯的客戶機應用程式。

    表可配置的效能選項可用。

使用場景

    Hibari可以用於雲端計算應用,比如Web端的郵件,SNS網站和其他形式的服務需求。

    可用於雲端計算環境中,例如 webmail、SNS 和其他要求T/P級資料儲存的環境中。Hibari 支援 Java, C/C++, Python, Ruby, 和 Erlang 語言的客戶端。

    雲端計算應用,如Web電子郵件、社交網路服務,以及其它日常需要儲存TB和PB級規模資料的服務。

Leveldb資料庫

型別

    google實現的非常高效的kv資料庫

    NOSQL,開源資料庫

特點

    真正基於磁碟的鍵值儲存,模型單一簡單,資料量不受限於記憶體大小,資料落盤高可靠, LSM模型天然寫優化,順序寫盤的方式對於新硬體ssd再適合不過了,不足是僅提供了一個庫,需要自己封裝server端。

    高效的kv資料庫。

    開源。

    LevelDB 是單程序的服務,效能非常之高,在一臺4核Q6600的CPU機器上,每秒鐘寫資料超過40w,而隨機讀的效能每秒鐘超過10w。

    此處隨機讀是完全命中記憶體的速度,如果是不命中 速度大大下降。

    LevelDb是一個持久化儲存的KV系統,和Redis這種記憶體型的KV系統不同,LevelDb不會像Redis一樣狂吃記憶體,而是將大部分資料儲存到磁碟上。

    LevleDb在儲存資料時,是根據記錄的key值有序儲存的,就是說相鄰的key值在儲存檔案中是依次順序儲存的,而應用可以自定義key大小比較函式,LevleDb會按照使用者定義的比較函式依序儲存這些記錄。

    像大多數KV系統一樣,LevelDb的操作介面很簡單,基本操作包括寫記錄,讀記錄以及刪除記錄。也支援針對多條操作的原子批量操作。

    LevelDb支援資料快照(snapshot)功能,使得讀取操作不受寫操作影響,可以在讀操作過程中始終看到一致的資料。

    LevelDb還支援資料壓縮等操作,這對於減小儲存空間以及增快IO效率都有直接的幫助。

使用場景

    LevelDB可應用於很多場景,如用於網頁瀏覽器儲存最近存取網頁的快取,或用於作業系統儲存安裝包列表,或用於應用儲存使用者的設定引數。新版本的Chrome瀏覽器裡部署的IndexedDB HTML5 API就是基於LevelDB打造的,Google的資料庫Bigtable掌管著數百萬資料表也是用LevelDB的,其作為儲存引擎被Riak和Kyoto Tycoon所支援。在國內,淘寶的Tair開源Key-Value儲存也已經將LevelDB作為其持久化儲存引擎,並部署在線上使用。

M​o​n​g​o​D​B

型別

    NoSQL資料庫

    開源資料庫

特點

    特點:

    高效能、易部署、易使用,儲存資料非常方便。主要功能特性有:

    面向集合儲存,易儲存物件型別的資料。

    模式自由。

    支援動態查詢。

    支援完全索引,包含內部物件。

    支援查詢。

    支援複製和故障恢復。

    使用高效的二進位制資料儲存,包括大型物件(如視訊等)。

    自動處理碎片,以支援雲端計算層次的擴充套件性

    支援Python,PHP,Ruby,Java,C,C#,Javascript,Perl及C++語言的驅動程式,社群中也提供了對Erlang及.NET等平臺的驅動程式。

    檔案儲存格式為BSON(一種JSON的擴充套件)。

    可通過網路訪問。

    功能:

    面向集合的儲存:適合儲存物件及JSON形式的資料。

    動態查詢:Mongo支援豐富的查詢表示式。查詢指令使用JSON形式的標記,可輕易查詢文件中內嵌的物件及陣列。

    完整的索引支援:包括文件內嵌物件及陣列。Mongo的查詢優化器會分析查詢表示式,並生成一個高效的查詢計劃。

    查詢監視:Mongo包含一個監視工具用於分析資料庫操作的效能。

    複製及自動故障轉移:Mongo資料庫支援伺服器之間的資料複製,支援主-從模式及伺服器之間的相互複製。複製的主要目標是提供冗餘及自動故障轉移。

    高效的傳統儲存方式:支援二進位制資料及大型物件(如照片或圖片)

    自動分片以支援雲級別的伸縮性:自動分片功能支援水平的資料庫叢集,可動態新增額外的機器。

使用場景

    NoSQL產品廣泛應用於各種大型入口網站和專業網站,大大降低了運營成本。

    2010年,隨著網際網路Web2.0網站的興起,NoSQL在國內掀起一陣熱潮,其中風頭便是MongoDB。

    網站資料:Mongo非常適合實時的插入,更新與查詢,並具備網站實時資料儲存所需的複製及高度伸縮性。

    快取:由於效能很高,Mongo也適合作為資訊基礎設施的快取層。在系統重啟之後,由Mongo搭建的持久化快取層可以避免下層的資料來源 過載。

    大尺寸,低價值的資料:使用傳統的關係型資料庫儲存一些資料時可能會比較昂貴,在此之前,很多時候程式設計師往往會選擇傳統的檔案進行儲存。

    高伸縮性的場景:Mongo非常適合由數十或數百臺伺服器組成的資料庫。Mongo的路線圖中已經包含對MapReduce引擎的內建支援。

    用於物件及JSON資料的儲存:Mongo的BSON資料格式非常適合文件化格式的儲存及查詢。

R​e​d​i​s資料庫

型別
    開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫。

    NOSQL。

特點

    Redis的優點

    效能極高 – Redis能支援超過 100K+ 每秒的讀寫頻率。

     豐富的資料型別 – Redis支援二進位制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料型別操作。

     原子 – Redis的所有操作都是原子性的,同時Redis還支援對幾個操作全並後的原子性執行。

    豐富的特性 – Redis還支援 publish/subscribe, 通知, key 過期等等特性。

    Redis的主要缺點是資料庫容量受到實體記憶體的限制,不能用作海量資料的高效能讀寫。

使用場景

    少量資料儲存,高速讀寫訪問。此類產品通過資料全部in-momery 的方式來保證高速訪問,同時提供資料落地的功能,實際這正是Redis最主要的適用場景。

     新浪微博:史上最大的Redis叢集

    Pinterest:Reids維護上百億的相關性

    Viacom:Redis在系統中的用例盤點

S​Q​L​l​i​t​e資料庫

型別

    一款輕型的資料庫,是遵守ACID的關係型資料庫管理系統,它的設計目標是嵌入式的。

特點

    嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式裝置中,可能只需要幾百K的記憶體就夠了。它能夠支援Windows/Linux/Unix等等主流的作業系統,同時能夠跟很多程式語言相結合,比如 Tcl、C#、PHP、Java等,還有ODBC介面,同樣比起Mysql、PostgreSQL這兩款開源世界著名的資料庫管理系統來講,它的處理速度比他們都快。

    支援大多數的SQL92標準,並且可以在所有主要的作業系統上執行。

    特點:

    1. ACID事務

    2. 零配置 – 無需安裝和管理配置

    3.儲存在單一磁碟檔案中的一個完整的資料庫

    4.資料庫檔案可以在不同位元組順序的機器間自由的共享

    5.支援資料庫大小至2TB

    6. 足夠小, 大致13萬行C程式碼, 4.43M

    7. 比一些流行的資料庫在大部分普通資料庫操作要快

    8. 簡單, 輕鬆的API

    9. 包含TCL繫結, 同時通過Wrapper支援其他語言的繫結

    10. 良好註釋的原始碼, 並且有著90%以上的測試覆蓋率

    11. 獨立: 沒有額外依賴

    12. 原始碼完全的開源, 你可以用於任何用途, 包括出售它

    13. 支援多種開發語言,C, PHP, Perl, Java, C#,Python, Ruby

    14. 支援記憶體資料庫

使用場景

    作為資料庫的應用場景
    需要資料庫的小型桌面軟體
    如果你開發一個小型的桌面軟體並且需要用到資料庫功能(比如某個背單詞軟體),那SQLite是一個不錯的選擇。因為SQLite很綠色又很短小精悍。
    不過,由於Windows在桌面系統的比重很大。對於那些不考慮跨平臺的開發人員,SQLite相對於Access來說,沒有太大的優勢。
    需要資料庫的手機軟體
    眼下手機應用的發展很迅猛,相應的開發人員也多起來了。假如你就是一個手機應用程式的開發人員,並且你開發的應用需要有資料庫功能(比如某個字典工具),那SQLite簡直是不二之選。由於手機作業系統名目繁多,同時手機的記憶體偏小,這時候SQLite跨平臺和輕量級的特長就充分發揮出來了。目前幾個知名的手機作業系統(比如
AndroidWindows MobileSymbinPalm等),SQLite都支援得不錯。

    作為資料容器的應用場景
    所謂資料容器,就是把SQLite作為裝資料的容器,充分發揮SQLite單一資料檔案的優點。另外,還可以避免自己定義一套資料檔案格式的麻煩。要知道,定義一個完善的資料檔案格式是難度極大滴(要考慮可擴充套件性、要考慮向下相容、假如跨CPU架構還要考慮位元組序、假如資料量大還要考慮效能、還要...)。
    資料備份/恢復、資料匯入/匯出
    某些軟體系統(尤其是些企業應用系統)經常會碰到資料備份/恢復的功能需求。比如說,客戶會要求你把一些資料(往往是業務相關的)定期備份成一個獨立的資料檔案,然後儲存在別處。一旦軟體系統自身發生不測,再把備份的資料恢復回來。
    另外,匯入