首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于NoSQL数据库来说,无模式意味着什么?

对于NoSQL数据库来说,无模式意味着什么?
EN

Stack Overflow用户
提问于 2013-03-23 16:33:42
回答 2查看 27.5K关注 0票数 30

Schemaless是目前在NoSql世界中浮动的一个术语。

  1. 这是什么意思?
  2. 我今天有一个有3个属性的文档,然后用它进行生产,然后当我需要向文档再添加2个属性时,我的数据会发生什么变化呢?
  3. 这是一个纯粹的迁移问题吗?我需要管理数据迁移,或者NoSql数据库是否会造成与关系数据库相同的摩擦,或者在某种程度上使其变得更容易呢?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-23 16:58:37

模式少有点用词不当,最好把它看作是:

  • SQL = RDBMS在写时强制执行的架构
  • NoSQL = DBMS在写时强制执行的部分模式,以及由Read (外部模式)上的应用程序完全强制执行的模式

因此,虽然假设的模式-无模式NoSQL数据存储在理论上允许您存储任何您喜欢的数据(通常是键值对,在文档中),而不事先知道键或数据类型,除非您有某种机制来检索和使用这些数据。因此,模式基本上是部分地从RDBMS移到应用程序代码中。我说的部分原因是您将索引添加到文档集合中,或者为了性能而对数据进行分区,因此NoSQL数据库管理系统将在本地定义部分模式,并可能通过唯一的约束强制执行。

关于向存储中的文档/对象添加附加属性的问题。根据文档(未使用的空间)周围填充的大小,在其物理数据块中,向文档添加更多的键值对可能导致文档不得不物理地移动到更大的连续存储块,并重新构建相关索引。如果计划在频繁使用的查询中使用新键,那么还需要添加一个合适的新索引,这显然需要一些物理存储,最初构建需要一段时间,并可能导致您要求sysadmin为DBMS分配更多内存,从而允许缓存新索引。

票数 28
EN

Stack Overflow用户

发布于 2013-04-04 18:49:11

有点晚了,但是当我再次搜索这个主题的时候,我发现了这篇文章。

http://tech.pro/tutorial/1189/basics-of-ravendb-nosql

参考这篇文章的第3节,我会再引用一遍。

向RavenDB添加和更改数据模型是再简单不过的了。因为它是一个NoSQL数据库,所以它可以非常简单地处理模型的添加和删除。如果将属性添加到类中,则该属性将设置为该类型的默认值。如果删除属性,则在反序列化时将忽略该值。不再使用SQL脚本进行模糊处理。

这似乎是RavenDB的合理答案。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15589184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档