如何选择轻型版数据库系统
我正在开始一个POS(销售点)项目。 目标系统将用C#.NET 2 WinForms编写,并作为主数据库服务器我们将使用MS-SQL Server。 由于我们在一家商店的链中有很多POS设备,我很乐意在每台POS设备上安装后端本地数据库系统。
场景如下:当主服务器出现故障时! POS应用程序应继续与本地数据库“脱机”工作,直到再次连接到主服务器。
现在我处于两难境地,哪个本地数据库对我来说最容易接受。 以下是帮助我指出正确方向的一些注意事项:
- 成为光明“我的POS设备艺术通常陈旧且受到表演的影响”
- 要自由“我有很多设备,除了主要的SQL服务器之外我不会有额外的费用”
- 有一天我很想在Mono和Linux OS上尝试所有端口。
这是我到目前为止所研究的内容:
- 简单的XML“轻但我害怕性能,我的主要项目平均为10K记录”
- SQL-Express“我担心我的POS设备的SQLExpress硬件很差,而且很难在每台设备上安装和配置”
- 鲜为人知的Advantage Database Server可以免费分发离线ADT系统。
- 带有扩展库的DBF,“尊重优秀的旧DBF,但那个时代在我身边,使用限幅器和DBF”
- MS Access
- Sqlite“现在大部分都喜欢,但我担心如何与MS SQL配对,他们有相同的数据类型”。
我知道在这个SO中有很多主观数据,但至少可以有人推荐一些其他精简数据库系统,或者我选择数据库之前我最关注的事情。
SQL Server Compact
它专为嵌入式设备(即Windows Mobile)设计,但也可以在PC上运行。 它是2MB,运行在进程中,单个数据库文件,可以有你喜欢的任何名称。
它意味着作为本地高性能数据库。 您无法远程连接它,也不支持存储过程或用户定义的函数。
但要回答你的实际问题:如何选择?
选择具有管理工具的内容,当您长大时,可以使用简单,兼容的升级路径。
我做了很多相同的事情:中央服务器可能正在运行MS SQL服务器和分布式系统,尽管它们正在运行Linux。 我们选择以XML格式进行数据传输,并在分布式系统上使用sqlite。
这是早期的,但到目前为止似乎进展顺利。
sqlite有.net绑定。
我们选择sqlite的原因是:
- 因为它不需要任何数据库管理,这在远程系统上会很棘手。
- 它似乎使用得非常广泛:例如,firefox使用sqlite进行本地存储。
- 我们可以在Windows和Linux上使用它。
- 如果意外断电,它应该擅长不丢失数据。
我建议使用Sql Compact Edition,因为它轻巧而且免费,所以它解决了你的三个问题中的两个。 我不知道它是否适用于Mono …..
我过去曾经使用它,实际上我对性能印象非常深刻。 一个很大的缺点是缺少存储过程……
我使用System.Data.Sqlite,这是一个来自http://sqlite.phxsoftware.com/的 Sqlite的开源ADO.Net包装器。 您可以在Visual Studio中使用它来构建数据库。 它支持Sql Server的字段类型的子集,并且应该快速在两个数据库之间编写接口类。 通过在项目中包含单个DLL和单个文件数据库,您可以获得简单部署的好处。 它也包括加密。