0

我想知道其中哪一个最适合我的应用程序的需求。该应用程序将分布在多台电脑上并共享一个公共数据库。该数据库最多可以包含大约 20 000 个条目。基本上它只是一个会议经理,数据库中的每个条目都代表一个会议。

例如,我可能想展示涉及某个人的每一次会议或与某个对象的每次会议。在这一点上这并不重要,因为这只是我可能想要制作的数据表示。

事实是我有一定的局限性:

  • 我正在用 C# 做应用程序
  • 我无法在用户的电脑上安装任何东西(如果需要,我必须只复制 .exe + dll)
  • 数据库将位于网络存储上,最多可同时访问 10 台电脑
  • 我从未使用过 SQL Server CE 或 SQLite(实际上也没有使用任何其他数据库)

我的第一个想法是使用纯 XML 数据库,因为使用 .NET 类序列化程序非常简单。为了修改数据库,用户必须获得对文件的写访问权。同时,所有其他用户都将处于只读状态。在任何时候,他们都可以通过在获得此访问权时创建的文件知道谁拥有写访问权。每个处于读取模式的应用程序也将有一个正在运行的进程监视 XML 文件,以便在数据库发生任何更改时通知其用户,让用户能够重新加载它。

听说过一点 SQLite 和 SQL Server CE,我不太确定我在可伸缩性和性能方面是否有正确的方法。我不介意学习如何使用它们。我主要担心的是我真的无法在用户电脑上安装任何东西,我想让用户的应用程序部署尽可能简单(理想情况下,复制/粘贴应用程序文件夹)。

所以这里有问题:

编辑 2:我猜它已经关闭,因为它可能会引发关于 SQLite 与 SQL Server CE 的争论,这不是我想要的

  1. 在上述情况下,使用 XML 文件还是真正的数据库更好?
  2. 一旦我们有许多条目,“真正的”数据库在性能之外给 XML 带来什么好处?

类似问题: Xml 或 Sqlite,何时为数据库删除 Xml?

编辑:这里为您提供更多信息,以帮助您了解我所处的环境:

实际使用的系统是 Word。一切都写在网络上某些用户共享的文件夹中的文件中。用户从该文件中检索信息以根据他们需要的数据表示创建其他文件。我想创建一个应用程序来简化他们的流程。由于他们已经习惯了他们的系统,如果我的应用程序需要任何类型的操作来安装它,他们可能会想要坚持使用他们的系统。每次安装都需要通过他们的 IT 服务,这是缓慢而复杂的,尤其是对于非官方应用程序。

这些电脑可能会阻止他们的用户做任何常见任务之外的任何事情。这就是为什么我想让我的应用程序尽可能简单(这样我就可以通过 USB 密钥传递可执行文件和 dll 并且它可以以最少的用户交互运行)

4

2 回答 2

4

根据您的要求,您需要一个处理以下内容的数据库:

  1. 处理并发
  2. 通过网络正常工作。文件共享不是一个好的做法,在网络中工作的数据库必须有一个 DBMS 来控制访问。
  3. 事务性的
  4. 用户管理和安全(身份验证/授权)。只要您在网络中公开它,您就需要它。

根据您的所有要求,我相信 SQLite/SQL CE/XML 文件都不是好的答案。在您想要拥有本地数据库(而不是通过网络)的情况下,所有这些都很有用。一旦你想要一个基于网络的数据库,你就需要更高级的东西,就像我上面提到的那样,并发性、安全性等。我建议你可以使用免费、可扩展、安全、网络可访问且公平的SQL Express 2012易于使用。

根据经验,当您有 10 个远程用户时,将来他们很可能会增加。因此,请选择更强大的选项,因为以后更改数据库并不是一件容易的事。

于 2012-12-06T23:19:30.260 回答
0

像 Sqlite 这样的数据库会处理多用户读/写问题。每次数据更改时,都需要将 XML 文件缓存在内存中并串行写入。即使您想出了确保只有一个用户写入文件的外部策略,其他用户也可能在文件更新时读取。

最后,嵌入式数据库的效率越高,您处理的数据量越大。

于 2012-12-06T23:20:09.417 回答