1. 常用的存儲架構有
順序存儲方法它是把邏輯上相鄰的結點存儲在物理位置相鄰的存儲單元里,結點間的邏輯關系由存儲單元的鄰接關系來體現,由此得到的存儲表示稱為順序存儲結構。順序存儲結構是一種最基本的存儲表示方法,通常藉助於程序設計語言中的數組來實現。
鏈接存儲方法它不要求邏輯上相鄰的結點在物理位置上亦相鄰,結點間的邏輯關系是由附加的指針欄位表示的。由此得到的存儲表示稱為鏈式存儲結構,鏈式存儲結構通常藉助於程序設計語言中的指針類型來實現。
順序存儲和鏈接存儲的基本原理
順序存儲和鏈接存儲是數據的兩種最基本的存儲結構。
在順序存儲中,每個存儲空間含有所存元素本身的信息,元素之間的邏輯關系是通過數組下標位置簡單計算出來的線性表的順序存儲,若一個元素存儲在對應數組中的下標位置為i,則它的前驅元素在對應數組中的下標位置為i-1,它的後繼元素在對應數組中的下標位置為i+1。在鏈式存儲結構中,存儲結點不僅含有所存元素本身的信息,而且含有元素之間邏輯關系的信息。
數據的鏈式存儲結構可用鏈接表來表示。
其中data表示值域,用來存儲節點的數值部分。Pl,p2,…,Pill(1n≥1)均為指針域,每個指針域為其對應的後繼元素或前驅元素所在結點(以後簡稱為後繼結點或前驅結點)的存儲位置。通過結點的指針域(又稱為鏈域)可以訪問到對應的後繼結點或前驅結點,若一個結點中的某個指針域不需要指向其他結點,則令它的值為空(NULL)。
在數據的順序存儲中,由於每個元素的存儲位置都可以通過簡單計算得到,所以訪問元素的時間都相同;而在數據的鏈接存儲中,由於每個元素的存儲位置保存在它的前驅或後繼結點中,所以只有當訪問到其前驅結點或後繼結點後才能夠按指針訪問到,訪問任一元素的時間與該元素結點在鏈式存儲結構中的位置有關。
儲存器方面的儲存結構
儲存系統的層次結構為了解決存儲器速度與價格之間的矛盾,出現了存儲器的層次結構。
程序的局部性原理
在某一段時間內,CPU頻繁訪問某一局部的存儲器區域,而對此范圍外的地址則較少訪問的現象就是
程序的局部性原理。層次結構是基於程序的局部性原理的。對大量典型程序運行情況的統計分析得出的結論是:CPU對某些地址的訪問在短時間間隔內出現集中分布的傾向。這有利於對存儲器實現層次結構。
多級存儲體系的組成
目前,大多採用三級存儲結構。
即:Cache-主存-輔存,如下圖:
3、多級存儲系統的性能
考慮由Cache和主存構成的兩級存儲系統,其性能主要取決於Cache和貯存的存取周期以及訪問它們的
次數。(存取周期為: Tc,Tm ;訪問次數為: Nc,Nm)
(1)Cache的命中率 H= Nc / (Nc+Nm)
(2)CPU訪存的平均時間 Ta= H * Tc+ (1-H) Tm
Cache-主存系統的效率
e= Tc / Ta
=1/H+(1-H)Tm/Tc
根據統計分析:Cache的命中率可以達到90%~98%
當Cache的容量為:32KB時,命中率為86%
64KB時,命中率為92%
128KB時,命中率為95%
256KB時,命中率為98%
2. 網站的基本架構是什麼
網站架構按照製作步驟分為硬架構和軟架構。
一、硬架構
1、機房:在選擇機房的時候,根據網站用戶的地域分布,可以選擇網通、電信等單機房或雙機房。
2、帶寬:預估網站每天的訪問量,根據訪問量選擇合適的帶寬,計算帶寬大小主要涉及峰值流量和頁面大小兩個指標。
3、伺服器:選擇需要的伺服器,如圖片伺服器,頁面伺服器,資料庫伺服器,應用伺服器,日誌伺服器,對於訪問量大點的網站而言,分離單獨的圖片伺服器和頁面伺服器相當必要。
二、軟架構
1、網站的框架:現在的PHP框架有很多選擇,比如:CakePHP,Symfony,Zend Framework,根據創作團隊對各個框架熟悉程度選擇。
2、邏輯的分層
1)表現層:所有和表現相關的邏輯都應該被納入表現層的范疇。
2)應用層:主要作用是定義用戶可以做什麼,並把操作結果反饋給表現層。
3)領域層:包含領域邏輯的層,就是告訴用戶具體的操作流程的。
4)持久層:即資料庫,保存領域模型保存到資料庫,包含網站的架構和邏輯關系等。
(2)圖片網站文件存儲架構擴展閱讀
網站的分類
1、根據網站所用編程語言分類:例如asp網站、php網站、jsp網站、Asp. net網站等;
2、根據網站的用途分類:例如門戶網站(綜合網站)、行業網站、娛樂網站等;
3、根據網站的功能分類:例如單一網站(企業網站)、多功能網站(網路商城)等等。
4、根據網站的持有者分類:例如個人網站、商業網站、政府網站、教育網站等。
5、根據網站的商業目的分類:營利型網站(行業網站、論壇)、非營利性型網站(企業網站、政府網站、教育網站)。
3. 信息以文件形式存儲,文件用什麼分類分層存放
文件、塊和對象是三種以不同的方式來保存、整理和呈現數據的存儲格式。這些格式各有各的功能和限制。文件存儲會以文件和文件夾的層次結構來整理和呈現數據;塊存儲會將數據拆分到任意劃分且大小相同的卷中; 對象存儲會管理數據並將其鏈接至關聯的元數據。
塊存儲
塊存儲會將數據拆分成塊,並單獨存儲各個塊。每個數據塊都有一個唯一標識符,所以存儲系統能將較小的數據存放在最方便的位置。這意味著有些數據可以存儲在 linux 環境中,有些則可以存儲在 Windows 單元中。
塊存儲通常會被配置為將數據與用戶環境分離,並會將數據分布到可以更好地為其提供服務的多個環境中。然後,當用戶請求數據時,底層存儲軟體會重新組裝來自這些環境的數據塊,並將它們呈現給用戶。它通常會部署在存儲區域網路 (SAN) 環境中,而且必須綁定到正常運行的伺服器。
由於塊存儲不依賴於單條數據路徑(和文件存儲一樣),因此可以實現快速檢索。每個塊都獨立存在,且可進行分區,因此可以通過不同的操作系統進行訪問,這使得用戶可以完全自由地配置數據。它是一種高效可靠的數據存儲方式,且易於使用和管理。它適用於要執行大型事務的企業和部署了大型資料庫的企業。這意味著,需要存儲的數據越多,就越適合使用塊存儲。
塊存儲有一些缺點。塊存儲的成本高昂。它處理元數據的能力有限。
操作對象:磁碟
存儲協議:SCSI、iSCSI、FC
介面命令:以SCSI為例,主要有Read/Write/Read Capacity
存儲架構:DAS、SAN
文件存儲
文件存儲也稱為文件級存儲或基於文件的存儲,數據會以單條信息的形式存儲在文件夾中。當需要訪問該數據時,計算機需要知道相應的查找路徑。存儲在文件中的數據會根據元數據來進行整理和檢索,這些元數據會告訴計算機文件所在的確切位置。
請試想一下塞滿文件櫃的儲藏室。每個文檔都會按照某種類型的邏輯層次結構來排放 ——按文件櫃、抽屜、文件夾,然後再是紙張。「分層存儲」這個術語就是這么來的,而這就是文件存儲。它是適用於直接和網路附加存儲(NAS)系統的最古老且運用最為廣泛的一種數據存儲系統;當訪問保存在個人計算機上的文件中的文檔,就是在使用文件存儲。文件存儲具有豐富多樣的功能,幾乎可以存儲任何內容。它非常適合用來存儲一系列復雜文件,並且有助於用戶快速導航。
問題是基於文件的存儲系統必須通過添置更多系統來進行橫向擴展,而不是通過增添更多容量來進行縱向擴展。
操作對象:文件和文件夾
存儲協議:NFS、SAMBA(SMB)、POSIX
介面命令:以NFS為例,文件相關的介面命令包括:READ/WRITE/CREATE/REMOVE/RENAME/LOOKUP/ACCESS 等;文件夾相關的介面命令包括:MKDIR/RMDIR/READDIR 等
存儲架構:NAS (【Linux】NAS存儲_Jacky_Feng的博客-CSDN博客)
對象存儲
對象存儲,也稱為基於對象的存儲,是一種扁平結構,其中的文件被拆分成多個部分並散布在多個硬體間。在對象存儲中,數據會被分解為稱為「對象」的離散單元,並保存在單個存儲庫中,而不是作為文件夾中的文件或伺服器上的塊來保存。
對象存儲卷會作為模塊化單元來工作:每個卷都是一個自包含式存儲庫,均含有數據、允許在分布式系統上找到對象的唯一標識符以及描述數據的元數據。元數據包括年齡、隱私/安全信息和訪問突發事件等詳細信息。為了檢索數據,存儲操作系統會使用元數據和標識符,這樣可以更好地分配負載,並允許管理員應用策略來執行更強大的搜索。
對象存儲需要一個簡單的 HTTP 應用編程介面 (API),以供大多數客戶端(各種語言)使用。對象存儲經濟高效:您只需為已用的內容付費。它可以輕松擴展,因而是公共雲存儲的理想之選。它是一個非常適用於靜態數據的存儲系統,其靈活性和扁平性意味著它可以通過擴展來存儲極大量的數據。對象具有足夠的信息供應用快速查找數據,並且擅長存儲非結構化數據。
它的缺點是無法修改對象 ,即必須一次性完整地寫入對象。對象存儲也不能很好地與傳統資料庫搭配使用,因為編寫對象是一個緩慢的過程,編寫應用以使用對象存儲 API 並不像使用文件存儲那麼簡單。
操作對象:對象(Object)
存儲協議:S3、Swift
介面命令:主要有PUT/GET/DELETE等
存儲架構:去中心化框架
對象存儲概念
對象存儲的數據組成
存儲桶(Bucket):存放對象的「容器」,且該「容器」無容量上限。對象以扁平化結構存放在存儲桶中,無文件夾和目錄的概念,用戶可選擇將對象存放到單個或多個存儲桶中。存儲桶的容量大小需要通過累加各個對象的大小得到。
每個存儲桶可容納任意數量的對象,但同一個主賬號下存儲桶數量最多僅能夠創建200個。(???)
對於存儲桶,應當以用途為粒度進行劃分,確保每個存儲桶的用途盡可能單一。例如,針對存放個人文件、發布靜態網站、存儲備份等用途都應該創建不同的存儲桶。此外,不同項目的數據、不同的網站,或者完全私人的文件與工作性質、需要分享的文件,也應該劃分不同的存儲桶。
對象存儲中也沒有「文件夾」的概念。對象存儲的管理平台為了模仿本地存儲的使用習慣,並與本地存儲系統互相兼容而模擬了目錄結構,背後的原理也僅僅是根據 / 這個字元對 key 進行分隔。為了表示空目錄,部分雲平台也提供「文件夾」對象,實際上只是 key 以 / 結尾的空存儲對象。
存儲桶所在地域(Regin)
指對象存儲的數據中心所在地域。對象存儲允許用戶在不同地域創建存儲桶,可以選擇在離業務最近的地域上創建存儲桶,以滿足低延遲、低成本以及合規性要求。
Bucket讀寫許可權
Bucket讀寫許可權包括:私有讀寫、公有讀私有寫和公有讀寫。
私有讀寫
只有該存儲桶的創建者及有授權的賬號才對該存儲桶中的對象有讀寫許可權,其他任何人對該存儲桶中的對象都沒有讀寫許可權。存儲桶訪問許可權默認為私有讀寫,推薦使用。
公有讀私有寫
任何人(包括匿名訪問者)都對該存儲桶中的對象有讀許可權,但只有存儲桶創建者及有授權的賬號才對該存儲桶中的對象有寫許可權。
公有讀寫
任何人(包括匿名訪問者)都對該存儲桶中的對象有讀許可權和寫許可權,不推薦使用。
對象(Object):對象存儲的基本單元,可理解為任何格式類型的數據,例如圖片、文檔和音視頻文件等。
每個對象都由對象鍵(Key)、對象值(Data)、和對象元數據(Metadata)組成。
對象鍵(Key):對象鍵是對象在存儲桶中的全局唯一標識(UID),可以理解為文件(名)路徑。
key用於檢索對象,文件對象的 key 與實際存儲路徑無關,伺服器和用戶不需要知道數據的物理地址,通過key就能找到對象。
對象值(Data):即存儲對象內容數據,可以理解為文件內容(Object Content)。
對象元數據(Metadata):是一組鍵值對,可以通俗的理解為文件的屬性,例如文件的修改時間、存儲類型等。(傳統的文件存儲,元數據屬於文件本身,和文件一起封裝存儲。而對象存儲,元數據獨立出來,並不在數據內部封裝。)
對象訪問地址
對象的訪問地址由存儲桶訪問地址和對象鍵組成,其結構形式為<存儲桶域名>/<對象鍵> 。
例如:上傳對象exampleobject.txt到廣州(華南)的存儲桶examplebucket-1250000000中,那麼exampleobject.txt的訪問地址是:examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/exampleobject.txt。其中examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com為存儲桶域名,exampleobject.txt為對象鍵。
目錄和文件夾
對象存儲中本身是沒有文件夾和目錄的概念的,對象存儲不會因為上傳對象project/a.txt而創建一個project文件夾。為了滿足用戶使用習慣,對象存儲在控制台、COS browser 等圖形化工具中模擬了「文件夾」或「目錄」的展示方式,具體實現是通過創建一個鍵值為project/,內容為空的對象,展示方式上模擬了傳統文件夾。
對象操作
用戶通過控制台、工具、API、SDK等多種方式管理對象。
對象存儲架構
對象存儲設備(OSD)
OSD由存儲介質、處理器、內存以及網路系統等組成,負責管理本地的對象,是對象存儲系統的核心。和塊設備相比,它們的差異在於提供的訪問介面。OSD的主要功能是數據存儲和安全訪問。
數據存儲:OSD管理對象數據,並將它們放置在標準的磁碟系統上,OSD不提供塊介面訪問方式,Client請求數據時用對象ID、偏移進行數據讀寫。
智能分布:OSD用其自身的CPU和內存優化數據分布,並支持數據的預取。由於OSD可以智能地支持對象的預取,從而可以優化磁碟的性能。
對象元數據管理:OSD管理存儲的對象元數據與傳統的inode元數據相似,通常包括對象的數據塊和對象的長度。而在傳統的NAS系統中,這些元數據是由文件伺服器維護的,對象存儲架構將系統中主要的元數據管理工作由OSD來完成,降低了Client的開銷。
元數據伺服器(MDS)
MDS控制Client與OSD對象的交互,為客戶端提供元數據,主要是文件的邏輯視圖(文件與目錄的組織關系、每個文件所對應的OSD等)。主要功能如下:
對象存儲訪問:MDS構造和管理描述每個文件分布的邏輯視圖,允許Client直接訪問對象。MDS為Client提供訪問該文件所含對象的能力,OSD在接收到每個請求時將先驗證該能力,然後才可以訪問。
文件和目錄訪問管理:MDS在存儲系統上構建一個文件結構,包括限額控制、目錄和文件的創建和刪除、訪問控制等。
Client Cache一致性:為了提高Client性能,在對象存儲系統設計時通常支持Client方的Cache。由於引入Client方的Cache,帶來了Cache一致性問題,MDS支持基於Client的文件Cache,當Cache的文件發生改變時,將通知Client刷新Cache,從而防止Cache不一致引發的問題。
客戶端(Client)
對象存儲系統提供給用戶的也是標準的POSIX文件訪問介面。介面具有和通用文件系統相同的訪問方式,同時為了提高性能,也具有對數據的Cache功能和文件的條帶功能。同時,文件系統必須維護不同客戶端上Cache的一致性,保證文件系統的數據一致。
文件系統讀訪問流程:
① 客戶端應用發出讀請求;
② 文件系統向元數據伺服器發送請求,獲取要讀取的數據所在的OSD;
③ 直接向每個OSD發送數據讀取請求;
④ OSD得到請求以後,判斷要讀取的Object,並根據此Object要求的認證方式,對客戶端進行認證,如果此客戶端得到授權,則將Object的數據返回給客戶端;
⑤ 文件系統收到OSD返回的數據以後,讀操作完成。
對象存儲的優缺點
(1)優點:
容量大,高擴展性
對象存儲的容量是EB級以上,對象存儲的所有業務、存儲節點採用分布式集群方式工作,各功能節點、集群都可以獨立擴容。從理論上來說,某個對象存儲系統或單個桶(bucket),並沒有總數據容量和對象數量的限制,即服務商就可以不停地往架構里增加資源,這個存儲空間就是無限的,也是支持彈性伸縮的。
高安全性,可靠性
對象存儲採用了分布式架構,對數據進行多設備冗餘存儲(至少三個以上節點),實現異地容災和資源隔離。數據訪問方面,所有的桶和對象都有訪問控制策略,所有連接都支持SSL加密,訪問用戶進行身份許可權鑒定。
高性能,支持海量用戶的並發訪問
(2)缺點:
不支持直接在存儲上修改
對象存儲系統保存的Object不支持修改(追加寫Object需要調用特定的介面,生成的Object也和正常上傳的Object類型上有差別)。用戶哪怕是僅僅需要修改一個位元組也需要重新上傳整個Object。因此,它不適合存儲需要頻繁擦寫的數據。
參考鏈接:
對象存儲,為什麼那麼火? - 知乎 (hu.com)
對象存儲 存儲桶概述 - 開發者指南 - 文檔中心 - 騰訊雲 (tencent.com)
基本概念 (aliyun.com)
文件存儲、塊存儲還是對象存儲? (redhat.com)
linux
駐馬店市民請關注領取補貼!
巨魔-抽手機公告
廣告
對比塊存儲、文件存儲、對象存儲
1242閱讀·0評論·3點贊
2019年2月27日
ShapeFile的文件格式設計
90閱讀·0評論·0點贊
2009年3月20日
應用ceph對象存儲(ceph-13.2.10)
72閱讀·0評論·0點贊
2022年11月26日
三種存儲類型比較-文件、塊、對象存儲
4.8W閱讀·0評論·13點贊
2016年7月26日
常見圖片存儲格式文件簡介
4534閱讀·0評論·0點贊
2020年5月4日
s3cmd常用命令
781閱讀·0評論·0點贊
2022年11月17日
駐馬店發布,你有一台5G手機待領取
00:23
巨摩互動
廣告
常見的存儲格式
1083閱讀·0評論·0點贊
2022年2月15日
文件、對象、塊區別
1399閱讀·0評論·0點贊
2020年7月13日
對象存儲、文件存儲、塊存儲的區別和聯系
7330閱讀·2評論·5點贊
2021年10月16日
數據分析中常見的存儲方式
1537閱讀·0評論·0點贊
2021年11月16日
三種存儲類型:塊存儲、文件存儲、對象存儲
1.5W閱讀·3評論·55點贊
2020年11月2日
如何設計二進制文件格式
1940閱讀·0評論·1點贊
2020年3月6日
BMP文件存儲格式
472閱讀·0評論·2點贊
2021年8月2日
hive 的存儲格式
1765閱讀·0評論·1點贊
2022年6月18日
數據存儲格式
446閱讀·0評論·0點贊
2022年12月21日
總結:對象存儲、塊存儲、文件存儲的區別
6606閱讀·0評論·3點贊
2022年4月9日
c語言中文件rw,什麼是「塊文件」?
386閱讀·0評論·0點贊
2021年5月23日
【存儲】塊存儲、文件存儲和對象存儲的區別?
350閱讀·0評論·0點贊
2022年7月22日
塊存儲、文件存儲與對象存儲的區別與應用場景
1846閱讀·1評論·0點贊
2022年6月5日
數據在內存中的存儲方式
272閱讀·0評論·0點贊
2022年8月21日
去首頁
看看更多熱門內容