如何为WPF应用程序创建内置数据库

本文关键字:创建 内置 数据库 应用程序 WPF | 更新日期: 2023-09-27 17:49:30

我计划用PostgreSQL数据库构建一个c# WPF桌面应用程序(用于存储使用设置和一些文本框数据)。

这个应用程序的用户将在他们的计算机上有一个数据库服务器。我可以用WPF应用程序构建"内置"/"运行时"数据库(无论它叫什么)吗?

我是数据库应用的新手,我的问题是:

  1. 我可以在PostgreSQL中部署WPF应用程序,并且用户可以在没有SQL服务器的情况下安装和使用该应用程序吗?

  2. 部署一个用户有SQL服务器的应用程序与部署一个用户没有SQL服务器的应用程序有什么不同吗?

我需要高性能的东西。我有多达50个并发插入,每个插入以10毫秒的速度插入数据,并且我在几秒钟内将数千个数据存储到数据库中。我不认为SQLite或SQL compact可以完成这项工作。我需要通过

如何为WPF应用程序创建内置数据库

嵌入数据库

看一下SQL Server精简版。

支持ClickOnce, XCopy, MSI,CAB和非管理员嵌入安装选项

编辑* 在自定义应用程序中嵌入Sql Server Express

看起来你并不真正需要SQL本身,所以看看LevelDB看看键值存储是否能满足你的需求。

LevelDB是Google编写的一个快速键值存储库,提供从字符串键到字符串值的有序映射。

它是用c++编写的,非常快:

Write Performance 
fillseq      :       1.765 micros/op;   62.7 MB/s
fillsync     :     268.409 micros/op;    0.4 MB/s (10000 ops)
fillrandom   :       2.460 micros/op;   45.0 MB/s
overwrite    :       2.380 micros/op;   46.5 MB/s

如果用户尝试安装应用程序,并且无法访问保存设置和文本框数据的数据库,则应用程序将无法工作。您还需要让安装程序部署数据库。我会考虑像sqlite这样的东西来安装你的应用程序。

出于这个目的,我可以建议您使用Firebird,它在本地或远程db工作方面没有任何区别

请考虑使用VelocityDB,根据我的测试,这是嵌入式数据库解决方案在价格和性能之间的最佳折衷。这是一种NoSQL方法。它支持Linq查询。ORM是不需要的,只需要实现一个通用的存储库来模拟EF类行为。在8s 150ms内插入600000k条记录,以从该子集中过滤3k条。快。

RavenDB稍微快一些,但是按每个数据库的Mb计算,它的内存占用比VelocityDB大3倍以上。此外,RavenDB的TCO也有所提升。