如何选择轻型版数据库系统

我正在开始一个POS(销售点)项目。 目标系统将用C#.NET 2 WinForms编写,并作为主数据库服务器我们将使用MS-SQL Server。 由于我们在一家商店的链中有很多POS设备,我很乐意在每台POS设备上安装后端本地数据库系统。

场景如下:当主服务器出现故障时! POS应用程序应继续与本地数据库“脱​​机”工作,直到再次连接到主服务器。

现在我处于两难境地,哪个本地数据库对我来说最容易接受。 以下是帮助我指出正确方向的一些注意事项:

  1. 成为光明“我的POS设备艺术通常陈旧且受到表演的影响”
  2. 要自由“我有很多设备,除了主要的SQL服务器之外我不会有额外的费用”
  3. 有一天我很想在Mono和Linux OS上尝试所有端口。

这是我到目前为止所研究的内容:

  1. 简单的XML“轻但我害怕性能,我的主要项目平均为10K记录”
  2. SQL-Express“我担心我的POS设备的SQLExpress硬件很差,而且很难在每台设备上安装和配置”
  3. 鲜为人知的Advantage Database Server可以免费分发离线ADT系统。
  4. 带有扩展库的DBF,“尊重优秀的旧DBF,但那个时代在我身边,使用限幅器和DBF”
  5. MS Access
  6. Sqlite“现在大部分都喜欢,但我担心如何与MS SQL配对,他们有相同的数据类型”。

我知道在这个SO中有很多主观数据,但至少可以有人推荐一些其他精简数据库系统,或者我选择数据库之前我最关注的事情。

SQL Server Compact

它专为嵌入式设备(即Windows Mobile)设计,但也可以在PC上运行。 它是2MB,运行在进程中,单个数据库文件,可以有你喜欢的任何名称。

它意味着作为本地高性能数据库。 您无法远程连接它,也不支持存储过程或用户定义的函数。


但要回答你的实际问题:如何选择?

选择具有管理工具的内容,当您长大时,可以使用简单,兼容的升级路径。

我做了很多相同的事情:中央服务器可能正在运行MS SQL服务器和分布式系统,尽管它们正在运行Linux。 我们选择以XML格式进行数据传输,并在分布式系统上使用sqlite。

这是早期的,但到目前为止似乎进展顺利。

sqlite有.net绑定。

我们选择sqlite的原因是:

  1. 因为它不需要任何数据库管理,这在远程系统上会很棘手。
  2. 它似乎使用得非常广泛:例如,firefox使用sqlite进行本地存储。
  3. 我们可以在Windows和Linux上使用它。
  4. 如果意外断电,它应该擅长不丢失数据。

我建议使用Sql Compact Edition,因为它轻巧而且免费,所以它解决了你的三个问题中的两个。 我不知道它是否适用于Mono …..

我过去曾经使用它,实际上我对性能印象非常深刻。 一个很大的缺点是缺少存储过程……

我使用System.Data.Sqlite,这是一个来自http://sqlite.phxsoftware.com/的 Sqlite的开源ADO.Net包装器。 您可以在Visual Studio中使用它来构建数据库。 它支持Sql Server的字段类型的子集,并且应该快速在两个数据库之间编写接口类。 通过在项目中包含单个DLL和单个文件数据库,您可以获得简单部署的好处。 它也包括加密。