繁体   English   中英

在SQL Server上存储NoSQL数据?

[英]Store NoSQL data on SQL Server?

因此,忽略我们应该使用NoSQL数据库的事实 - 客户端基础架构要求正在逐渐成熟。

我们的数据显然属于非关系模型,但我们必须使用SQL Server 2014来实现持久性。 有没有办法将库用于RavenDB或MongoDB与SQL Server之间的持久性? 例如,将JSON或BSON存储在SQL Server表中,但使用Mongo或Raven查询和序列化它?

我们最初只是将JSON数据存储在一个列中,但我认为必须有一个更优雅的解决方案。 我看到RavenDB支持SQL Server复制,但看起来它不能用于其主要持久性组件。

我们正在运行一个C#ASP.NET MVC Web应用程序。 前端是一个KnockoutJS SPA,所以它很乐意绑定到JSON数据。

我不知道这是否能回答你的问题,但我在这种情况下所做的是混合我的SQL数据库。 我将JSON存储在nvarchar(max) ,并将列添加到我将要搜索的表中。 所以像

  • 我的JSON文档

     {Name: "name", CreatedBy: "name", Date: "date", other attributes... } 
  • 表结构。 添加将要搜索的列以及整个JSON对象

     NAME | DATE | CREATED_BY | 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类型(与JSON不同)与xml索引一起存储。 在甚至一百万行表上进行插入时可能会出现严重的性能问题,因此请仔细检查实际的行数,以查看XML或varchar解决方案是否适合您。

如果您要做的就是将JSON数据填充到varchars中然后再返回,那么您应该没有问题。 直到最新版本的Mongo(3.04左右)Mongo不是基于事务性的,而我的一个客户端总是丢失数据并且引起了一个指责世界。 如果您使用的Mongo版本不符合ACID,则非常非常小心。

我正在修改这个答案,因为SQL Server 2016现在支持JSON。 根据微软的说法,它是最受欢迎的功能之一。 请参阅以下两篇文章:

由于您已经拥有Sql Server 2014,因此您可以迁移到2016版本。 在2016版本中,您将拥有处理JSON数据的新功能(它们将于11月在CTP3中提供)。 在这里,您可以在Sql Server 2016中找到一些额外的信息JSON支持,以及如何 在Sql Server 2016 中组合JSON和关系数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM