我们目前以ascii纯文本格式存储我所使用的产品的数据,格式如下:
timestamp:2011120211T10:42:23
value:42
error:Foobar error
value:100
error:
timestamp:2011120211T10:43:58
value:0
...
我尝试将这些精确数据从一个13 MB的文本文件导入到带有列(DATETIME,TEXT,TEXT,TEXT,TEXT)的Sqlite数据库中。但令我惊讶的是,数据库的文件大小也是13 MB。
这是为什么?我希望数据库使用的格式比普通的ascii更节省空间,是不是这样呢?
答案 0 :(得分:8)
绝对不是这样。那里有很多元数据,实际上通常以效率的名义浪费空间,允许插入,索引等。
我唯一希望ASCII转储大于数据库文件的情况是,如果数据库主要是二进制数据,需要BASE64编码才能输出为ASCII,并且没有/最小索引。< / p>
答案 1 :(得分:0)
数据库可以支持数据压缩,但会影响性能。我不熟悉Sqlite,但我猜想数据压缩是你需要打开的一个选项。
答案 2 :(得分:0)
我认为数据库的效率和速度源于它在内存中使用的数据结构以及它实现搜索的算法,而不是文件的结构。
答案 3 :(得分:0)
数据库不是为了节省更多空间,而是为了节省时间。在许多情况下,数据库不会浪费任何空间,但文本也不会浪费太多空间。
数据库记录号是更节省空间的文本,但文本看起来像文本。
即使有一些空间利益,也不会那么容易找到。但是当你使用字节不使用MB时,你会发现。