【问题标题】:How to create a built-in Database for WPF application如何为 WPF 应用程序创建内置数据库
【发布时间】:2016-10-01 06:22:37
【问题描述】:

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

此应用程序的用户将在他们的计算机上拥有数据库服务器。我可以使用 WPF 应用程序构建“内置”/“运行时”数据库(无论其名称如何)?

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

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

  2. 在用户有 SQL Server 的情况下部署应用程序与在用户没有 SQL Server 的情况下部署应用程序有什么不同吗?

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

【问题讨论】:

  • 你的意思是内置数据库吗?
  • 你为什么不认为 SQLite 会工作?

标签: c# wpf postgresql


【解决方案1】:

看看SQL Server Compact Edition

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

编辑* Sql Server Express 怎么样,看看这个Embedding SQL Server Express into Custom Applications

【讨论】:

  • 我需要一些高性能的东西。我有多达 50 个并发插入,每个插入数据的速度为 10 毫秒,并且我在几秒钟内将数千个数据存储到数据库中。我认为 SQLite 或 SQL compact 不会做这项工作。我需要嵌入数据库。
  • 您希望存储多少数据?此外,您是否希望多个用户访问同一个嵌入式数据库,或者每个用户都有自己的实例,因为缺少更好的词?
  • 每个用户只有一个实例。用户可以将所有设置和数据存储到一个文件中,以后可以上传
【解决方案2】:

看起来您本身并不真的需要 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

【讨论】:

    【解决方案3】:

    如果用户尝试安装应用程序并且无权访问保存设置和文本框数据的数据库,则应用程序将无法运行。您还需要让安装程序部署数据库。我会考虑在你的应用程序旁边安装类似 sqlite 的东西。

    【讨论】:

    • @grantik 我记得每当我安装一些软件(带有数据库)时,我都没有看到我的计算机中安装了任何数据库。将应用程序与数据库一起部署是什么意思?
    • grantk:任何体面的嵌入式数据库都可以在没有预装的情况下工作。他们可以从代码创建和播种数据库。 @KMC您至少应该看到一个文件-通常在 %AppData% 或应用程序文件夹中-“是”数据库。 sqlite 和 Berkeley DB 只是带有库的文件,可以有效地访问这些文件。
    【解决方案4】:

    为此,我建议您使用 Firebird,它在使用本地或远程数据库时没有任何区别

    【讨论】:

      【解决方案5】:

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

      RavenDB 稍微快一些,但它的每个数据库的 Mb 占用量是 VelocityDB 的 3 倍以上。 RavenDB TCO 也有所提高。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-03
        • 1970-01-01
        相关资源
        最近更新 更多