Ⅰ 大數據的存儲
⼤數據的存儲⽅式是結構化、半結構化和⾮結構化海量數據的存儲和管理,輕型資料庫⽆法滿⾜對其存儲以及復雜的數據挖掘和分析操作,通常使⽤分布式⽂件系統、No SQL 資料庫、雲資料庫等。
結構化、半結構化和⾮結構化海量數據的存儲和管理,輕型資料庫⽆法滿⾜對其存儲以及復雜的數據挖掘和分析操作,通常使⽤分布式⽂件系統、No SQL 資料庫、雲資料庫等。
1 分布式系統:分布式系統包含多個⾃主的處理單元,通過計算機⽹絡互連來協作完成分配的任務,其分⽽治之的策略能夠更好的處理⼤規模數據分析問題。
主要包含以下兩類:
1)分布式⽂件系統:存儲管理需要多種技術的協同⼯作,其中⽂件系統為其提供最底層存儲能⼒的⽀持。分布式⽂件系統 HDFS 是⼀個⾼度容錯性系統,被設計成適⽤於批量處理,能夠提供⾼吞吐量的的數據訪問。
2)分布式鍵值系統:分布式鍵值系統⽤於存儲關系簡單的半結構化數據。典型的分布式鍵值系統有 Amazon Dynamo,以及獲得⼴泛應⽤和關注的對象存儲技術(Object Storage)也可以視為鍵值系統,其存儲和管理的是對象⽽不是數據塊。
2 Nosql 資料庫:關系資料庫已經⽆法滿⾜ Web2.0 的需求。主要表現為:⽆法滿⾜海量數據的管理需求、⽆法滿⾜數據⾼並發的需求、⾼可擴展性和⾼可⽤性的功能太低。No SQL 資料庫的優勢:可以⽀持超⼤規模數據存儲,靈活的數據模型可以很好地⽀持 Web2.0 應⽤,具有強⼤的橫向擴展能⼒等,典型的 No SQL 資料庫包含以下⼏種:
3 雲資料庫:雲資料庫是基於雲計算技術發展的⼀種共享基礎架構的⽅法,是部署和虛擬化在雲計算環境中的資料庫。
Ⅱ SQL如何備份大容量資料庫
資料庫備份介紹
1、備份位置
在SQL Server上,有多種備份位置可以選擇,如本地磁碟,網路磁碟,遠程地址,磁帶等。
各種備份位置均有自己的優點和缺點。
2、邏輯備份設備
在SQL Server上,可以通過創建邏輯備份設備來完成備份。使用邏輯備份設備的好處是,當變更備份地址時,不需要更改備份腳本,只需要更改邏輯備份設備的定義即可。
創建邏輯備份設備的腳本如下:
SQL code EXEC sp_addmpdevice @devtype=』disk』,@logicalname=』MYBackup』,@physicalname=』D:\backup\mydb.bak』
刪除備份設備的腳本:
SQL code Sp_dropdevice @logicalname=』MYBackup』
上述腳本只是刪除邏輯備份設備的定義,下述腳本將同時刪除備份文件:
SQL code Sp_dropdevice @logicalname=』MYBackup』,@devfile=』DELFILE』
使用邏輯備份設備的方法如下:
SQL code Backup database mydb to MYBackup
當然,還可在邏輯備份設備上指定過期時間等備份屬性,如:
SQL code Backup database mydb to MYBackup WITH EXPIREDATE=』13/01/2010』
或:
SQL code BACKUP DATABASE mydb to MYBackup WITH RETAINDAYS=7
3、備份集與存儲集
每一份備份包含於一個備份集,而一個備份集包含於一個存儲集。通過系統GUI進行備份時,SQL Server會自動指定備份集和存儲集,目的則是為了簡化管理。用T-SQL顯示指定則用如下語法:
SQL code BACKUP DATABASE mydb to MYBackup WITH RETAINDAYS=7,
NAME=』FULL』,
MEDIANAME=』ALLBackups』
NAMEs是指備份集名稱,MEDIANAME是指存儲集名稱。
4、全備份
不管恢復模式是哪一個,所有的備份都必須要有一個全備份,特別是日誌備份和差異備份,如果沒有全備份的話,將無法進行恢復。
簡單的全備份腳本如下所示,也可以通過維護計劃來指定全備份:
SQL code BACKUP DATABASE mydb to DISK=』D:\Backup\mydb.bak』
但需要注意的是,上述命令是將資料庫備份附加到當前的存在的文件上,如果不存在則創建它,並不會覆蓋原有文件。要覆蓋同名的備份文件,需要指定INIT參數。
SQL code BACKUP DATABASE mydb to DISK=』D:\Backup\mydb.bak』 WITH INIT
5、日誌備份
在完全恢復模式或者大容量日誌恢復模式下,日誌備份不僅僅是恢復的需要,同時也是手工管理事務日誌文件的一種方式。如果從不進行備份的話,在完全恢復模式或者大容量恢復模式下,事務日誌將會持續增長,直至消耗完所在磁碟。
日誌備份的腳本如下:
SQL code BACKUP LOG mydb_log TO DISK=』D:\backup\mydb.trn』
需要養成使用.trn為日誌備份的擴展名的習慣。
每個在資料庫上的動作都會被安排一個Log Sequence Number (LSN)。如果需要還原到指定的時間點,需要有持續的LSN記錄。也就是說,在完全恢復模式或者大容量日誌模式下,一個不被打斷的事務日誌備份鏈是恢復資料庫的基本要求。
6、差異備份
使用日誌備份來恢復時,無疑是一個很慢的過程,特別是上一個全備份的歷史比較悠久時。使用差異備份,便能縮短恢復時間。事實上,差異備份只是BACKUP DATABASE的一個選項,如下:
SQL code BACKUP DATABASE mydb TO DISK=』D:\backup\mydb.dif』 WITH DIFFERENTIAL,INIT
進行資料庫恢復時,先恢復資料庫全備份,再恢復資料庫差異備份,最後才恢復日誌備份。
差 異備份是與上一次全備份緊密相連的,不管期間有多少次日誌備份和差異備份,差異備份還是會從上一次全備開始備份。因此,經常會遇到這樣的一種情況,在生產 庫上需要臨時使用資料庫時,便用BACKUP DATABASE … TO DISK=』..』進行了一個備份,下一次的差異備份便會以這回的全備為准,如果過後把這個臨時全備刪除掉後,後面的差異備份就沒用了。
差異備份並不意味著磁碟空間肯定會少,這取決於實際情況。當期間大量操作發生時,差異備份還是會變得很大。
7、錯誤檢測
在備份過程中,備份進程會同時驗證數據,或者校驗不完整頁(torn page),或者驗證校驗和(checksum)。要使用該功能,需要激活該選項。
不完整頁檢測(Torn-page dection)僅僅檢查每一個頁看是否已經寫完成。如果發現一個頁只有部分被寫入,那麼就將其標記為torn。
校驗和驗證(checksum validation)是一種新的頁驗證機制。它會為每個頁添加一個值來表明該頁實際的大小。雖然看起來是個代價很高影響性能的操作,但事實上,它的效率非常高,與torn-page差不多。
備份進程在備份資料庫時,會通過比較在資料庫里的和隨著備份頁寫入硬碟時這兩個之間的值來進行驗證。但是,這個驗證並不是自動完成的,需要顯示指定,在GUI頁面上是個選項。如果通過T-SQL來備份的話,語句如下:
SQL code BACKUP DATABASE mydb TO DISK=』D:\data\mydb.bak』 WITH CHECKSUM
如果備份過程中,發現了錯誤,SQL Server會錯誤信息寫入MSDB上的SUSPECT_PAGE表裡面。同時,在默認情況下,備份行為會停止的(STOP_ON_ERROR),以便管理員排查錯誤。
但 備份過程中的校驗和驗證還有另外一個選項(CONTINUE_ON_ERROR),也就是說,如果發現錯誤,備份過程並不會中斷,而是將錯誤頁信息記錄在 MSDB..SUSPECT_PAGE上而已。需要注意的是,SUSPECT_PAGE表是有行限制的,最多隻能達到1000行,如果達到了的話,備份同 樣會失敗。
激活校驗和驗證的話,很明顯會影響備份的性能。但還是很有必要的。
8、安全備份
完全備份和日誌備份語句還支持使用密碼屬性,如:
SQL code BACKUP DATABASE mydb TO DISK=』D:\mydb.bak』 WITH PASSWORD=』mydb』
所指定的密碼是很容易破解的。因此,如果確實需要對某些備份數據進行加密的話,可以將備份存放於加密的文件系統或者其它安全的存儲設備上。
同時,SQL Server還提供了對真實列進行加密的功能。該加密功能是工業標准。
9、條帶備份
有些情況下,單獨一個硬碟無法存儲一個完整的資料庫備份時,可以將資料庫備份分成多個部分存儲在不同的磁碟上,這種備份方式成為條帶備份。使用條帶備份的優點很明確,就是能很好的利用空間,但如果某部分備份丟失或者損壞,那整個備份將無效。
其語句如下:
SQL code BACKUP DATABASE mydb TO DISK=』D:\mydb.bak』,
DISK=』E:\mydb.bak』 WITH INIT,CHECKSUM,
CONTINUE_ON_ERROR
上述D盤和E盤上的備份是不可分割的。
10、鏡像備份
與條帶備份在多個磁碟上保留同一份備份不同的是,鏡像備份是在不同磁碟上保留多份備份。其語句如下:
SQL code BACKUP DATABASE mydb TO DISK=』D:\mydb.bak』
MIRROR TO DISK=』E:\mydb.bak』
WITH INIT,CHECKSUM,CONTINUE_ON_ERROR
在實際情況下,對日誌備份採取鏡像備份方式會比較合適。
11、COPY-ONLY 備份
在差異備份里曾提到過,差異備份是建立在上一個全備份的基礎上的。因此如果在一個事先安排好的備份計劃里,如果在全備份和差異備份之間再進行了一次全備份後,其差異備份會被打斷,如果把臨時全備份刪除掉後,就產生了數據丟失。
在SQL SERVER 2005以後,SQL SERVER提供了一個選項-only.使用-only選項進行的全備份便不會打算原先的備份計劃,語句如下:
SQL code BACKUP DATABASE mydb TO DISK=』D:\mydb.bak』
WITH INIT,CHECKSUM,COPY_ONLY
三、文件和文件組備份
在SQL SERVER 7.0以後,SQL Server提供了filegroup的概念。文件組不僅僅提供了一個邏輯的存儲地址,還允許將不同的表和索引放在不同的文件組上來提高性能和減少備份時間。
在數據存儲概述上,提到了資料庫有三類數據文件,一般來說,資料庫至少需要兩個(.mdf和.ldf)或者更多的文件。SQL Server不僅允許有多個文件存在(.ldf),還允許多個文件組存在。
一個文件組可以有多個文件,每個文件需要仔細規劃好初始大小及增量。
1、默認文件組
在創建對象時,如果未明確指定文件組,那麼該對象將會存放在默認的文件組上。在默認情況下,默認的文件組是primary,但由於primary文件組不僅可以包含用戶數據,同時還存儲著資料庫結構等技術信息,因此一般建議添加額外的一個文件組,並將其指定為默認文件組。
SQL Server只能有一個默認的文件組。
修改默認文件組的語句如下:
SQL code ALTER DATABASE mydb MODIFY FILEGROUP mydb DEFAULT;
2、為對象指定文件組
當創建表或者索引時,不管是用戶還是系統都需要將表或索引放在某個文件組上。如果在創建表或索引時指定文件組,那麼表或索引將會存儲在指定的文件組上,而不是默認的文件組。
其指定語句如下:
SQL code CREATE TABLE test( [id] int,[notes] text) on mydbdata
也可以通過GUI創建表的頁面來指定文件組。
3、將對象遷移至指定文件組
如果需要變更對象的存儲位置,最簡單的方式則是通過GUI屬性頁面來進行修改通過該方法,可以直觀的看到對象的遷移過程。
同時也可以通過T-SQL來修改,例如:
SQL code ALTER TABLE test drop constraint PK_test WITH (MOVE TO DATA)
4、備份數據文件
備份數據文件同樣可以通過BACKUP DATABASE語句來實現。如下:
SQL code BACKUP DATABASE mydb FILE=』D:\Data\mydb.ndf』 TO DISK=』E:\Backup\mydbdata.bak』
上述語句相當於數據文件級別的全備份,與資料庫級別的備份類似,文件級別上的備份也有差異備份,當然前提是要有相對應的文件全備份。
差異備份的語句如下:
SQL code BACKUP DATABASE mydb FILE=』D:\Data\mydb.ndf』
WITH DIFFERENTIAL
TO DISK=』E:\Backup\mydbdata_dif.bak』
5、備份文件組
與單獨備份文件類似,也可以對文件組進行類似的備份操作。備份文件組的方式也有兩種,一種是通過GUI界面指定,一種則是通過T-SQL。
T-SQL的語句如下:
SQL code BACKUP DATABASE mydb FILEGROUP=』PRIMARY』 TO DISK=』E:\Backup\mydbpri.bak』
6、不完全備份(partial backup)
在文件組備份上,不完全備份其實相當於完全備份,可以通過指定關鍵字READ_WRITE_FILEGROUPS來實現不完全備份。
語句如下:
SQL code BACKUP DATABASE mydb READ_WRITE_FILEGROUPS TO DISK=』D:\mydb.bak』
那不完全備份到底是什麼意思呢?什麼時候需要不完全備份?如果對一個文件組設置了只讀,而這只讀的文件組又需要進行一次備份,這時,可以不用BACKUP DATABASE語句進行備份,只需要挑個時間停止實例,然後執行不完全備份。
Ⅲ sql中存儲較大的數據用什麼數據類型或者存儲較大的數據 怎麼存儲
二進制用這個:image 二進制數據類型 image 數據類型用來存儲變長的二進制數據,最大可達231-1或大約20億位元組
整數用這個:int 整型 int 數據類型可以存儲從- 231(-2147483648)到231 (2147483 647)之間的整數。存儲到資料庫的幾乎所有數值型的數據都可以用這種數據類型。這種數據類型在資料庫里佔用4個位元組
帶精度的用這個:decimal 精確數值型 decimal 數據類型能用來存儲從-1038-1到1038-1的固定精度和范圍的數值型數據。使用這種數據類型時,必須指定范圍和精度。 范圍是小數點左右所能存儲的數字的總位數。精度是小數點右邊存儲的數字的位數
float 近似數值型 float 數據類型是一種近似數值類型,供浮點數使用。說浮點數是近似的,是因為在其范圍內不是所有的數都能精確表示。浮點數可以是從-1.79E+308到1.79E+308 之間的任意數
字元這個:text 字元型 text 數據類型用來存儲大量的非統一編碼型字元數據。這種數據類型最多可以有231-1或20億個字元
Ⅳ 怎麼樣快速向SQL資料庫插入大數據量的數據
添加數據需要知道往哪張表添加,以及自己要添加的內容,然後可用insert語句執行。
1、以sqlserver2008r2為例,登錄SQL Server Management Studio到指定的資料庫。
2、登錄後點擊「新建查詢」。
Ⅳ sqlserver中哪些數據類型可存儲大文本
大的文本都是用varchar(max)數據類型最多可以存儲2^30-1個位元組的數據。
Sql Server 還能自動限制每個數據類型的取值范圍,例如定義了一個類型為int的欄位,如果插入數據時插入的值的大小在smallint或者tinyint范圍之內, Sql Server 會自動將類型轉換為smallint 或者tinyint,這樣一來,在存儲數據時,佔用的存儲空間只有int的1/2或則1/4。
Sql Server資料庫管理系統中的數據類型可以分為兩類,分別是:系統默認的數據類型和用戶自定義的數據類型。
(5)sql怎麼存儲大數據擴展閱讀
Sql Server之數據類型詳解:
整數數據類型:整數數據類型是常用的數據類型之一,主要用於存儲數值,可以直接進行數據運算而不必使用函數轉換。
1、bigint
每個bigint存儲在8個位元組中,其中一個二進制位表示符號位,其它63個二進制位表示長度和大小,可以表示-2的63次方~2的63次方-1范圍內的所有整數。
2、int
int或者integer,每個int存儲在4個位元組中,其中一個二進制位表示符號位,其它31個二進制位表示長度和大小,,可以表示-2的31次方~2的31次方-1范圍內的所有整數。
3、smallint
每個smallint類型的數據佔用了兩個位元組的存儲空間,其中一個二進制位表示整數值的正負號,其它15個二進制位表示長度和大小,,可以表示-2的15次方~2的15次方-1范圍內的所有整數。
4、tinyint
每個tinyint類型的數據佔用了一個位元組的存儲空間,可以表示0~255范圍內的所有整數。
Ⅵ sql server 2008如何插入大數據
大數據是指什麼啊,你會一次存入很多條數據嗎?你可以直接傳給sql一個table,你創建一個存儲過程,然後直接insert into 表 select 你傳入的table就行了
Ⅶ 利用MySQL資料庫如何解決大數據量存儲問題
照你的需求來看,可以有兩種方式,一種是分表,另一種是分區 首先是分表,就像你自己所說的,可以按月分表,可以按用戶ID分表等等,至於採用哪種方式分表,要看你的業務邏輯了,分表不好的地方就是查詢有時候需要跨多個表。 然後是分區,分區可以將表分離在若干不同的表空間上,用分而治之的方法來支撐無限膨脹的大表,給大表在物理一級的可管理性。將大表分割成較小的分區可以改善表的維護、備份、恢復、事務及查詢性能。分區的好處是分區的優點: 1 增強可用性:如果表的一個分區由於系統故障而不能使用,表的其餘好的分區仍然可以使用; 2 減少關閉時間:如果系統故障隻影響表的一部分分區,那麼只有這部分分區需要修復,故能比整個大表修復花的時間更少; 3 維護輕松:如果需要重建表,獨立管理每個分區比管理單個大表要輕松得多; 4 均衡I/O:可以把表的不同分區分配到不同的磁碟來平衡I/O改善性能; 5 改善性能:對大表的查詢、增加、修改等操作可以分解到表的不同分區來並行執行,可使運行速度更快; 6 分區對用戶透明,最終用戶感覺不到分區的存在。
Ⅷ sql server 數據量龐大,怎麼存儲
控制sql容量
整個庫日誌文件是最大的
控制了容量
sql會定時清理以前的日誌制訂個計劃
每天自動做增量備份就可以了
Ⅸ 如何解決執行sql存儲過程(大數據量復雜的sql計算操作)時,不影響用戶使用
對實時性不是非常必須的功能,不要放在主業務集中操作的同時操作。這個需要引導客戶。
系統的開銷就在那裡擺著,沒有別的辦法,一運行資源就佔了,CPU 資源,資料庫資源,內存資源。
兩個辦法:一個是做一個資料庫復制,可以半天復制一次,也可以一天復制一次(閑時復制),根據用戶對數據的敏感度決定,存儲過程運行不限時間,運行時訪問復制資料庫,不影響主資料庫。需要額外資源:資料庫伺服器,資料庫復制時間和網路資源開銷;
第二個是定製成任務,閑時執行結果放到指定表中,或者直接以文件形式導出在伺服器指定位置。用的人直接讀記錄或者讀文件就OK 了。
請參考。
Ⅹ sql資料庫數據量龐大時怎麼處理。
1.表欄位類型、長度、默認值這些都要按實際情況去寫,不要瞎填;
2.能存英文就盡量不存中文,能存數字盡量不存英文;(資料庫查詢速度數字查詢速度最快,英文次之,中文最後)
3.索引要優化,按實際要求去創建索引,主鍵等;
4.sql語句要精簡,能不用*就盡量不用,想要什麼欄位查什麼欄位,不要怕多寫,盡量少用聯表查詢,多表查詢,尤其在大數據訪問的時候;
5.合理使用緩存技術,有模板緩存,資料庫查詢結果緩存。