c# - 在 SQL Server 上存储 NoSQL 数据?

标签 c# sql-server mongodb ravendb nosql

因此请忽略我们应该只使用 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/

相关文章:

c# - 为什么 C# 和 C++ 使用 _<variableName> 编码约定?

sql-server - 在 "Case When"子句中使用 "Order by"根据多列对结果集进行排序

mysql - MySQL 是否与 EF Core 2.0 兼容?

mongodb - Mongoose - 从 DBref 数组和项目本身中删除项目

javascript - 捕获 JavaScript 中 for 循环的错误中断?

c# - 如何知道是否在两个检查点之间触发了 gen full 垃圾回收?

c# - 反射程序集导致 Unity 需要 Microsoft.Practices.ServiceLocation

c# - 未找到 Microsoft.Owin.Testing.TestServer 404

sql-server - .NET 5 - 启动 MS SQL docker 容器进行集成测试

node.js - 在 Mongoose 中按月分组