因此请忽略我们应该只使用 NoSQL 数据库这一事实 - 客户端基础设施要求正在发挥作用。
我们的数据显然属于非关系模型,但我们必须使用 SQL Server 2014 来实现持久化。有没有办法将库用于诸如 RavenDB 或 MongoDB 之类的东西和 SQL Server 以实现持久性?例如,将 JSON 或 BSON 存储在 SQL Server 表中,但使用 Mongo 或 Raven 对其进行查询和序列化?
我们最初打算将 JSON 数据存储在一个列中,但我认为必须有一个更优雅的解决方案。我看到 RavenDB 支持 SQL Server 复制,但它似乎不能用于其主要持久性组件。
我们正在运行一个 C# ASP.NET MVC 网络应用程序。前端是 KnockoutJS SPA,因此很乐意绑定(bind)到 JSON 数据。
最佳答案
有关在 SQL Server 中将 JSON 存储为关系数据并将其提取回 JSON 的更复杂的讨论,请参阅 Phil Factor(这就是他的名字)的精彩文章,通过 TSQL 从 SQL Server 查询生成 JSON 文档, https://www.simple-talk.com/sql/t-sql-programming/producing-json-documents-from-sql-server-queries-via-tsql/ .
将 JSON 存储为具有全文索引的 varchar 或具有 xml 索引的 xml 类型(与 JSON 不同)时要小心。即使在一百万行表上执行插入操作时也可能会出现严重的性能问题,因此请仔细测试实际的行数,看看 XML 或 varchar 解决方案是否适合您。
如果您要做的只是将 JSON 数据填充到 varchar 中,然后再返回,那么您应该没有问题。在最新版本的 Mongo(3.04 左右)之前,Mongo 不是基于事务的,我的一个客户总是丢失数据,这导致了一个相互指责的世界。如果您使用的 Mongo 版本不符合 ACID,请非常非常小心。
我正在修改这个答案,因为 SQL Server 2016 现在在很大程度上支持 JSON。据微软称,这是最受欢迎的功能之一。请参阅以下两篇文章:
关于c# - 在 SQL Server 上存储 NoSQL 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31483452/