Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 共享数据库XML vs SQLite vs SQL Server CE_C#_Xml_Sqlite_Sql Server Ce - Fatal编程技术网

C# 共享数据库XML vs SQLite vs SQL Server CE

C# 共享数据库XML vs SQLite vs SQL Server CE,c#,xml,sqlite,sql-server-ce,C#,Xml,Sqlite,Sql Server Ce,我想知道其中哪一个最适合我的应用程序的需要。 该应用程序将分布在多台pc上,并共享一个公共数据库。该数据库最多可包含约20000个条目。基本上,它只是一个会议经理,DB中的每个条目都代表一次会议 例如,我可能希望显示涉及某个人的每次会议或与某个对象的每次会议。这在这一点上并不重要,因为这只是我可能想要的数据表示 事实上,我有一定的局限性: 我正在用C语言做这个应用程序# 我无法在用户的电脑上安装任何东西(如果需要,我只能复制.exe+dll) 数据库将位于网络存储上,可能是 最多可由10台pc

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

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

事实上,我有一定的局限性:

  • 我正在用C语言做这个应用程序#
  • 我无法在用户的电脑上安装任何东西(如果需要,我只能复制.exe+dll)
  • 数据库将位于网络存储上,可能是 最多可由10台pc同时访问
  • 我从未使用过SQLServerCE或SQLite(事实上也没有使用过任何其他数据库)
我的第一个想法是使用纯XML数据库,因为使用.NET类序列化程序非常简单。为了修改数据库,用户必须获得对文件的写访问权。同时,每一个其他用户都是只读的。在任何时候,他们都可以通过获得写访问权限时创建的文件知道谁拥有写访问权限。处于读取模式的每个应用程序还将有一个正在运行的进程监视XML文件,以便在数据库发生任何更改时通知其用户,从而允许用户重新加载它

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

以下是问题:

编辑2:我想它是关闭的,因为它可能会引发一场关于SQLite和SQL Server CE的辩论,这不是我想要的

  • 在上面介绍的上下文中,使用XML文件还是真正的数据库更好
  • 一旦我们有了许多条目,“真实”数据库在性能之外比XML有什么好处
  • 类似问题:

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

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


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

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

  • 处理并发性
  • 通过网络正常工作。文件共享不是一种好的做法,在网络中工作的数据库必须有一个DBMS来控制访问
  • 交易的
  • 用户管理和安全(身份验证/授权)。只要你在网络中公开它,你就需要它
  • 基于您的所有需求,我认为SQLite/sqlce/XML文件都不是好的答案。在需要本地数据库(而不是通过网络)的情况下,所有这些功能都很有用。只要你想要一个基于网络的数据库,你就需要一些更高级的东西,正如我上面提到的,比如并发性、安全性等。我建议你可以使用免费、可扩展、安全、网络可访问且相当容易使用的


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

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

  • 处理并发性
  • 通过网络正常工作。文件共享不是一种好的做法,在网络中工作的数据库必须有一个DBMS来控制访问
  • 交易的
  • 用户管理和安全(身份验证/授权)。只要你在网络中公开它,你就需要它
  • 基于您的所有需求,我认为SQLite/sqlce/XML文件都不是好的答案。在需要本地数据库(而不是通过网络)的情况下,所有这些功能都很有用。只要你想要一个基于网络的数据库,你就需要一些更高级的东西,正如我上面提到的,比如并发性、安全性等。我建议你可以使用免费、可扩展、安全、网络可访问且相当容易使用的


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

    像Sqlite这样的数据库可以解决多用户读/写问题。XML文件需要缓存在内存中,并在每次数据更改时连续写入。即使您提出了一种外部策略来确保只有一个用户写入文件,其他用户也可能在更新文件时读取


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

    像Sqlite这样的数据库可以处理多个数据库-