不用重寫整個文件的。普通文件打開時有個讀寫指針。指明當前文件讀寫的位置離文件頭的偏移值。如果只修改了當前的位置。只要寫當前位置對應的硬碟數據塊。硬碟數據塊一般2k,4k,8k大小。如果是資料庫。數據文件就有個索引指明當前記錄所在的硬碟數據塊。修改索引就重寫相應的硬碟數據塊。不用重寫整個文件。建議看一下資料庫方面的書。
② 數據存儲形式有哪幾種
【塊存儲】
典型設備:磁碟陣列,硬碟
塊存儲主要是將裸磁碟空間整個映射給主機使用的,就是說例如磁碟陣列裡面有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、對象存儲的成本比起普通的文件存儲還是較高,需要購買專門的對象存儲軟體以及大容量硬碟。如果對數據量要求不是海量,只是為了做文件共享的時候,直接用文件存儲的形式好了,性價比高。
③ 資料庫與數據倉庫的區別
資料庫是面向事務的設計,數據倉庫是面向主題設計的。資料庫一般存儲在線交易數據,數據倉庫存儲的一般是歷史數據。
「與時間相關」:資料庫保存信息的時候,並不強調一定有時間信息。數據倉庫則不同,出於決策的需要,數據倉庫中的數據都要標明時間屬性。決策中,時間屬性很重要。同樣都是累計購買過九車產品的顧客,一位是最近三個月購買九車,一位是最近一年從未買過,這對於決策者意義是不同的。
「不可修改」:數據倉庫中的數據並不是最新的,而是來源於其它數據源。數據倉庫反映的是歷史信息,並不是很多資料庫處理的那種日常事務數據(有的資料庫例如電信計費資料庫甚至處理實時信息)。因此,數據倉庫中的數據是極少或根本不修改的;當然,向數據倉庫添加數據是允許的。
拓展資料:
數據倉庫的出現,並不是要取代資料庫。數據倉庫,是在資料庫已經大量存在的情況下,為了進一步挖掘數據資源、為了決策需要而產生的,它決不是所謂的「大型資料庫」。
目前,大部分數據倉庫還是用關系資料庫管理系統來管理的。可以說,資料庫、數據倉庫相輔相成、各有千秋。
④ java如何把在線編輯器的內容存儲到資料庫
<FCK:editor instanceName="設定的屬性" height="400" width="100%" toolbarSet="Text" basePath="/static/FCKeditor/"> </FCK:editor>
在進入action後,接收,保存即可
另外就是一般使用fck搭配的是資料庫中的clob欄位
在存儲的時候使用下面的語句:
sql = "select content from 資料庫名稱 for update";
rs = DbQuery(sql);
rs.getClob("CLOB");
OracleThinClob clobComment = null;
if (rs.next()) {
clobComment = (OracleThinClob) rs.getClob("content");
}
Writer w = clobComment.getCharacterOutputStream();
w.write(用於接收內容的屬性);
w.flush();
w.close();
⑤ 資料庫中如何存儲文件
一般把pdf放入某文件夾然後在資料庫里存鏈接
或者存放為二進制數據,
⑥ 網站資料庫是存儲什麼的
資料庫可以存放很多用戶行為記錄,比如用戶注冊信息,登陸時間,在網站操作過什麼,都可以在記錄在資料庫欄位,同時也會記錄網站看得的數據,比如 文字,圖片連接 ,時間,頁面地址,等等。反正可以用欄位記錄的數據 都可以存到資料庫的欄位當中,實體的就不了,比如圖片,文件壓縮這些就的存放到伺服器硬碟中,提供給資料庫調用。
⑦ 多媒體在資料庫中如何存儲
SQL Server可以存儲,類型可以用image。但是建議不要這樣做,因為電影網站需要在線觀看,存儲在資料庫中不方便。
⑧ 資料庫中數據如何存儲
利用邏輯資料庫
和物理資料庫
來存儲
其中
邏輯資料庫主要包括表
,段,區,oracle數據塊。物理數據塊
包括
數據文件,聯機重做日誌文件等
⑨ 使用在線資料庫都給你帶來了哪些方便
"Berkeley DB"資料庫的優點和不足之處
2008-01-11 嵌入式在線 收藏 | 列印
Sleepycat軟體公司出品的Berkeley DB是一種在特定的數據管理應用程序中廣泛使用的資料庫系統,在世界范圍內有超過兩億的用戶支持.許多世界知名的廠商,像Amazon, AOL, British Telecom, Cisco Systems, EMC, Ericsson, Google, Hitachi, HP, Motorola, RSA Security, Sun Microsystems, TIBCO 以及 Veritas都依賴於BDB為他們的許多關鍵性應用提供快速的,彈性的,可靠的,並且高性價比的數據管理. 1.BDB的解釋: mysql就是用BDB實現的(mysql的後台) 。mysql快,BDB比mysql還要快N倍。 BDB並發高於RDBMS。 容量支持可達256TB。 基於HASH支持select數據比RDBMS快。
2.BDB資料庫與其它的幾種資料庫的比較。 BDB資料庫不同與其他幾種資料庫–關系型(Relational databases),面向對象型(Object-oriented databases),網路資料庫(Network databases),它是一種嵌入式(embeded databases)資料庫。
下面先簡要說說BDB與其它幾種資料庫的區別: (1)它們幾乎都無一例外的採用了結構化查詢語言(SQL),而BDB沒有。 (2)它們幾乎都無一例外的採用了客戶/伺服器模型,而BDB採用的是嵌入式模型。
3. 下面是在網上找的一些有關BDB的資料,解釋了BDB之所以會和當前流行的大多數資料庫不同的一些原因,所引資料未註明出處,後面的翻譯是我自己加的: (1) BDB是一個開放源代碼的嵌入式資料庫的函數庫,它為應用程序提供彈性的,高性能的,transaction-protected的資料庫管理服務,BDB為數據的訪問和管理提供了簡單的應用程序介面API。 (2) BDB之所以是嵌入式資料庫是因為它是直接連到應用程序中的。它和應用程序在同一內存空間運行。其結果是,不管應用程序是運行在同一台機 器上還是運行在網路上,在進行資料庫操作時,它都無需進行進程間通信。BDB為許多編程語言提供了函數介面,這些語言包括C, C++, Java, Perl, Tcl, Python, 和 PHP。所有的資料庫操作都發生在函數庫內部。多個進程,或者是一個進程中的多個線程,都可以同時使用BDB,因為它們實際是在調用BDB函數庫。一些像 locking, transaction logging, shared buffer management, memory management等等之類的低級服務都可以由函數庫透明地處理。 (3) BDB函數庫是高度可移植的。它可以運行在幾乎所有的UNIX和LINUX系統之上,也支持WINDOWS和多種嵌入式實時操作系統。它 既可以運行在32位系統上,也可以運行在64位系統上。它活躍在高端伺服器,桌面系統,掌上電腦,set-top boxes,網路交換機以及其它的一些領域。一旦BDB被連接到應用當中以後,終端用戶一般是不知道後端資料庫的存在的。 (4) BDB在許多方面都是彈性的。函數庫本身非常緊湊(在常見的機器體繫上大約只佔用不到300K的text空間,但是它可以操作多達 256TB的數據。它也支持高強度的並發操作,可以同時允許數以千計的用戶在同一個資料庫進行操作。在高端伺服器領域,BDB是足夠小的,它可以在高度受 限的嵌入式系統上運行,但卻可以利用高達GB量級的內存空間和高達TB量級的磁碟空間。 (5) BDB在嵌入式應用方面的性能比關系型資料庫和面向對象的資料庫優越的原因是多方面的。首先,因為函數庫和應用是運行在同一地址空間中 的,省掉了資料庫操作時的進程間通信。而眾所周知,不管是在單機上還是在分布式系統上,進程間通信所花的時間遠多於函數調用所要的時間。其次,因為BDB 對所有的操作提供了簡潔的函數調用介面,無需對查詢語言進行解析,也不需要預執行。 (6) 與其他大多數資料庫系統相比,BDB提供了相對簡單的數據訪問服務。BDB只支持對記錄所做的幾種邏輯操作。它們是: 在表中插入一條記錄。 從表中刪除一條記錄。 通過查詢鍵(key)從表中查找一條記錄。 更新表中已有的一條記錄。 BDB不是一個獨立的資料庫伺服器。它是一個函數庫,和調用它的應用程序是運行在同一地址空間中的。可以把BDB作為資料庫管理系統來構 建伺服器程序。比如,有許多商業的和開源的輕量級目錄訪問協議(LDAP)伺服器都使用BDB存儲記錄。LDAP客戶端通過網路連接到伺服器。伺服器調用 BDB的API來查找記錄並返回給客戶。而在它本身而言,BDB卻不是資料庫的伺服器端。 所以,BDB是一種完全不同於其它資料庫管理系統的資料庫,而且它也不是一個資料庫伺服器端。 當面對的是對性能,規模和可靠性要求都比較高的嵌入式應用的時候,BDB是理想的資料庫管理系統。但對於要求多種不同服務的應用而言,選擇它是不適當的。 BDB的初衷是提供快速的,可靠的,transaction-protected的記錄存儲。函數庫本身並沒有提供對交互查詢的支持,也沒有提供 圖形化的報表工具,或者一些其它的資料庫管理系統提供的服務。我們一直在致力於保持函數庫的短小和簡練,這樣做,可以使得bug出現的機會大大減小,而且 因為只有很少的代碼需要執行,我們可以保證資料庫一直快速的運行。如果你的應用正好需要的是這樣的一套功能的話,那麼BDB幾乎一定是你的首選對象。