1. 資料庫主庫與從庫
主從資料庫的建立一般基於以下三個方面考慮:
1、容災:備庫在異地,主庫不存在了,備庫可以立即接管,無須恢復時間
2、負載均衡:主庫做增刪改,備庫做查詢,這樣很多查詢業務不佔用主庫資源
3、數據集中和分發:此種模式主要用於數據從分公司集中到總公司,或從總公司分發到分公司,前提是公司需要同步的數據很少,另外各公司間業務系統不是同一家公司開發的
同步功能主要通過資料庫同步軟體實現的,象ORACLE的DATAGUARD、QUEST的SHAREPLEX、沃信科技的PAC、ORACLE的GOLDEN GATE、迪思傑的REALSYNC
但是建議可以用沃信科技的產品,因為只有他們一家產品是安裝到主備之外的第三台機器上的,不站用主庫資源,其他產品必須安裝到主庫機器上,大家試用起來很不方便
2. 大數據常用哪些資料庫(什麼是大資料庫)
通常資料庫分為關系型資料庫和非關系型資料庫,關系型資料庫的優勢到現在也是無可替代的,比如Mysql、SQLServer、Oracle、DB2、SyBase、Informix、PostgreSQL以及比較小型的Aess等等資料庫,這些數據納卜庫支持復雜的SQL操作和事務機制,適合小量數據讀寫場景;但是到了大數據時代,人們更多的數據和物聯網加入的數據已經超出了關系資料庫的承載范圍。
大數據時代初期,隨著數據請求並發量大不斷增大,一般都是採用的集群同虧搭步數據的方式處理,就是將資料庫分成了很多的小庫,每個資料庫的數據內容是不變的,都是保存了源資料庫的數據副本,通過同步或者非同步方式保證數據的一致性,每個庫設定特定的讀寫方式,比如主資料庫負責寫操作,從資料庫是負責讀操作,等等根據業務復雜程度以此類推,將業務在物理層面上進行了分離,但是這種方式依舊存在一定的負載壓力的問題,企業數據在不斷的擴增中,後面就採用分庫分表的方式解決,對讀寫負載進行分離,但是這種實現依舊存在不足,且需要不斷進行資料庫伺服器擴容。
NoSQL資料庫大致分為5種類型
1、列族資料庫:BigTable、HBase、Cassandra、AmazonSimpleDB、HadoopDB等,下面簡單介紹幾個
(1)Cassandra:Cassandra是一個列存儲資料庫,支持跨數據中心的數據復制。它的數據模型提供列索引,log-structured修改,支持反規范化,實體化視圖和嵌入超高速緩存。
(2)HBase:ApacheHbase源於Google的Bigtable,是一個開源、分布式、面向列存儲的模型。在Hadoop和HDFS之上提供了像Bigtable一銷茄拿樣的功能。
(3)AmazonSimpleDB:AmazonSimpleDB是一個非關系型數據存儲,它卸下資料庫管理的工作。開發者使用Web服務請求存儲和查詢數據項
(4)ApacheAumulo:ApacheAumulo的有序的、分布式鍵值數據存儲,基於Google的BigTable設計,建立在ApacheHadoop、Zookeeper和Thrift技術之上。
(5)Hypertable:Hypertable是一個開源、可擴展的資料庫,模仿Bigtable,支持分片。
(6)AzureTables:為要求大量非結構化數據存儲的應用提供NoSQL性能。表能夠自動擴展到TB級別,能通過REST和ManagedAPI訪問。
2、鍵值資料庫:Redis、SimpleDB、Scalaris、Memcached等,下面簡單介紹幾個
(1)Riak:Riak是一個開源,分布式鍵值資料庫,支持數據復制和容錯。(2)Redis:Redis是一個開源的鍵值存儲。支持主從式復制、事務,Pub/Sub、Lua腳本,還支持給Key添加時限。
(3)Dynamo:Dynamo是一個鍵值分布式數據存儲。它直接由亞馬遜Dynamo資料庫實現;在亞馬遜S3產品中使用。
(4)OracleNoSQLDatabase:來自Oracle的鍵值NoSQL資料庫。它支持事務ACID(原子性、一致性、持久性和獨立性)和JSON。
(5)OracleNoSQLDatabase:具備數據備份和分布式鍵值存儲系統。
(6)Voldemort:具備數據備份和分布式鍵值存儲系統。
(7)Aerospike:Aerospike資料庫是一個鍵值存儲,支持混合內存架構,通過強一致性和可調一致性保證數據的完整性。
3、文檔資料庫:MongoDB、CouchDB、Perservere、Terrastore、RavenDB等,下面簡單介紹幾個
(1)MongoDB:開源、面向文檔,也是當下最人氣的NoSQL資料庫。
(2)CounchDB:ApacheCounchDB是一個使用JSON的文檔資料庫,使用Javascript做MapRece查詢,以及一個使用HTTP的API。
(3)Couchbase:NoSQL文檔資料庫基於JSON模型。
(4)RavenDB:RavenDB是一個基於.NET語言的面向文檔資料庫。
(5)MarkLogic:MarkLogicNoSQL資料庫用來存儲基於XML和以文檔為中心的信息,支持靈活的模式。
4、圖資料庫:Neo4J、InfoGrid、OrientDB、GraphDB,下面簡單介紹幾個
(1)Neo4j:Neo4j是一個圖資料庫;支持ACID事務(原子性、獨立性、持久性和一致性)。
(2):一個圖資料庫用來維持和遍歷對象間的關系,支持分布式數據存儲。
(3):是結合使用了內存和磁碟,提供了高可擴展性,支持SPARQ、RDFS和Prolog推理。
5、內存數據網格:Hazelcast、OracleCoherence、TerracottaBigMemorry、GemFire、Infinispan、GridGain、GigaSpaces,下面簡單介紹幾個
(1)Hazelcast:HazelcastCE是一個開源數據分布平台,它允許開發者在資料庫集群之上共享和分割數據。
(2)OracleCoherence:Oracle的內存數據網格解決方案提供了常用數據的快速訪問能力,一致性支持事務處理能力和數據的動態劃分。
(3)TerracottaBigMemory:來自Terracotta的分布式內存管理解決方案。這項產品包括一個Ehcache界面、Terracotta管理控制台和BigMemory-Hadoop連接器。
(4)GemFire:VmwarevFabricGemFire是一個分布式數據管理平台,也是一個分布式的數據網格平台,支持內存數據管理、復制、劃分、數據識別路由和連續查詢。
(5)Infinispan:Infinispan是一個基於Java的開源鍵值NoSQL數據存儲,和分布式數據節點平台,支持事務,peer-to-peer及client/server架構。
(6)GridGain:分布式、面向對象、基於內存、SQLNoSQL鍵值資料庫。支持ACID事務。
(7)GigaSpaces:GigaSpaces內存數據網格能夠充當應用的記錄系統,並支持各種各樣的高速緩存場景。
3. 四大主流資料庫比較(三大主流資料庫)
四大主流資料庫比較
一、開放性
1.SQLServer
只能在windows上運行,沒有絲毫的開放性,操作系統的系統的穩定對資料庫是十分重要的。Windows9X系列產品是偏重於桌面應用,NTserver只適合中小型企業。而且windows平台的可靠性,安全性和伸縮性是非常有限的。它不象unix那樣久經考驗,尤其是在處理大資料庫。
2.Oracle
能在所有主流平台上運行(包括windows)。完全支持所有的工業標准。採用完全開放策略。可以使客戶選擇最適合的解決方案。對開發商全力支持。
3.SybaseASE
能在所有主流平台上運行(包括windows)。但由於早期Sybase與OS集成度不高,因此VERSION11.9.2以下版本需要較多OS和DB級補丁。在多平台的混合環境中,會有一定問題。
4.DB2
能在所有主流平台上運行(包括windows)。最適於海量數據。DB2在企業級的應用最為廣泛,在全球的500家最大的滲銷企業中,幾乎85%以上用DB2資料庫伺服器,而國內到97年約佔5%。
二、可伸縮性,並行性
1.SQLserver
並行實施和共存模型並不成熟,很難處理日益增多的用戶數和數據卷,伸縮性有限。
2.Oracle
並行伺服器通過使一組結點共享同一簇中的工作來擴展windownt的能力,提供高可用性和高伸縮性的簇的解決方案。如果windowsNT不能滿足需要,用戶可以把資料庫移到UNIX中。Oracle的並行伺服器對各種UNIX平台的集群機制都有著相當高的集成度。
3.SybaseASE
雖然有DBSWITCH來支持其並行伺服器,但DBSWITCH在技術層面還未成熟,且只支持版本12.5以上的ASESERVER。DBSWITCH技術需要一台叢斗游伺服器充當SWITCH,從而在硬體上帶來一些麻煩。
4.DB2
具有很好的並行性。DB2把資料庫管理擴充到了並行的、多節點的環境。資料庫分區是資料庫的一部分,包含自己的數據、索引、配置文件、和事務日誌。資料庫分區有時被稱為節點安全性。
三、安全認證
1.SQLserver
沒有獲得任何安全證書。
2.OracleServer
獲得最高認證級別的ISO標准認證。
3.SybaseASE
獲得最高認證級別的ISO標准認證。
4.DB2
獲得最高認證級別的ISO標准認證。
四、性能
1.SQLServer
多用戶時性能不佳
2.Oracle
性能最高,保持開放平台下的TPC-D和TPC-C的世界記錄。
3.SybaseASE
性能接近於SQLServer,但在UNIX平台下的並發性要優與SQLServer。
4.DB2
性能較高適用於數據倉庫和在線事物處理。
五、客戶端支持及應用模式
1.SQLServer
C/S結構,只支持windows客戶,可以用ADO、DAO、OLEDB、ODBC連接。
2.Oracle
多層次網路計算,支持多種工業標准,可以用ODBC、JDBC、OCI等網路客戶連接。
3.SybaseASE
C/S結構,可以用ODBC、Jconnect、Ct-library等網路客戶連接。
4.DB2
跨平台,多層結構,支持ODBC、JDBC等客戶。
六、操作簡便
1.SQLServer
操作簡單,但只有圖形界面。
2.Oracle
較復雜,同時提供GUI和命令行,在windowsNT和unix下操作相同。
3.SybaseASE
較復雜,同時提供GUI和命令行。但GUI較差,常常無法及時狀態,建議使用命令行。
4.DB2
操作簡單,同時提供GUI和命令行,在windowsNT和unix下操作相同。
七、使用風險
1.SQLserver
完全重寫的代碼,經歷了長期銷沖的測試,不斷延遲,許多功能需要時間來證明。並不十分兼容。
2.Oracle
長時間的開發經驗,完全向下兼容。得到廣泛的應用。完全沒有風險。
3.SybaseASE
向下兼容,但是ct-library程序不益移植。
4.DB2
在巨型企業得到廣泛的應用,向下兼容性好。風險小
4. 現在主流資料庫
主流的資料庫有:
1、MySQL
MySQL是一個關系型資料庫管理系統,由瑞典MySQL AB 公司開發,屬於Oracle旗下產品。
MySQL 是最流行的關系型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的RDBMS(Relational Database Management System,關系資料庫管理系統) 應用軟體之一。
2、SQL Server
SQL Server是Microsoft 公司推出的關系型資料庫管理系統。
具有使用方便可伸縮性好與相關軟體集成程度高等優點,可跨越從運行Microsoft Windows 98 的膝上型電腦到運行Microsoft Windows 2012 的大型多處理器的伺服器等多種平台使用。
3、Oracle Database
Oracle Database,是甲骨文公司的一款關系資料庫管理系統。
它是在資料庫領域一直處於領先地位的產品。系統可移植性好、使用方便、功能強,適用於各類大、中、小、微機環境。它是一種高效率、可靠性好的、適應高吞吐量的資料庫方案。
(4)主數據系統資料庫擴展閱讀
資料庫的類型
1、關系資料庫
關系型資料庫,存儲的格式可以直觀地反映實體間的關系。關系型資料庫和常見的表格比較相似,關系型資料庫中表與表之間是有很多復雜的關聯關系的。 常見的關系型資料庫有Mysql,SqlServer等。
在輕量或者小型的應用中,使用不同的關系型資料庫對系統的性能影響不大,但是在構建大型應用時,則需要根據應用的業務需求和性能需求,選擇合適的關系型資料庫。
2、非關系型資料庫
非關系型資料庫,指的是分布式的、非關系型的、不保證遵循ACID原則的數據存儲系統。非關系型資料庫技術與CAP理論、一致性哈希演算法有密切關系。
所謂CAP理論,簡單來說就是一個分布式系統不可能滿足可用性、一致性與分區容錯性這三個要求,一次性滿足兩種要求是該系統的上限。
而一致性哈希算則指的是非關系型資料庫在應用過程中,為滿足工作需求而在通常情況下產生的一種數據演算法,該演算法能有效解決工作方面的諸多問題但也存在弊端,即工作完成質量會隨著節點的變化而產生波動,當節點過多時,相關工作結果就無法那麼准確。