共享数据库XML与SQLite对比SQL Server CE

时间:2012-12-06 22:39:02

标签: c# xml sqlite sql-server-ce

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

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

事实是我有一些限制:

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

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

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

以下是问题:

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

  1. 在上面提到的上下文中,使用XML文件或真正的数据库会更好吗?
  2. 一旦我们有很多条目,“真正的”数据库会在性能之外给出什么好处?
  3. 类似的问题: Xml or Sqlite, When to drop Xml for a Database?

    编辑:以下是您的更多信息,以帮助您了解我所处的环境:

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

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

2 个答案:

答案 0 :(得分:4)

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

  1. 处理并发
  2. 通过网络正常工作。文件共享不是一种好的做法,在网络中工作的数据库必须有一个DBMS来控制访问。
  3. 事务
  4. 用户管理和安全性(身份验证/授权)。只要你在网络中公开它就需要它。
  5. 根据您的所有要求,我相信SQLite / SQL CE / XML文件都不是一个好的答案。所有这些在您希望拥有本地数据库(而不是通过网络)的情况下非常有用。一旦你想要一个基于网络的数据库,就需要更高级的东西,如上所述,比如并发,安全等等。我建议你可以使用免费,可扩展,安全,网络可访问的SQL Express 2012并且相当容易使用。

    根据经验,当你有10个远程用户时,将来很可能会增加它们。因此,选择更强大的选项,因为更改数据库不是以后的简单任务。

答案 1 :(得分:0)

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

最后,随着您使用的数据量越大,嵌入式数据库的效率就越高。