當前位置:首頁 » 存儲配置 » 資料庫存儲方式

資料庫存儲方式

發布時間: 2023-10-18 19:48:02

1. 資料庫應用系統中的數據是以表還是行還是列還是特定的形式儲存的

資料庫應用系統中的數據以二維表的方式直接存儲目標數據。

一個表由行和列組成的,行數據代表具體的生活中的實體數據,列經常被稱作是域,也就是行的某個特性,從實體對象本身出發就是對象的屬性。

表中的第一行通常稱為屬性名,表中的每一個元組和屬性都是不可再分的,且元組的次序是無關緊要的。



(1)資料庫存儲方式擴展閱讀

行存儲和列存儲的應用場景

行存儲的適用場景:

(1)適合隨機的增、刪、改、查操作;

(2)需要在行中選取所有屬性的查詢操作;

(3)需要頻繁插入或更新的操作,其操作與索引和行的大小更為相關。

列存儲的適用場景:

(1)查詢過程中,可針對各列的運算並發執行,在內存中聚合完整記錄集,降低查詢響應時間;

(2)在數據中高效查找數據,無需維護索引(任何列都能作為索引),查詢過程中能夠盡量減少無關IO,避免全表掃描;

(3)因為各列獨立存儲,且數據類型已知,可以針對該列的數據類型、數據量大小等因素動態選擇壓縮演算法,以提高物理存儲利用率;如果某一行的某一列沒有數據,在列存儲時,就可以不存儲該列的值,這將比行式存儲更節省空間。

2. 數據信息的存儲方式可以分為幾類

(1)結構化數據,簡單來說就是資料庫。結合到典型場景中更容易理解,比如企業ERP、財務系統;醫療HIS資料庫;政府行政審批;其他核心資料庫等。這些應用需要哪些存儲方案呢?基本包括高速存儲應用需求、數據備份需求、數據共享需求以及數據容災需求。
(2)非結構化資料庫是指其欄位長度可變,並且每個欄位的記錄又可以由可重復或不可重復的子欄位構成的資料庫,用它不僅可以處理結構化數據(如數字、符號等信息)而且更適合處理非結構化數據(全文文本、圖像、聲音、影視、超媒體等信息)。
面對海量非結構數據存儲,杉岩海量對象存儲MOS,提供完整解決方案,採用去中心化、分布式技術架構,支持百億級文件及EB級容量存儲,具備高效的數據檢索、智能化標簽和分析能力,輕松應對大數據和雲時代的存儲挑戰,為企業發展提供智能決策。

3. 資料庫一般用什麼存儲

  • 業務數據,包括用戶,訂單等數據,要求數據嚴格准確和一致

  • 規模如果是在千萬級,或者不超過10億級,80%選用MySQL來存儲

  • 規模如果再10億-萬億,目前HBASE為主

  • 以上兩種是免費資料庫,但對於Oracle,DB2,SQL Server付費資料庫(巨貴),主要使用在銀行和電信,因為對數據一致性,准確性,容災備份要求更嚴格。

  • 因為商業資料庫的昂貴,互聯網公司一般用不起,感興趣可以了解下10年前阿里發起的去IOE的故事,即去掉IBM,Oracle,EMC,代替以開源軟體再次開放的系統,開創新數據新時代。

  • 日誌數據,包括用戶所有線上行為數據,瀏覽,搜索,點擊等,存儲在HDFS上

  • 這類數據,相比訂單和支付數據,規模要成10倍-1000倍增長。比如,我瀏覽10個店鋪寶貝才轉化一個訂單數據。但該類數據,不會要求太多性能和苛刻的准確性,甚至可以容忍丟小部分日誌數據。這部分數據,會放到HDFS上來存儲。即一種分部式文件存儲系統,存儲成本很低,如果查詢的話,就可以直接使用hive等工具,寫SQL查詢。

  • 當然,資料庫現在發展很迅猛,比如TiDB,非關系資料庫MongoDB,緩存Redis等。



4. 數據存儲形式有哪幾種

【塊存儲】

典型設備:磁碟陣列,硬碟

塊存儲主要是將裸磁碟空間整個映射給主機使用的,就是說例如磁碟陣列裡面有5塊硬碟(為方便說明,假設每個硬碟1G),然後可以通過劃邏輯盤、做Raid、或者LVM(邏輯卷)等種種方式邏輯劃分出N個邏輯的硬碟。(假設劃分完的邏輯盤也是5個,每個也是1G,但是這5個1G的邏輯盤已經於原來的5個物理硬碟意義完全不同了。例如第一個邏輯硬碟A裡面,可能第一個200M是來自物理硬碟1,第二個200M是來自物理硬碟2,所以邏輯硬碟A是由多個物理硬碟邏輯虛構出來的硬碟。)

接著塊存儲會採用映射的方式將這幾個邏輯盤映射給主機,主機上面的操作系統會識別到有5塊硬碟,但是操作系統是區分不出到底是邏輯還是物理的,它一概就認為只是5塊裸的物理硬碟而已,跟直接拿一塊物理硬碟掛載到操作系統沒有區別的,至少操作系統感知上沒有區別。

此種方式下,操作系統還需要對掛載的裸硬碟進行分區、格式化後,才能使用,與平常主機內置硬碟的方式完全無異。

優點:

1、 這種方式的好處當然是因為通過了Raid與LVM等手段,對數據提供了保護。

2、 另外也可以將多塊廉價的硬碟組合起來,成為一個大容量的邏輯盤對外提供服務,提高了容量。

3、 寫入數據的時候,由於是多塊磁碟組合出來的邏輯盤,所以幾塊磁碟可以並行寫入的,提升了讀寫效率。

4、 很多時候塊存儲採用SAN架構組網,傳輸速率以及封裝協議的原因,使得傳輸速度與讀寫速率得到提升。

缺點:

1、採用SAN架構組網時,需要額外為主機購買光纖通道卡,還要買光纖交換機,造價成本高。

2、主機之間的數據無法共享,在伺服器不做集群的情況下,塊存儲裸盤映射給主機,再格式化使用後,對於主機來說相當於本地盤,那麼主機A的本地盤根本不能給主機B去使用,無法共享數據。

3、不利於不同操作系統主機間的數據共享:另外一個原因是因為操作系統使用不同的文件系統,格式化完之後,不同文件系統間的數據是共享不了的。例如一台裝了WIN7/XP,文件系統是FAT32/NTFS,而Linux是EXT4,EXT4是無法識別NTFS的文件系統的。就像一隻NTFS格式的U盤,插進Linux的筆記本,根本無法識別出來。所以不利於文件共享。


【文件存儲】

典型設備:FTP、NFS伺服器

為了克服上述文件無法共享的問題,所以有了文件存儲。

文件存儲也有軟硬一體化的設備,但是其實普通拿一台伺服器/筆記本,只要裝上合適的操作系統與軟體,就可以架設FTP與NFS服務了,架上該類服務之後的伺服器,就是文件存儲的一種了。

主機A可以直接對文件存儲進行文件的上傳下載,與塊存儲不同,主機A是不需要再對文件存儲進行格式化的,因為文件管理功能已經由文件存儲自己搞定了。

優點:

1、造價交低:隨便一台機器就可以了,另外普通乙太網就可以,根本不需要專用的SAN網路,所以造價低。

2、方便文件共享:例如主機A(WIN7,NTFS文件系統),主機B(Linux,EXT4文件系統),想互拷一部電影,本來不行。加了個主機C(NFS伺服器),然後可以先A拷到C,再C拷到B就OK了。(例子比較膚淺,請見諒……)

缺點:

讀寫速率低,傳輸速率慢:乙太網,上傳下載速度較慢,另外所有讀寫都要1台伺服器裡面的硬碟來承擔,相比起磁碟陣列動不動就幾十上百塊硬碟同時讀寫,速率慢了許多。


【對象存儲】

典型設備:內置大容量硬碟的分布式伺服器

對象存儲最常用的方案,就是多台伺服器內置大容量硬碟,再裝上對象存儲軟體,然後再額外搞幾台服務作為管理節點,安裝上對象存儲管理軟體。管理節點可以管理其他伺服器對外提供讀寫訪問功能。

之所以出現了對象存儲這種東西,是為了克服塊存儲與文件存儲各自的缺點,發揚它倆各自的優點。簡單來說塊存儲讀寫快,不利於共享,文件存儲讀寫慢,利於共享。能否弄一個讀寫快,利 於共享的出來呢。於是就有了對象存儲。

首先,一個文件包含了了屬性(術語叫metadata,元數據,例如該文件的大小、修改時間、存儲路徑等)以及內容(以下簡稱數據)。

以往像FAT32這種文件系統,是直接將一份文件的數據與metadata一起存儲的,存儲過程先將文件按照文件系統的最小塊大小來打散(如4M的文件,假設文件系統要求一個塊4K,那麼就將文件打散成為1000個小塊),再寫進硬碟裡面,過程中沒有區分數據/metadata的。而每個塊最後會告知你下一個要讀取的塊的地址,然後一直這樣順序地按圖索驥,最後完成整份文件的所有塊的讀取。

這種情況下讀寫速率很慢,因為就算你有100個機械手臂在讀寫,但是由於你只有讀取到第一個塊,才能知道下一個塊在哪裡,其實相當於只能有1個機械手臂在實際工作。

而對象存儲則將元數據獨立了出來,控制節點叫元數據伺服器(伺服器+對象存儲管理軟體),裡面主要負責存儲對象的屬性(主要是對象的數據被打散存放到了那幾台分布式伺服器中的信息),而其他負責存儲數據的分布式伺服器叫做OSD,主要負責存儲文件的數據部分。當用戶訪問對象,會先訪問元數據伺服器,元數據伺服器只負責反饋對象存儲在哪些OSD,假設反饋文件A存儲在B、C、D三台OSD,那麼用戶就會再次直接訪問3台OSD伺服器去讀取數據。

這時候由於是3台OSD同時對外傳輸數據,所以傳輸的速度就加快了。當OSD伺服器數量越多,這種讀寫速度的提升就越大,通過此種方式,實現了讀寫快的目的。

另一方面,對象存儲軟體是有專門的文件系統的,所以OSD對外又相當於文件伺服器,那麼就不存在文件共享方面的困難了,也解決了文件共享方面的問題。

所以對象存儲的出現,很好地結合了塊存儲與文件存儲的優點。

最後為什麼對象存儲兼具塊存儲與文件存儲的好處,還要使用塊存儲或文件存儲呢?

1、有一類應用是需要存儲直接裸盤映射的,例如資料庫。因為資料庫需要存儲裸盤映射給自己後,再根據自己的資料庫文件系統來對裸盤進行格式化的,所以是不能夠採用其他已經被格式化為某種文件系統的存儲的。此類應用更適合使用塊存儲。

2、對象存儲的成本比起普通的文件存儲還是較高,需要購買專門的對象存儲軟體以及大容量硬碟。如果對數據量要求不是海量,只是為了做文件共享的時候,直接用文件存儲的形式好了,性價比高。

5. SQL資料庫中都是以表的形式存儲數據的嗎

SQLSERVER資料庫中數據存儲:
一:存儲文件類型
SQLSERVER有兩種數據存儲文件,分別是數據文件和日誌文件。
其中:數據文件是以8K(=8192Byte)的頁面(Page)作為存儲單元的。
而日誌文件是以日誌記錄作為存儲單元。本文只討論數據文件的存儲方式,不涉及到日誌文件存儲方式。
數據文件以頁面做為存儲單元存儲數據,要理解數據文件的存儲方式,必須了解SQLSERVER中定義的頁面類型種類。
二:頁面類型
SQLSERVER中頁面類型有8種,具體每種類型的詳細說明,見下圖:

用戶的數據一般存放在數據頁面中,由上圖可以看出,數據頁包含數據行中除 text、ntext 和 image 數據外的所有數據,text、ntext 和 image 數據存儲在單獨的頁中。那麼在一個數據頁面中,數據是如何存放,SQLSERVER又是根據什麼來定位頁面與頁面上的數據呢。要回答這個問題,有必要先了解數據頁面的具體結構。
三:數據頁面結構
在數據頁上,數據行緊接著頁首按順序放置。在頁尾有一個行偏移表。在行偏移表中,頁上的每一行都有一個條目,每個條目記錄那一行的第一個位元組與頁首的距離。行偏移表中的條目序列與頁中行的序列相反。數據頁面結構如下圖所示,下面將詳細解釋

其中:數據頁面頁首:96個位元組,保存著頁面的系統信息,如頁的類型、頁的可用空間量、擁有頁的對象的對象 ID 以及該頁面所屬於哪個物理文件。
數據區:對應於上圖中所有數據行的總區域,存放真正的數據,是以Slot為單位。一個Slot就是對應於一條數據記錄行,從0開始編號,以16進制反序保存,Slot0,Slot1....。
行偏移數組:用於記錄該數據頁面中每個Slot在數據頁面所處的相對位置,便於定位和檢索每個Slot在數據頁面中的位置,數組中每個記錄占兩個位元組。
四:存儲分配單位:盤區(擴展 Extend)
雖然SQLSERVER中數據文件存儲單位是頁面(Page),但實際SQLSERVE並不是為頁面為單位給數據分配空間,SQLSERVER默認的存儲分配單位是盤區。這樣做的主要原因是為了提高性能。為了避免頻繁的讀寫IO,在表或其它對象分配存儲空間,不是直接分配一個8K的頁面,而是以一個盤區(Extend)為存儲分配單位,一個盤區為8個頁面(=8*8K=64K)。
但是這樣做雖然減少了頻繁的IO讀寫,提高的資料庫性能,但卻導致出一個新問題,那就是在存儲那些只有少量數據,不足8K的對象,如果也是分配給一個盤區,就會存在存儲空間上的浪費,降低了空間分配效率。
為解決上述問題,SQLSERVER提供了一種解決方案,定義了兩種盤區類型,統一盤區和混合盤區。
其中:統一盤區只能存放同一個對象,該對象擁有這個盤區的所有頁面
混合盤區:由多個對象共同擁有該盤區。
在實際為對象分配存儲盤區時,為了提高空間利用率,默認的情況下,如果一個對象一開始大小小於8個頁面,就盡量放在混合盤區中,如果該對象大小增加到8個頁面後,SQLSERVER會為這個對象重新分配一個統一盤區。
為了能夠通過上述策略來實現為對象分配存儲盤區,SQLSERVER提供了GAM/SGAM機制來管理和維護數據文件的盤區信息。

熱點內容
奇駿哪個配置性價比 發布:2024-11-29 22:25:21 瀏覽:702
漢娜資料庫 發布:2024-11-29 22:25:17 瀏覽:703
伺服器和收銀機怎麼連接 發布:2024-11-29 22:24:11 瀏覽:608
關鍵詞排名源碼 發布:2024-11-29 22:22:03 瀏覽:72
禪道伺服器ip是什麼 發布:2024-11-29 22:22:02 瀏覽:808
參貪心演算法 發布:2024-11-29 21:54:24 瀏覽:340
php統計數組元素 發布:2024-11-29 21:46:08 瀏覽:195
健康和解壓哪個重要 發布:2024-11-29 21:40:07 瀏覽:749
聯通網的密碼去哪裡找 發布:2024-11-29 21:38:57 瀏覽:849
jscookie加密 發布:2024-11-29 21:33:03 瀏覽:40