2011-12-02 152 views
2

我們目前儲存的產品,我在ASCII純文本文件的格式工作,像這樣的數據:爲什麼我的數據庫文件與普通文本文件具有相同數據的大小相同?

timestamp:2011120211T10:42:23 
value:42 
error:Foobar error 
value:100 
error: 
timestamp:2011120211T10:43:58 
value:0 
... 

我試圖導入從一個13 MB的文本文件,這個確切的數據與列的SQLite數據庫(DATETIME, TEXT,TEXT,TEXT,TEXT)。但是,令我驚訝的是,數據庫的文件大小也是13MB。

這是爲什麼?我希望數據庫能夠使用比普通的ascii更高效的格式,是不是這種情況?

回答

8

這絕對不是這種情況。這裏有很多元數據,空間實際上經常被浪費在效率的名義上,以允許插入,索引等。

我希望ASCII轉儲大於數據庫文件的唯一時間是如果數據庫主要是二進制數據,那麼需要將BASE64編碼爲ASCII輸出,並且如果沒有/最小索引。

+2

我認爲你有一個錯字:你寫的「更小」,你似乎意味着「更大」? – ruakh

+0

@ruakh Ack!你是對的。固定! –

+0

謝謝! +1。 :-) – ruakh

0

數據庫可以支持壓縮數據,但會影響性能。我對Sqlite並不熟悉,但我猜想數據壓縮是您需要打開的選項。

0

我會想象數據庫的效率和速度將源於它在內存中使用的數據結構和它實現的搜索算法,而不是文件結構。

0

數據庫不是爲了更高效的空間而製作的,它是爲了節省時間而設計的。在很多情況下,數據庫不會浪費任何空間,但文本也不會浪費太多空間。

數據庫記錄號是更節省空間的文本,但文本看起來像文本。

即使有一定的空間利益,它也不會那麼大,容易找出。但是當你使用字節不使用MB時,你會發現。

相關問題