是否可以使用Sql Server XML列替代真正的文档数据库(例如Couch或Mongo)?
如果我要为文档创建一个带有guid PK Id和XML列的表。 与使用文档数据库相比,主要问题是什么?
Sql Server支持对XML列进行索引,因此查询不应该是完全可怕的吗?
是否可以使用Sql Server XML列替代真正的文档数据库(例如Couch或Mongo)?
如果我要为文档创建一个带有guid PK Id和XML列的表。 与使用文档数据库相比,主要问题是什么?
Sql Server支持对XML列进行索引,因此查询不应该是完全可怕的吗?
你在这里有几个问题:
是否可以使用Sql Server XML列替代真正的文档数据库(例如Couch或Mongo)? 是的,您可以将其用作替代品,但不是,如果您专门存储XML而不利用任何SQL Server的关系工具,则可能不会对性能感到满意。
如果我要为文档创建一个带有guid PK Id和XML列的表。与使用文档数据库相比,主要问题是什么? 简而言之,扩展。 SQL Server不能很好地扩展这种东西。您可以通过复制来实现,但相对于“真正的”文档数据库进行管理却很痛苦。
Sql Server支持对XML列进行索引,因此查询不应该是完全可怕的吗? 问题是SQL Server的XML索引可能需要几倍于原始数据的存储空间。这些索引无法在线维护(如defrags),因此在维护窗口期间最终会出现锁定问题。
我正在做一些实验: http://rogeralsing.com/2011/03/02/linq-to-sqlxml-projections/
查询速度“体面”,我没有用于缩放。 但是,在标准基础架构上运行的无架构存储的乐趣非常好。
是的你可以。将文档存储在SqlServer XML列中将起作用,如果使用标准XML序列化,将为您提供一个不错的ACID complant键/值存储。此外,它允许您相对轻松地对其进行查询,并且您可以将结果加入到以更关系方式存储的数据中。我们这样做,它的工作原理。如果将内容存储在XML字段中,则存储需求比使用NTEXT要低得多,并且查询它将更灵活,更快速。
什么SqlServer不会得到你(与mongo相比)是复制的无缝故障转移设置mongo的自动调整。此外,原子操作(如在文档内部增加特定属性)很难(尽管XQuery更新功能并非不可能)。大多数NoSql数据库的更新往往更快,因为它们在“数据仅在磁盘上是安全的”原则上更加宽松。
对的,这是可能的。至于这是不是一个好主意,这只是我的2美分......
在XML数据类型出现之前,我研究了一个在NTEXT列中存储XML的系统 - 这并不令人愉快,并且从数据中获得任何实际用途意味着将一些数据分解为关系形式。
好的,XML数据类型现在可以更轻松地查询XML blob并提取某些值/索引它们。但就个人而言,一般而言,我不会。我并不是说永远不会使用XML,因为有这样的情况 - 相反,如果这是你所做的所有计划,那么我会想“这是这项工作的正确工具”。使用RDBMS作为文档数据库让我感到有点不安。而像MongoDB这样的东西已经从头开始构建为文档数据库。
老实说,我没有对将数据存储为XML进行任何性能测试,因此我无法向您说明性能会是什么样的。有兴趣知道这是如何大规模表现的。