【发布时间】:2026-02-08 08:00:02
【问题描述】:
我正在尝试为满足多个标准的商业产品开发数据管理解决方案。标准和我的推理如下:
- 解决方案应使用 C# 或支持 C#
- 以 JSON 格式管理数据
- 没有外部架构维护
- 能够在内存中缓存部分或全部数据并持久化到磁盘
- 不需要额外安装
- 如果解决方案涉及第三方软件,则许可证必须支持免费商业用途
要求 #1:我的应用程序是用 C# 编写的,我希望任何解决方案都不涉及与其他语言的应用程序、库或代码集成。
要求 #2:我想使用几个基于 JSON 的工具和库,因此我需要一个解决方案,其中数据可以在 JSON 中或轻松转换为 JSON 或从 JSON 转换。
要求#3:我想避免使用关系数据库解决方案带来的架构维护。我更喜欢在代码中管理不匹配的数据到对象的映射,并让代码更新旧数据,而不是单独管理架构更新。
要求#4:我要求始终将部分或全部数据加载到内存中,并将所有数据持久化到磁盘。数据是否保留在内存中应该是每个数据类型的可选内容。
要求#5:在安装我的产品时,我不希望有任何二次安装或运行我的应用程序以外的任何外部服务。完全独立的解决方案是最好的。
要求 #6:预期用途是用于分布式商业产品。我希望避免许多第三方解决方案带来的任何额外费用或许可问题。
迄今为止,我已经尝试了几种解决方案。最初我没有那么多限制,并使用SQLite.NET,它的使用并不令人不快,但是模式维护和数据格式的开销超出了我的预期。我调查了很多 NoSQL 解决方案(例如RavenDB)、其他第三方解决方案(Karvonite)和简单的 JSON 文件存储实现,但我对其中任何一个都不满意。
是否有我遗漏的、其他人已成功使用的自定义方法或解决方案?我希望我只是忽略了我所追求的选项,并且一些 NoSQL 和 .NET 专家在这方面有足够的经验来为我指明正确的方向。
编辑:如果任何原始评论员感到困惑,我更新了问题和标题以更好地遵守 SO 的政策。
【问题讨论】:
-
我似乎记得 MongoDB 只需要您在不安装的情况下将可执行文件作为服务器启动。将这些二进制文件与您的软件捆绑在一起是一种选择吗?请注意,我以 Mongo 为例。甚至不知道这是否符合您的要求。
-
还没有;在目前的建议中,RavenDB 是最接近许可的。
-
@Descalon 您能否提供详细说明与 MongoDB 集成以满足 OP 中列出的所有四个标准的资源?我在自己的研究中没有看到这些选项,但我很容易错过一些东西。
-
@jmblack 唉,但我不能。在做一些研究时,我偶然发现 MongoDB 是 AGPL 许可的,因此它不符合 OP 中的标准 4。
-
问题未正确关闭。它应该已经关闭,因为它要求工具/库推荐。我发现这个问题很有趣,因为我也在寻找同样的问题。但在 SO 还是不允许这样做的。
标签: c# database json nosql licensing