NoSQL数据存储在SQL Server上
本文关键字:Server SQL 数据 存储 NoSQL | 更新日期: 2023-09-27 18:03:12
所以忽略我们应该使用NoSQL数据库的事实——客户端基础设施的需求正在得到满足。
我们有明显属于非关系模型的数据,但我们必须使用SQL Server 2014进行持久化。是否有一种方法来使用库的东西,如RavenDB或MongoDB与SQL Server的持久性?例如,在SQL Server表中存储JSON或BSON,但使用Mongo或Raven来查询和序列化它?
我们最初打算将JSON数据存储在列中,但我认为必须有一个更优雅的解决方案。我看到RavenDB支持SQL Server复制,但它似乎不能用于其主要的持久性组件。
我们正在运行c# ASP。前端是一个KnockoutJS SPA,所以它会很乐意绑定到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数据塞进varchars,然后再放回去,那么你应该没有问题。在最新版本的Mongo(3.04左右)之前,Mongo不是基于事务的,我的一个客户端总是丢失数据,这引起了全世界的指责。如果你正在使用的Mongo版本不符合ACID,请非常非常小心。
我正在修改这个答案,因为SQL Server 2016现在在很大程度上支持JSON。根据微软的说法,这是最受欢迎的功能之一。请参阅以下两篇文章:
- https://msdn.microsoft.com/en-us/library/dn921897.aspx
- https://blogs.msdn.microsoft.com/jocapc/2015/05/16/json-support-in-sql-server-2016/
我不知道这是否回答了你的问题,但我在这样的情况下所做的是杂交我的SQL数据库。我将JSON存储在类似于nvarchar(max)
的东西中,并向表中添加要搜索的列。比如
-
my JSON document
{Name: "name", CreatedBy: "name", Date: "date", other attributes... }
-
表结构。添加要搜索的列以及整个JSON对象
NAME | DATE | CREATED_BY | JSON
这不是一个漂亮的方法,但到目前为止它是有效的。
既然你已经有Sql Server 2014,也许你可以迁移到2016版本。在2016年的版本中,你将拥有处理JSON数据的新功能(它们将在11月的CTP3中提供)。在这里你可以找到一些额外的信息JSON在Sql Server 2016中支持和如何在Sql Server 2016中组合JSON和关系数据
我是一个转译器的作者,它允许您在Sql Server上存储和查询NOSQL数据。它利用键-值模式,因此所有内容都可以放入一个表中。NuGet
https://www.sqlservercentral.com/articles/nosqlonsql https://www.codeproject.com/Articles/5282547/Introduction-to-NoSqlOnSql-Implementing-NOSQL-on-S