将数据库与项目一起部署

本文关键字:一起 部署 项目 数据库 | 更新日期: 2023-09-27 18:22:14

我需要创建一个执行以下操作的应用程序:

  • 该应用程序将安装在同一网络上的多台计算机上

  • 将有一台计算机包含其他计算机将连接到该数据库的数据库。(所以有一个服务器版本的软件和一个客户端版本)

  • 所有安装了应用程序的计算机都应该能够在数据库中执行CRUD(创建、读取…)操作。

  • 数据库将很小,也就是说它的大小应该小于1GB。

我遇到的问题:

我不知道该使用哪个数据库:

  • SQLite-从互联网上的研究来看,这似乎是一个很棒的数据库。它很快,非常容易部署。问题是,从研究来看,我认为处理多个连接不是很好。当我说多台时,我指的是同时使用数据库的5台计算机。

  • MySQL-我使用这个数据库,我知道它处理多个连接非常好。该数据库的问题在于,我不知道如何部署该数据库。安装软件时,我需要部署数据库。我知道,如果我要求用户安装MySQL,做一个单独的安装,这将起作用。在visualstudio中使用项目时,也许有一种部署MySQL的方法。

  • SQL Server Express-我相信这将是我的最佳选择。我在互联网上进行了研究,发现可以通过应用程序部署SQL Server Express数据库。我相信如何在项目中部署这样的数据库会很容易,但如果有人能为我指明正确的方向,告诉我如何从同一网络上的计算机远程连接到该数据库,那就太好了。为了实现这一点,数据库显然将在网络中共享。

  • Microsoft Access数据库-我从不使用此数据库。我知道它可以处理多个连接。也许这是一个不错的选择。

如果有人能在安装我的应用程序时为我指明如何部署数据库的正确方向,那就太好了。此外,我将如何能够从同一网络上的计算机远程连接到该数据库由于数据库很小,只包含文本,我认为最好的想法是将数据库保留在互联网上,但我不能这样做。该软件需要在没有互联网连接的情况下工作

编辑

从你的回答来看,我似乎必须在服务器计算机上安装SQL Server express或MySql。问题是我需要进行一次安装。在部署应用程序时,是否有部署MySql或SQL Server Express的方法。也许我必须在应用程序中嵌入mysql,并让我的应用程序以某种方式安装它。我的老板希望能够在没有互联网连接的情况下安装软件。

编辑2

我一直在思考,这一部分将很难实施。你们知道QuickBooks如何实现他们的数据库吗?我想我需要类似的东西。安装Quickbooks时,只执行一次安装。快速书籍可以很好地处理同时连接。他们使用自己的数据库吗?神谕MySQL?我同意你们所有人的看法。执行两次安装将非常容易。而且它会更干净。我正在创建的软件应该在windowsxp和windows的后一个版本上运行。

将数据库与项目一起部署

如果你想要一个dbms作为你的后端,你要安装两件事,在用户看来可能是一件事,但我可以从痛苦的经历中告诉你,这可能很有趣。

例如,要安装2005/2008 express,有各种先决条件。就像一个.net框架。然后是补丁和更新,然后打开防火墙,这取决于设置。不同的拓扑/os选择。对等,基于域,Active directory,终端服务,citrix。因此,除非你对用户环境有严格的控制,否则在没有互联网连接的情况下自动安装并使用数据库的安装程序几乎是不可能的。

欢迎来到一个充满伤害的世界。

哦,我提到权限、共享、UAC、32/64位(可能用于sql server dmo和smo)了吗

是否要阻止在"不兼容"环境中进行安装。

哦,升级怎么样。到数据库,到你的应用程序。如果你的客户端已经安装了服务器,并且不想用另一个来打乱他们的工具包,该怎么办。。。

还有更多。

我敢打赌,你迫不及待地想测试所有潜在的组合。

你还没有说你的目标环境是什么,所以我不能说罐头里有多少蠕虫,但这是一个很大的时间,有足够的空间容纳很多蠕虫。我们的应用程序是一款长期运行的遗留应用程序,所以我们几乎陷入了困境,不过我再也不愿意开始这种设计了。本地部署的网络应用程序会减轻很多痛苦

回去把你老板吓得屁滚尿流。

我建议在网络上的服务器上安装Sql Server Express。Microsoft Access不能很好地处理多个同时连接,从远程计算机访问时效率也不高。

您不需要担心使用客户端应用程序部署数据库,您可以直接在服务器上安装SqlServerExpress。(这只需要做一次)。在服务器上安装Sql Server Express后,您需要将其配置为接受远程连接。

SQLexpress支持多个连接。所以,若你们将数据库连接到"服务器"计算机上,你们就可以像连接到本地数据库一样从客户端连接。(前提是这些计算机在局域网或VPN中)。

互联网上的几篇文章提到,如果所有连接都写入同一数据库,那么SQLite就不能很好地处理多个连接。我终于用SQLServer2008Express部署了我的应用程序。我还使用SQLite部署了我的应用程序(下载了.NET framework 4的最新版本)。由于我计划只在本地网络(LAN)上使用这个数据库,我尝试了一下SQLite。SQLite的效率给我留下了深刻的印象。我通过与4台计算机对称连接并不断向数据库写入数据(插入)来测试数据库。没有丢失任何数据。当我用SQL express做这件事时,它也非常高效,我无法分辨出明显的区别。例如,一旦有50台计算机像网络服务器一样连接在一起,你可能会看到真正的区别。

SQLite的其他优点是它不需要时间进行部署。此外,没有持续运行的重型服务。我想SQLite是一个比SQLexpress更好的选择。此外,SQLexpress将只使用1个CPU,并且数据库限制为2GB。

我将对Linq到SQL类进行雾化思考。它们很容易用SQL Server Express实现。总之,我认为每个数据库都擅长某个方面。在这种情况下,我想SQLite对我和用户来说都是一个更好的选择。

p.S。我很感兴趣的是,与SQLexpress相比,SQLite最新版本将如何处理多个连接。我将很快尝试用更多的计算机进行测试,每台计算机运行多个线程,每个线程在数据库中执行插入操作。也许我会看到这种情况有很大的不同。