我需要为在文件服务器上使用同一数据库的基于 Windows 的应用程序的多个同时用户选择一个数据库解决方案。
我需要一个可以存在于 Window OS 文件服务器上的数据库。
- 必须由单个 MS 上运行的多个应用程序共享Windows 机器(主要是 Windows 7)
- 由文件服务器提供。
- 无法使用数据库服务器/引擎(由于内部政治规则)或网页服务器。
- 首选将 C# 用于一组 WPF 应用程序。
- 当前使用一组VB应用程序与一组MS Access一起使用文件 - 其中一个应用程序出现问题,需要重写。
- 当前一组大约六个 *.mdb 文件(有些带有链接表)约为 400 MB。预计每年增长 10 到 20 MB。 在
- 自己的 PC 上,每个用户最多有十几个并发用户现在。不要指望将来会有很大的变化。
- 所有应用都会将数据读取和写入数据库。
- 目前有几个(大约 4 人)在 Access 中编写即席查询 -他们将继续需要能够以某种方式编写查询。
- 希望防止数据库结构更改(添加表/列)的最终用户。
- 自由软件。
我所知道的选择是:
- 访问.mdb文件(当前情况)。
- SQLite。
- SQL Server CE.
是否有其他系统可以满足许多或所有所需特征?对于我正在考虑的系统,我应该了解哪些特定的"陷阱"?
好吧,"不能使用数据库服务器/引擎"使事情变得更加困难。"免费"也是如此。
我认为 Access 是您列表中唯一接近满足所有要求的东西。它不是免费的,但似乎你已经拥有了它,所以至少它不需要额外付费。
访问本质上是三种不同的捆绑产品。
- 喷射数据库引擎
- 用于查询、表单和报告的 RAD 环境
- VBA 编程环境
如果仅使用数据库引擎,则使用 SQL Server CE 执行一些测试是有意义的。
切换到 SQLite 可能需要对应用程序代码进行额外的检查。SQLite 支持存储类,不支持数据类型。那是什么意思?这意味着SQLite允许这样做。
sqlite> create table foo (n integer);
sqlite> insert into foo values ('wibble');
sqlite> select n from foo;
wibble
HyperSQL是另一种可能性。仅支持 JDBC,可以在没有服务器组件的情况下运行。 (文档并没有立即清楚这一点。我认为切换到这个比切换到SQL Server CE需要更多的工作。
另请参阅H2和火鸟。