2011年3月23日 星期三

SQL Server 2012(Code Name Denali) - FileTable介紹


        FileTable是一個在SQL Server 2012的全新功能,主要用來儲存非結構化的資料,可以讓檔案與目錄的架構透過FileTable放置在關聯式資料庫中。這個新的功能允許應用程式可以整合磁碟和資料管理系統並提供SQL Server services(如同全文搜索服務 - Full-Text Search)進行整合,其中包含非結構化的資料和Metadata,這是一種屬於簡單的管理和資料系統管理。

PS:根據微軟官方說法,在這介紹的部份都只是先行預覽的功能,所以實際上的功能還是會以最後的版本為主。


        大部份企業的資料都屬於非結構性,意思上代表可以經由Win32 API來進行檔案系統的管理,但是如果你的檔案資料是放在資料庫中時,因為資料庫不支援大部份的Win32 API,所以並無法有效的透過資料庫管理,所以大部份非結構化的資料通常不放置在資料庫中,經由一般的應用程式管理。

         FileTable功能上是建構在一個已存在的FILESTREAM上,透過此功能可以有效的儲存非結構化的資料在SQL Server的資料庫中,並提供應用程式進行非交易式的存取,而且可以整合系統管理與資料庫的服務並有效的使用Win32 API來管理資料與檔案。

FileTable 儲存架構

        FileTables是一個特別的使用者定義的表格,可以用來儲存FILESTREAM的資料、檔案、目錄架構資訊和檔案屬性資訊等,每個FileTable代表著一個檔案或目錄層級,而每一列則是對應到指定的目錄或檔案中。


        FileTables基本上是以Win32 API為底層並透過Windows SMB分享與SQL Server所支援的檔案與目錄管理架構,當一個應用程式在SMB中產生或修改檔案與目錄時,任何的改變將會經由SQL Server自動偵測後反應在FileTable之中。

FileTables同樣支援一般的Transact-SQL存取,可以用相同的方式進行查詢或更新的動作至其他的資料表。資料庫上所有的管理工具,如backupreplicationHADR也是相同的支援。

在FileTable中的每一列包含下列的欄位:
  • 一個FILESTREAM欄位包含串流資料(stream data)和檔案的編號(GUID). 如果FILESTREAM的欄位為NULL時,代表這是一個目錄。
  • 欄位中path_locatorparent_path_locator主要用來維護層級架構,此欄位將會秀出檔案的屬性如建立時間與修改時間等,而這些屬性會經由檔案I/O的API來處理。
  • 在Type欄位與Language欄位支援由全文檢索服務(Full-Text Search)來進行處理的動作。


        基本上Win32 API操作屬於非交易式,這代表著與一般的資料庫操作不同,可能使用Win32 API會增加檔案一致性與錯誤複原的可能性,但是FILESTREAM資料在FileTable也是完整地支援一般的交易處理。

Create FileTable語法:
CREATE TABLE DocumentStore AS FileTable WITH FileTable_Directory Document
    FILESTREAM_ON FILESTREAMGroup1;
GO

參考網址:
  1. http://msdn.microsoft.com/en-us/library/ff929068(v=sql.110).aspx
  2. http://msdn.microsoft.com/en-us/library/ff929144(v=sql.110).aspx

FileTables 欄位參考(Link):
File attribute name
type
Size
Default
path_locator
hierarchyid
variable
A hierarchyid value that is a child of this FileNamespace
stream_id
[uniqueidentifier] rowguidcol
 
A value returned by the NEWID() function.
file_stream
varbinary(max) filestream
variable
NULL
file_type
nvarchar(255)
variable
A file system create or rename operation will populate the file extension value from the name.
Name
nvarchar(255)
variable
GUID value.
parent_path_locator
hierarchyid
variable
A hierarchyid value that corresponds to the root of this FileNamespace.
cached_file_size
Bigint
 
 
creation_time
datetime2
8 bytes
CurrentTime
last_write_time
datetime2
8 bytes
CurrentTime
last_access_time
datetime2
8 bytes
CurrentTime
is_directory
bit
1 byte
FALSE
is_offline
bit
1 byte
FALSE
is_hidden
bit
1 byte
FALSE
is_readonly
bit
1 byte
FALSE
is_archive
bit
1 byte
FALSE
is_system
bit
1 byte
FALSE
is_temporary
bit
1 byte
FALSE

沒有留言:

張貼留言