① 四大開源資料庫是哪些
如果打算為項目選擇一款免費、開源的資料庫,那麼你可能會在MySQL與PostgreSQL之間猶豫不定。MySQL與PostgreSQL都是免
費、開源、強大、且功能豐富的資料庫。你主要的問題可能是:哪一個才是最好的開源資料庫,MySQL還是PostgreSQL呢?該選擇哪一個開源資料庫
呢?
在選擇資料庫時,你所做的是個長期的決策,因為後面如果再改變決定將是非常困難且代價高昂的。你希望一開始就選擇正確。兩個流行
的開源資料庫MySQL與PostgreSQL常常成為最後要選擇的產品。對這兩個開源資料庫的高層次概覽將會有助於你選擇最適合自己需要的。
MySQL
MySQL相對來說比較年輕,首度出現在1994年。它聲稱自己是最流行的開源資料庫。MySQL就是LAMP(用於Web開發的軟體包,包括
Linux、Apache及Perl/PHP/Python)中的M。構建在LAMP棧之上的大多數應用都會使用MySQL,包括那些知名的應用,如
WordPress、Drupal、Zend及phpBB等。
一開始,MySQL的設計目標是成為一個快速的Web伺服器後端,使用
快速的索引序列訪問方法(ISAM),不支持ACID。經過早期快速的發展之後,MySQL開始支持更多的存儲引擎,並通過InnoDB引擎實現了
ACID。MySQL還支持其他存儲引擎,提供了臨時表的功能(使用MEMORY存儲引擎),通過MyISAM引擎實現了高速讀的資料庫,此外還有其他的
核心存儲引擎與第三方引擎。
MySQL的文檔非常豐富,有很多質量不錯的免費參考手冊、圖書與在線文檔,還有來自於Oracle和第三方廠商的培訓與支持。
MySQL近幾年經歷了所有權的變更和一些頗具戲劇性的事件。它最初是由MySQL
AB開發的,然後在2008年以10億美金的價格賣給了Sun公司,Sun公司又在2010年被Oracle收購。Oracle支持MySQL的多個版
本:Standard、Enterprise、Classic、Cluster、Embedded與Community。其中有一些是免費下載的,另外一
些則是收費的。其核心代碼基於GPL許可,對於那些不想使用GPL許可的開發者與廠商來說還有商業許可可供使用。
現在,基於最初的
MySQL代碼還有更多的資料庫可供選擇,因為幾個核心的MySQL開發者已經發布了MySQL分支。最初的MySQL創建者之一Michael
"Monty"
Widenius貌似後悔將MySQL賣給了Sun公司,於是又開發了他自己的MySQL分支MariaDB,它是免費的,基於GPL許可。知名的
MySQL開發者Brian Aker所創建的分支Drizzle對其進行了大量的改寫,特別針對多CPU、雲、網路應用與高並發進行了優化。
PostgreSQL
PostgreSQL標榜自己是世界上最先進的開源資料庫。PostgreSQL的一些粉絲說它能與Oracle相媲美,而且沒有那麼昂貴的價格和傲慢的客服。它擁有很長的歷史,最初是1985年在加利福尼亞大學伯克利分校開發的,作為Ingres資料庫的後繼。
PostgreSQL是完全由社區驅動的開源項目,由全世界超過1000名貢獻者所維護。它提供了單個完整功能的版本,而不像MySQL那樣提供了多個
不同的社區版、商業版與企業版。PostgreSQL基於自由的BSD/MIT許可,組織可以使用、復制、修改和重新分發代碼,只需要提供一個版權聲明即
可。
可靠性是PostgreSQL的最高優先順序。它以堅如磐石的品質和良好的工程化而聞名,支持高事務、任務關鍵型應用。
PostgreSQL的文檔非常精良,提供了大量免費的在線手冊,還針對舊版本提供了歸檔的參考手冊。PostgreSQL的社區支持是非常棒的,還有來
自於獨立廠商的商業支持。
數據一致性與完整性也是PostgreSQL的高優先順序特性。PostgreSQL是完全支持ACID特性
的,它對於資料庫訪問提供了強大的安全性保證,充分利用了企業安全工具,如Kerberos與OpenSSL等。你可以定義自己的檢查,根據自己的業務規
則確保數據質量。在眾多的管理特性中,point-in-time
recovery(PITR)是非常棒的特性,這是個靈活的高可用特性,提供了諸如針對失敗恢復創建熱備份以及快照與恢復的能力。但這並不是
PostgreSQL的全部,項目還提供了幾個方法來管理PostgreSQL以實現高可用、負載均衡與復制等,這樣你就可以使用適合自己特定需求的功能
了。
② 分布式存儲排名前十名有哪些
一、 Ceph
Ceph最早起源於Sage就讀博士期間的工作、成果於2004年發表,並隨後貢獻給開源社區。經過多年的發展之後,已得到眾多雲計算和存儲廠商的支持,成為應用最廣泛的開源分布式存儲平台。
二、 GFS
GFS是google的分布式文件存儲系統,是專為存儲海量搜索數據而設計的,2003年提出,是閉源的分布式文件系統。適用於大量的順序讀取和順序追加,如大文件的讀寫。注重大文件的持續穩定帶寬,而不是單次讀寫的延遲。
三、 HDFS
HDFS(Hadoop Distributed File System),是一個適合運行在通用硬體(commodity hardware)上的分布式文件系統,是Hadoop的核心子項目,是基於流數據模式訪問和處理超大文件的需求而開發的。該系統仿效了谷歌文件系統(GFS),是GFS的一個簡化和開源版本。
③ openstack lbass v1 和v2的區別
OpenStack其實有三個與存儲相關的組件,這三個組件被人熟知的程度和組件本身出現時間的早晚是相符的,按熟悉程度排列如下:Swift——提供對象存儲(ObjectStorage),在概念上類似於AmazonS3服務,不過swift具有很強的擴展性、冗餘和持久性,也兼容S3APIGlance——提供虛機鏡像(Image)存儲和管理,包括了很多與AmazonAMIcatalog相似的功能。(Glance的後台數據從最初的實踐來看是存放在Swift的)。Cinder——提供塊存儲(BlockStorage),類似於Amazon的EBS塊存儲服務,目前僅給虛機掛載使用。(Amazon一直是OpenStack設計之初的假象對手和挑戰對象,所以基本上關鍵的功能模塊都有對應項目。除了上面提到的三個組件,對於AWS中的重要的EC2服務,OpenStack中是Nova來對應,並且保持和EC2API的兼容性,有不同的方法可以實現)三個組件中,Glance主要是虛機鏡像的管理,所以相對簡單;Swift作為對象存儲已經很成熟,連CloudStack也支持它。Cinder是比較新出現的塊存儲,設計理念不錯,並且和商業存儲有結合的機會,所以廠商比較積極。Swift關於Swift的架構和部署討論,除了官方網站,網上也有很多文章,這里就不重復.(也可以參考我之前在OpenStack中國行活動中上海站演講的PPT)。從開發上看,最近也沒有太大的結構性調整,所以我想主要說說比較適用的應用領域好了。從我所了解的實際案例來看,Swift出現的領域有4個,(應該還有,希望大家看到實際用例能夠指教)1.網盤。Swift的對稱分布式架構和多proxy多節點的設計導致它從基因里就適合於多用戶大並發的應用模式,最典型的應用莫過於類似Dropbox的網盤應用,Dropbox去年底已經突破一億用戶數,對於這種規模的訪問,良好的架構設計是能夠支撐的根本原因。Swift的對稱架構使得數據節點從邏輯上看處於同級別,每台節點上同時都具有數據和相關的元數據。並且元數據的核心數據結構使用的是哈希環,一致性哈希演算法對於節點的增減都只需重定位環空間中的一小部分數據,具有較好的容錯性和可擴展性。另外數據是無狀態的,每個數據在磁碟上都是完整的存儲。這幾點綜合起來保證了存儲的本身的良好的擴展性。另外和應用的結合上,Swift是說HTTP協議這種語言的,這使得應用和存儲的交互變得簡單,不需要考慮底層基礎構架的細節,應用軟體不需要進行任何的修改就可以讓系統整體擴展到非常大的程度。2.IaaS公有雲Swift在設計中的線性擴展,高並發和多租戶支持等特性,使得它也非常適合做為IaaS的選擇,公有雲規模較大,的遇到大量虛機並發啟動這種情況,所以對於虛機鏡像的後台存儲具體來說,實際上的挑戰在於大數據(超過G)的並發讀性能,Swift在OpenStack中一開始就是作為鏡像庫的後台存儲,經過RACKSpace上千台機器的部署規模下的數年實踐,Swift已經被證明是一個成熟的選擇。另外如果基於IaaS要提供上層的SaaS服務,多租戶是一個不可避免的問題,Swift的架構設計本身就是支持多租戶的,這樣對接起來更方便。3.備份歸檔RackSpace的主營業務就是數據的備份歸檔,所以Swift在這個領域也是久經考驗,同時他們還延展出一種新業務--「熱歸檔」。由於長尾效應,數據可能被調用的時間窗越來越長,熱歸檔能夠保證應用歸檔數據能夠在分鍾級別重新獲取,和傳統磁帶機歸檔方案中的數小時而言,是一個很大的進步。4.移動互聯網和CDN移動互聯網和手機游戲等產生大量的用戶數據,數據量不是很大但是用戶數很多,這也是Swift能夠處理的領域。至於加上CDN,如果使用Swift,雲存儲就可以直接響應移動設備,不需要專門的伺服器去響應這個HTTP的請求,也不需要在數據傳輸中再經過移動設備上的文件系統,直接是用HTTP協議上傳雲端。如果把經常被平台訪問的數據緩存起來,利用一定的優化機制,數據可以從不同的地點分發到你的用戶那裡,這樣就能提高訪問的速度,我最近看到Swift的開發社區有人在討論視頻網站應用和Swift的結合,竊以為是值得關注的方向。GlanceGlance比較簡單,是一個虛機鏡像的存儲。向前端nova(或者是安裝了Glance-client的其他虛擬管理平台)提供鏡像服務,包括存儲,查詢和檢索。這個模塊本身不存儲大量的數據,需要掛載後台存儲(Swift,S3。。。)來存放實際的鏡像數據。Glance主要包括下面幾個部分:lAPIservice:glance-api主要是用來接受Nova的各種api調用請求,將請求放入RBMQ交由後台處理,。lGlacne-registry用來和MySQL資料庫進行交互,存儲或者獲取鏡像的元數據,注意,剛才在Swift中提到,Swift在自己的StorageServer中是不保存元數據的,這兒的元數據是指保存在MySQL資料庫中的關於鏡像的一些信息,這個元數據是屬於Glance的。lImagestore:後台存儲介面,通過它獲取鏡像,後台掛載的默認存儲是Swift,但同時也支持AmazonS3等其他的鏡像。Glance從某種角度上看起來有點像虛擬存儲,也提供API,可以實現比較完整的鏡像管理功能。所以理論上其他雲平台也可以使用它。Glance比較簡單,又限於雲內部,所以沒啥可以多討論的,不如看看新出來的塊存儲組件Cinder,目前我對Cinder基本的看法是總體的設計不錯,細節和功能還有很多需要完善的地方,離一個成熟的產品還有點距離。CinderOpenStack到F版本有比較大的改變,其中之一就是將之前在Nova中的部分持久性塊存儲功能(Nova-Volume)分離了出來,獨立為新的組件Cinder。它通過整合後端多種存儲,用API介面為外界提供塊存儲服務,主要核心是對卷的管理,允許對卷,卷的類型,卷的快照進行處理。Cinder包含以下三個主要組成部分APIservice:Cinder-api是主要服務介面,負責接受和處理外界的API請求,並將請求放入RabbitMQ隊列,交由後端執行。Cinder目前提供VolumeAPIV2Schelerservice:處理任務隊列的任務,並根據預定策略選擇合適的VolumeService節點來執行任務。目前版本的cinder僅僅提供了一個SimpleScheler,該調度器選擇卷數量最少的一個活躍節點來創建卷。Volumeservice:該服務運行在存儲節點上,管理存儲空間,塔處理cinder資料庫的維護狀態的讀寫請求,通過消息隊列和直接在塊存儲設備或軟體上與其他進程交互。每個存儲節點都有一個VolumeService,若干個這樣的存儲節點聯合起來可以構成一個存儲資源池。Cinder通過添加不同廠商的指定drivers來為了支持不同類型和型號的存儲。目前能支持的商業存儲設備有EMC和IBM的幾款,也能通過LVM支持本地存儲和NFS協議支持NAS存儲,所以Netapp的NAS應該也沒問題,好像華為也在努力中。我前段時間還在Cinder的blueprints看到IBM的GPFS分布式文件系統,在以後的版本應該會添加進來到目前為止,Cinder主要和Openstack的Nova內部交互,為之提供虛機實例所需要的卷Attach上去,但是理論上也可以單獨向外界提供塊存儲。部署上,可以把三個服務部署在一台伺服器,也可以獨立部署到不同物理節點現在Cinder還是不夠成熟,有幾個明顯的問題還沒很好解決,一是支持的商業存儲還不夠多,而且還不支持FCSAN,另外單點故障隱患沒解決,內部的schele調度演算法也太簡單。另外由於它把各種存儲整合進來又加了一層,管理倒是有法了,但是效率肯定是有影響,性能肯定有損耗,但這也是沒法的事了。Openstack通過兩年多發展,變得越來越龐大。目前光存儲就出現了三種:對象存儲、鏡像存儲和塊存儲。這也是為了滿足不同的需求,體現出開源項目靈活快速的特性。總的說來,當選擇一套存儲系統的時候,如果考慮到將來會被多個應用所共同使用,應該視為長期的決策。Openstack作為一個開放的系統,最主要是解決軟硬體供應商鎖定的問題,可以隨時選擇新的硬體供應商,將新的硬體和已有的硬體組成混合的集群,統一管理,當然也可以替換軟體技術服務的提供商,不用動應用。這是開源本身的優勢!
④ 什麼數據存儲軟體的兼容性比較高
1. Ceph
Ceph是一個強大的存儲系統,它在同一個系統中同時提供了對象,塊(通過RBD)和文件存儲。無論您是希望在虛擬機中使用塊設備,還是將非結構化數據存儲在對象存儲中,Ceph都可以在一個平台上提供所有功能,並且還能獲得出色的靈活性。 Ceph中的所有內容都以對象的形式存儲,不管原始的數據類型是什麼,RADOS(reliable autonomic distributed object store)都會把它們當做對象來進行存儲。
RADOS層確保數據始終保持一致狀態並且可靠。Ceph會通過數據復制,故障檢測和恢復,以及跨群集節點進行數據遷移和重新平衡來實現數據一致性。 Ceph提供了一個符合POSIX的網路文件系統(CephFS),旨在實現高性能,大數據存儲以及與傳統應用程序的最大兼容。Ceph可以通過各種編程語言或者radosgw(RGW)實現無縫的訪問對象存儲,(RGW)這是一種REST介面,它與為S3和Swift編寫的應用程序兼容。另一方面,Ceph的RADOS塊設備(RBD)可以訪問在整個存儲集群中條帶化和復制的塊設備映像。
Ceph的特性
獨立、開放和統一的平台:將塊,對象和文件存儲組合到一個平台中,包括最新添加的CephFS
兼容性:您可以使用Ceph 存儲對外提供最兼容Amazon Web Services(AWS)S3的對象存儲。
精簡配置模式:分配存儲空間時,只是虛擬分配容量,在跟進使用情況佔用實際磁碟空間。這種模式提供了更多的靈活性和磁碟空間利用率。
副本:在Ceph Storage中,所有存儲的數據都會自動從一個節點復制到多個其他節點。默認任何時間群集中的都有三份數據。
自我修復:Ceph Monitors會不斷監控你的數據集。一旦出現一個副本丟失,Ceph會自動生成一個新副本,以確保始終有三份副本。
高可用:在Ceph Storage中,所有存儲的數據會自動從一個節點復制到多個其他的節點。這意味著,任意節點中的數據集被破壞或被意外刪除,在其他節點上都有超過兩個以上副本可用,保證您的數據具有很高的可用性。
Ceph很強大:您的集群可以用於任何場景。無論您希望存儲非結構化數據或為數據提供塊存儲或提供文件系統,或者希望您的應用程序直接通過librados使用您的存儲,而這些都已經集成在一個Ceph平台上了。
可伸縮性:C
⑤ 該選擇哪個開源資料庫哪一個更好
如果打算為項目選擇一款免費、開源的資料庫,那麼你可能會在MySQL與PostgreSQL之間猶豫不定。MySQL與PostgreSQL都是免費、開源、強大、且功能豐富的資料庫。你主要的問題可能是:哪一個才是最好的開源資料庫,MySQL還是PostgreSQL呢?該選擇哪一個開源資料庫呢?
在選擇資料庫時,你所做的是個長期的決策,因為後面如果再改變決定將是非常困難且代價高昂的。你希望一開始就選擇正確。兩個流行的開源資料庫MySQL與PostgreSQL常常成為最後要選擇的產品。對這兩個開源資料庫的高層次概覽將會有助於你選擇最適合自己需要的。
MySQL
MySQL相對來說比較年輕,首度出現在1994年。它聲稱自己是最流行的開源資料庫。MySQL就是LAMP(用於Web開發的軟體包,包括Linux、Apache及Perl/PHP/Python)中的M。構建在LAMP棧之上的大多數應用都會使用MySQL,包括那些知名的應用,如WordPress、Drupal、Zend及phpBB等。
一開始,MySQL的設計目標是成為一個快速的Web伺服器後端,使用快速的索引序列訪問方法(ISAM),不支持ACID。經過早期快速的發展之後,MySQL開始支持更多的存儲引擎,並通過InnoDB引擎實現了ACID。MySQL還支持其他存儲引擎,提供了臨時表的功能(使用MEMORY存儲引擎),通過MyISAM引擎實現了高速讀的資料庫,此外還有其他的核心存儲引擎與第三方引擎。
MySQL的文檔非常豐富,有很多質量不錯的免費參考手冊、圖書與在線文檔,還有來自於Oracle和第三方廠商的培訓與支持。
MySQL近幾年經歷了所有權的變更和一些頗具戲劇性的事件。它最初是由MySQL AB開發的,然後在2008年以10億美金的價格賣給了Sun公司,Sun公司又在2010年被Oracle收購。Oracle支持MySQL的多個版本:Standard、Enterprise、Classic、Cluster、Embedded與Community。其中有一些是免費下載的,另外一些則是收費的。其核心代碼基於GPL許可,對於那些不想使用GPL許可的開發者與廠商來說還有商業許可可供使用。
現在,基於最初的MySQL代碼還有更多的資料庫可供選擇,因為幾個核心的MySQL開發者已經發布了MySQL分支。最初的MySQL創建者之一Michael "Monty" Widenius貌似後悔將MySQL賣給了Sun公司,於是又開發了他自己的MySQL分支MariaDB,它是免費的,基於GPL許可。知名的MySQL開發者Brian Aker所創建的分支Drizzle對其進行了大量的改寫,特別針對多CPU、雲、網路應用與高並發進行了優化。
PostgreSQL
PostgreSQL標榜自己是世界上最先進的開源資料庫。PostgreSQL的一些粉絲說它能與Oracle相媲美,而且沒有那麼昂貴的價格和傲慢的客服。它擁有很長的歷史,最初是1985年在加利福尼亞大學伯克利分校開發的,作為Ingres資料庫的後繼。
PostgreSQL是完全由社區驅動的開源項目,由全世界超過1000名貢獻者所維護。它提供了單個完整功能的版本,而不像MySQL那樣提供了多個不同的社區版、商業版與企業版。PostgreSQL基於自由的BSD/MIT許可,組織可以使用、復制、修改和重新分發代碼,只需要提供一個版權聲明即可。
可靠性是PostgreSQL的最高優先順序。它以堅如磐石的品質和良好的工程化而聞名,支持高事務、任務關鍵型應用。PostgreSQL的文檔非常精良,提供了大量免費的在線手冊,還針對舊版本提供了歸檔的參考手冊。PostgreSQL的社區支持是非常棒的,還有來自於獨立廠商的商業支持。
數據一致性與完整性也是PostgreSQL的高優先順序特性。PostgreSQL是完全支持ACID特性的,它對於資料庫訪問提供了強大的安全性保證,充分利用了企業安全工具,如Kerberos與OpenSSL等。你可以定義自己的檢查,根據自己的業務規則確保數據質量。在眾多的管理特性中,point-in-time recovery(PITR)是非常棒的特性,這是個靈活的高可用特性,提供了諸如針對失敗恢復創建熱備份以及快照與恢復的能力。但這並不是PostgreSQL的全部,項目還提供了幾個方法來管理PostgreSQL以實現高可用、負載均衡與復制等,這樣你就可以使用適合自己特定需求的功能了。
⑥ 架構中的業務能力和技術能力
談架構我們談什麼,如果單單談技術是不行的,架構師起到承上啟下的作用,上負責與客戶與業務涉眾溝通,下負責讓團隊理解需求和如何通過技術實現需求。架構師的語言包括架構圖,同時我們還要談論 業務能力 和 技術能力 。
業務能力是我們從業務需求、系統類別、行業背景分析出的,主要是按業務范圍或業務領域進行一定的劃分,比如說合同系統,那麼合同審批、合同簽署、合同存檔等就是業務能力。
技術能力是從我們選擇的技術、平台、基礎結構中體現出來的。如AWS S3的對象存儲能力,Lambda的無伺服器計算能力,DynamoDB的NoSQL數據存儲能力,ElasticSearch的搜索能力,又如ElastiCache的緩存能力和CloudFront的CDN能力。
架構師所做的架構設計實際上就是一個函數f(x),x是業務能力,所得f(x)是從業務能力映射出的技術能力。技術能力的全景圖就是技術架構圖,同時我們也可以通過技術債列表反應出我們所需要的技術能力以及技術能力的風險。
架構師跟客戶及業務團隊、涉眾通過業務能力以「業務語言」進行溝通,比如「合同審批需要支持多級可打回的自定義審批流程」、「合同簽署需要支持電子合同簽署」、「合同歸檔要實現合同掃描件及電子合同的保存」等等。這里我們不提及要使用的技術、產品、服務、品牌、平台和基礎設施,原因是客戶和涉眾並不能理解你的這些技術詞彙。
架構師跟應用開發和運維團隊以「技術語言」進行溝通,比如「合同審批採用開源,支持多節點並行審批並可退回前節點的自定義工作流產品」、「合同簽署採用Web界面和簽名采樣控制項進行電子簽署」、「合同歸檔需要滿足ISOxxxx的合同記錄管理系統」等等,這里我們要提起技術、產品、服務、品牌、平台和基礎設施,幫助開發和運維團隊理解在未來的時間里他們需要做哪些准備和工作,項目經理需要明白還需要何種能力的人力或其他工作資源。
通過業務語言和技術語言的雙向溝通,架構師起到承上啟下幫助技術團隊理解業務需求,通過技術滿足客戶和涉眾所提需求的目的。