首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

RavenDB起步--使用 RavenDB Studio

上一篇文章我们讲解了 RavenDB 的安装以及示例数据库的创建,并且其中涉及到了 RavenDB Stuido 的使用,但是只是简单的讲解了一下。...那么在这篇文章中我将带领大家来具体的学习 如何在 RavenDB Studio 中实现增删改查。...一、增加 当需要手动向 RavenDB 库中增加一条数据时,我们可以在 RavenDB Studio 中手动添加。...虽然说 RavenDB Studio 在增加一个新文档时,会基于现有文档来生成,但是因为在 RavenDB 中没有类似于 schema 的东西,所以我们可以随意增加和删除属性来修改文档结构,这个功能使数据模型在演变和处理复杂数据的时候更加容易...三、删除 如果要删除 RavenDB 中指定的文档,只选择该文档并点击 Delete 按钮即可。

72120

RavenDB 文档建模--使用 RavenDB 作为键值存储

RavenDB 非常适合键/值存储,为了确保快速存取数据库,RavenDB 在设计的时候降低了存储和加载文档的成本,这是 RavenDB 和其他数据库相比最大的有点。...由于数据限制必须是 JSON ,因此使用 RavenDB 作为键/值存储是完全没问题的。使用 RavenDB 缓存信息的常见场景有:存储购物车信息、存储用户会话数据、缓存热点数据等等。...在使用 RavenDB 作为键/值存储的情况下,下面所列的内容是很有用的: 可以独立于使用的集合生成文档标识符; 通过提供要加载的 ID,可以在单个调用中完成加载文档; RavenDB 为文档提供自动过期功能...但在,RavenDB 中允许我们非常轻松地查询和聚合数据。但是考虑到 RavenDB 对数据的处理能力,仅将 RavenDB 用于键/值数据有点浪费。...因此,我们还能将它作为标准的数据库进行操作,下一篇文章我将讲解 RavenDB 数据建模。

63720
您找到你想要的搜索结果了吗?
是的
没有找到

RavenDB 文档建模 -- 开篇

但是这里存在一个致命的问题,历史订单已经完成了配送,当我们修改的地址与历史订单有关联时就会出现历史订单的配送信息改变了,这样就造成了数据损坏。...这个问题是在建模过程中出现的缺陷(解决这个问题也很简单,在这里我们就不再讨论),这是建模人员只局限于以关系的眼光看待事务造成的。...在 RavenDB 这种非关系型文档数据库中并不能完全解决这个问题,但是对于大多数业务系统来说 RavenDB 存储数据的模型还是比较合适的。...在 RavenDB 中每个文档都是一个聚合,它是面向文档的建模技术,为解决类似于订单和地址这种问题提供了很好的解决方案。 Q:什么是聚合?...在这个专题中,我们将学习如何拜托关系型思维模式以及如何为 RavenDB 建模。

22620

RavenDB数据建模--总结

在本专题中我们首先将 RavenDB 视为一个简单的键/值存储。只需将数据存储进去并通过键访问数据即可。同时我们还学习了使用过期功能来存储与时间相关的数据。...接下来,我们讨论了建模时必须考虑的一些约束,例如如何处理文档的增长以及RavenDB中文档的良好大小。...然后我们学习了如何处理带有附件的二进制数据,以及使用修订功能进行审计和更改跟踪,并且了解了我们可以在 RavenDB 中如何让文档数据过期。简要介绍了索引和查询时的引用处理。...在RavenDB中文档以某种方式存储和访问,而我们默认使用查询以获得更高的性能并有更多的优化机会。此行为由用户根据具体情况进行控制,因此你可以为每个方案选择适当的模式。

39930

RavenDB起步--第一个 RavenDB 程序

项目新建成功后,我们需要在项目中安装 RavenDB 的包。在 NuGet b包管理其中查找 RavenDB.Client 包并安装它。...新增 既然要操作 RavenDB 肯定就少不了实体类,虽然说 RavenDB 使用的是完全动态的数据库,但是在实际开发中大多数情况都需要使用实体类。...然后将任务存储在会话中并调用 SaveChanges 方法将会话中的所有更改保存到 RavenDB 中。...在开发中除非特殊的情况下我们才会每执行一次 CURD 就去执行一次 SaveChange 方法,大部分情况我们会将同一个会话中的所有操作执行完后采取执行 SaveChange 方法,在这里我们不需要担心如果在中途出先异常,数据只保存了部分的问题...,这时因为 RavenDB 具有其他 NoSQL 数据库所没有的真正的事务,要么全部保存成功,要么全部保存失败,不会出现部分成功和部分失败的问题

34410

RavenDB建模--常见建模方案

RavenDB 中对如何在应用程序中进行数据建模没有任何要求,我们可以使用任何形式进行建模,RavenDB 只关心如何构建数据,这就是我们后续几篇文章要讲解的内容。...public Parent Mother { get; set; } public Registration Registration { get; set; } } 我们在建模时应遵循 RavenDB...那么我们该如何解决这个问题呢?说我们有三种方法: 在 Child 文档中添加一个数组,数组中存储祖父母辈的文档 ID; 在祖父母辈的文档中添加一个数组,数组中存储孙子辈的文档ID; 两者相互存储。...在这种情况下,仅为订单标头创建文档大概率是有意义的,但是如果使用投影也是可以的(这些内容将在后面的文章讲解),这样就省去了拆分数据的需要,在 RavenDB 中构建一对一关系的典型方法是利用文档 ID...另一种情况是,如果需要对文档进行并发活动,由于文档是 RavenDB 中的并发单位,因此需要对文档进行建模,以便它们具有更改的单一原因。

49310

RavenDB 文档建模--琐碎的注意事项--处理无限增长的文档

RavenDB 对文档的大小限制是有硬性规定的,不超过2GB,不要觉得着2GB不够用,RavenDB会对 JSON 文档进行压缩处理,因此如果你存储的数据大小在 2GB的话,经过 RavenDB 压缩后所占的空间会非常非常的小...因此我们完全不需要担心 RavenDB 无法支持我们的业务数据需求,即使无法支持,你可别忘了 RavenDB 是一个完全兼容分布式,多集群部署的NoSQL数据库。...虽然说 RavenDB 对存储大型文档来说有着天生的优势,但是我们也要考虑一下成本问题,首先我们通过网络读取文档时可能出现传输速度很慢的情况(文档很大),即使我们读取到了文档,因为 RavenDB 的文档都是经过压缩的...这些都是我们需要考虑的问题。 以下是开发人员在实际开发中总价的方法:只要以千字节为单位衡量文档大小是有意义的,就可以了。...包含大小不受限制的集合: 这种原因经常出现在文档必须包含大量数据字段的情况,一般我们会采用将文档按照业务拆分为多个小文档来解决这个问题,在使用时将这些小文档再合并成一个大文档。

44110

RavenDB起步--客户端API(三)

我们修改或者删除文档后,同样也需要调用SaveChanges 方法来更新 RavenDB,而且利用 Query 查询出来的文档在会话中也只有一个实例,不管你查询了多少次。...这里要注意 RavenDB 不允许在查询期间进行计算(例如:SUM、AVG 这类的计算),并且它不存在表扫描或慢查询的问题。...Name = "Oscar Arava" }; session.Store(person); 同样,与 Delete 方法一样,只有在调用 SaveChanges 方法后,数据才会真正的保存在 RavenDB...中,并且对于新增来说,RavenDB 会为新实体提供一个 ID。...那么就可以调用 Store 方法来将实体和会话绑定在一起,并且它的 ID 不是空的,RavenDB 认为它以存在于库中,因此将会以更新的形式存入库中。

86260

RavenDB起步--文档标识符

下面我们来看一下 RavenDB 生成文档 ID 的策略。 TIP:RavenDB 的文档 ID 是数据库全局唯一的,这和关系型数据库的主键是所在表唯一不一样。...这里存在一个问题,当又多个客户端从不同的节点同时向服务端发送保留文档 ID 的请求时,很有可能出现这几个客户端获得打文档 ID 范文是一样的,那么为了解决这个问题各个节点之间会相互通信,如果发现有节点的文档...生成结果如下图: 这个策略存在一个问题,如果我们尝试使用 ID 保存文档并且保存失败,值仍然会递增。因此,即使 Identity 生成连续数字,如果事务已回滚,它仍可能会跳过标识符。...RavenDB 通过将文档 ID 存储在 B+Tree 中来跟踪它们。如果文档 ID 非常大,则意味着 RavenDB 可以在给定空间中存储更少的文档 ID。...它非常适合大型批处理作业,并且在其中包含许多额外的优化; 语义生成的 ID 是未排序的,RavenDB 可以轻松处理大量带有语义标识符的文档,对于性能来说也没什么大问题; Identity 生成文档 ID

31820
领券