该应用程序将安装在同一网络上的多台计算机上
将有一台计算机包含其他计算机将连接到该数据库的数据库。 (所以有软件的服务器版本和客户端版本)
安装了应用程序的所有计算机都应该能够在数据库中执行CRUD(创建,读取,...)操作。
数据库很小,即它的大小应该小于1GB。
我不知道要使用哪个数据库:
SQLite - 从互联网上的研究来看,这似乎是一个很棒的数据库。它很快,非常容易部署。问题是,通过研究,我认为处理多个连接并不是那么好。当我说多个时,我指的是同时使用数据库的5台计算机。
MySQL - 我使用这个数据库,我知道处理多个连接很棒。该数据库的问题是我不知道我将如何部署该数据库。安装软件时我需要部署数据库。我知道如果我要求用户安装MySQL进行单独的安装,那将是有效的。也许在Visual Studio中组合项目时有一种部署MySQL的方法。
SQL Server Express - 我相信这将是我最好的选择。我在互联网上进行了研究,发现可以使用应用程序部署SQL Server Express数据库。我相信很容易弄清楚如何使用项目部署这样的数据库,但如果有人可以指出我如何从同一网络上的计算机远程连接到该数据库的正确方向,那将是很好的。显然,数据库将在网络中共享,以实现这一目标。
Microsoft Access数据库 - 我从不使用此数据库。我知道它可以处理多个连接。也许这是一个不错的选择。
如果有人能指出我在安装我的应用程序时如何能够部署数据库的正确方向,那将是很好的。此外,我如何能够在同一网络上远程连接到该数据库。 由于数据库很小并且只包含文本,我认为最好的想法是将数据库保存在互联网上,但我不能这样做。该软件需要在没有互联网连接的情况下工作。
从查看答案看起来我必须在服务器计算机上安装SQL Server Express或MySql。问题是我需要做一次安装。在部署我的应用程序时是否有部署MySql或SQL Server Express的方法。也许我必须在应用程序中嵌入mysql并使我的应用程序以某种方式安装它。我的老板希望能够在没有互联网连接的情况下安装软件。
我一直在想,这部分将很难实现。你们有任何想法QuickBooks如何实现他们的数据库?我想我需要类似的东西。安装Quickbooks时,只执行一次安装。快速书籍可以很好地同时处理连接。他们使用自己的数据库吗?甲骨文? MySQL的?我同意你们所有人的意见。执行两次安装将非常容易。它也会更清洁。我正在创建的软件应该在windows xp和后一版本的windows上运行。
答案 0 :(得分:4)
如果你想要一个dbms作为你的后端你正在安装两件事,它可以让用户看起来像一件事,但我可以从痛苦的经历告诉你,这可以很有趣。
例如,要安装2005/2008 express,有各种先决条件。就像一个.net框架。然后是补丁和更新,然后打开防火墙,取决于设置。不同的拓扑/ os选择。点对点,基于域,Active Directory,终端服务,Citrix。 因此,在没有互联网连接的情况下自动安装,并使用db的安装程序几乎是不可能的,除非您严格控制用户环境。
欢迎来到一个受伤的世界。
哦,我提到权限,共享,UAC,32/64位(对于sql server dmo和smo,也许)
是否要阻止“不兼容”环境中的安装。
哦,升级怎么样?到数据库,到你的应用程序。 如果您的客户已经安装了服务器并且不想让他们的工具包与另一个客户端混乱,该怎么办...
还有很多。
而且我打赌你迫不及待想要测试所有潜在的组合。
你还没有说过你的目标环境是什么,所以我不能说锡中有多少蠕虫,但它是非常大的时间,有很多蠕虫的空间。 我们是一个长期运行的遗留应用程序,所以我们几乎都是傻瓜,但我再也不愿意从这个设计开始了。本地部署的Web应用程序会消除很多痛苦。
回去吓唬老板。
答案 1 :(得分:2)
我建议您在网络上的服务器上安装Sql Server Express。 Microsoft Access不能很好地处理多个同时连接,并且从远程计算机访问时效率不高。
您无需担心使用客户端应用程序部署数据库,您可以直接在服务器上安装Sql Server Express。 (这只需要做一次)。在服务器上安装远程连接后,您需要将Sql Server Express配置为接受远程连接。
答案 2 :(得分:1)
SQLexpress支持多个连接。因此,如果您在“服务器”计算机上附加数据库,则可以使用与本地数据库相同的方式连接客户端(如果这些计算机位于LAN或VPN中)。
答案 3 :(得分:1)
互联网上的一些文章提到,如果所有连接都写入同一个数据库,那么SQLite不能很好地处理多个连接。我终于设法用SQL Server 2008 express部署我的应用程序。我还使用SQLite部署了我的应用程序(下载了.NET framework 4的最新版本)。由于我打算在本地网络(LAN)上使用这个数据库,所以我试试了SQLite。我对SQLite的效率印象深刻。我通过连接4台计算机并不断地将数据(插入)写入数据库来测试数据库。没有数据丢失。当我使用SQL express执行此操作时,它也非常有效,我无法分辨出明显的区别。例如,一旦连接了50台计算机,就像在Web服务器上那样,你可能会看到真正的区别。
SQLite的其他好处是它不需要花费时间来部署。此外,没有重型服务不断运行。我猜SQLite比SQL express更好。此外,SQLexpress只使用1个CPU,数据库限制为2GB。
我想把Linq to SQL类想到。它们使用SQL Server Express非常容易实现。所以简而言之,我认为每个数据库都擅长某些东西。在这种情况下,我认为SQLite对我和用户来说都是更好的选择。
P.S。 我有兴趣了解SQLite lattest版本与SQLexpress相比如何处理多个连接。我将尝试尽快测试更多的计算机和运行多个线程的每台计算机,每个线程在数据库中执行插入。也许我会看到与那种情况有很大不同。