磁盘数据库存储,最佳实践

如果这个问题对你来说似乎很常见,我很抱歉,我在这个网站和几个谷歌搜索周围进行了快速搜索,并找不到令人满意的答案。

我的问题是这个;

我现在只有3 - 4年的软件开发人员。 这似乎足以让我自己回答这个问题,但在我所有的时间里,我从来都不需要开发软件,而数据存储的主体不需要在联机数据库中。 但是,这一次,我的最新发展只需要将其数据存储到磁盘。

实际的数据本身很轻。 代码中的主要资产将是一个只有少数基于字符串的属性的类,它必须被持久化。 我最初的想法是简单的序列化。 在应用程序关闭时,新资产将被简单地序列化并作为文件存储在磁盘上。 我也可能为了备份的目的(或者如果它是某种更好的选择序列化类)XML文件将是适当的。

我想不出任何一种方法的明显劣势,正是这个事实导致我公开提出这个问题。 根据我的经验,对于没有缺点的问题很少有解决办法。


序列化(二进制或XML)适用于少量数据。 这种方法的问题是当你得到大量的数据时(你可能需要查询)。

如果您在Windows平台上并且需要适当的数据库,则可以使用随Windows提供的嵌入式数据库引擎 - ESENT。 它是Exchange和RavenDB的后盾存储。

这里是它的.NET包装器库。

ManagedEsent提供对ESENT的管理访问,ESENT是Windows原生的可嵌入数据库引擎。 ManagedEsent使用属于Microsoft Windows的esent.dll,因此没有额外的非托管二进制文件可供下载和安装。


最轻量级的解决方案当然是使用XML和序列化。 这样做的主要优点是它非常简单,只需很少的代码,并且可以使用文本编辑器轻松进行编辑。 这样做的另一个优点是可以有多个文件,并且可以很容易地从PC传输到PC。

这是一个关于XML序列化的好教程。

但是,如果您的应用程序要读取,写入和更改数据,并且只有一个数据源,那么使用轻量级数据库会更好。 很多人喜欢SQLite,而我个人更喜欢火鸟。

在C#中使用SQLite可以看到这个问题,并且在这里查看使用Firebird和.net的信息。


另一个嵌入式数据库选项是Sql Server Compact Edition。 这是v4的最新版本,它似乎比以前的版本有了很大的改进。

它在功能上等同于使用XML文件或访问数据库,甚至是普通的旧文本文件,因为您无需运行Sql Server服务,也无需在运行应用程序的计算机上安装任何特殊的东西。

链接地址: http://www.djcxy.com/p/47231.html

上一篇: Disk database storage, best practices

下一篇: Program to an interface not an implementation in php