我正在尝试为符合多个标准的商业产品开发数据管理解决方案。标准和我的推理如下:
要求#1 :我的应用程序是用C#编写的,我希望任何解决方案都不涉及与其他语言的应用程序,库或代码集成。
要求#2 :我想使用几种基于JSON的工具和库,因此我需要一种解决方案,其中数据可以在JSON中或从JSON轻松转换。
要求#3 :我想避免使用关系数据库解决方案时出现的架构维护。我更喜欢在代码中管理不匹配的数据到对象映射,并让代码更新旧数据,而不是单独管理模式更新。
要求#4 :我要求始终将部分或全部数据加载到内存中,并将所有数据保存到磁盘。数据是否存在于内存中应该是每种数据类型可选的。
要求#5 :安装我的产品时,我不希望进行任何辅助安装或运行除我的应用程序之外的任何外部服务。一个完全独立的解决方案是最好的。
要求#6 :预期用途是针对分布式商业产品。我宁愿避免许多第三方解决方案带来的任何额外费用或许可问题。
到目前为止,我已经尝试了几种解决方案。最初我没有那么多的约束,并使用SQLite.NET并且它的使用并不令人不愉快,但架构维护和数据格式的开销超出了我的预期。我调查了很多NoSQL解决方案(例如RavenDB),其他第三方解决方案(Karvonite)和简单的JSON文件存储实现,但我对它们中的任何一个都不满意。
是否有我缺少的自定义方法或解决方案,其他人已成功使用?我希望我只是忽略了我所追求的选项,并且那些NoSQL和.NET专家在这方面有足够的经验指出我正确的方向。
编辑:如果任何原始评论员感到困惑,我更新了问题和标题,以便更好地遵守SO的政策。
答案 0 :(得分:1)
流畅的NHibernate自动编写SQLite将满足您的所有要求,除了编辑#2 - " NoSQL,最好所有数据都是JSON文档"
它从对象模型中自动化关系数据库模式...不使用JSON。 编辑但是,您可以将JSON数据另存为BLOB。 (警告:我对JSON几乎一无所知)
答案 1 :(得分:0)
你看过Karvonite Framework了吗? Karvonite框架提供了一种强类型的嵌入式数据库系统,其中包括用于.NET / Windows Store / Silverlight / Windows Phone / Xbox开发的可移植库实现。我只将它用于小型数据库实现,但到目前为止它已经满足了我的每一个需求。