首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏喵叔's 专栏

    RavenDB起步--使用 RavenDB Studio

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

    1.1K20编辑于 2022-01-21
  • 来自专栏喵叔's 专栏

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

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

    95420编辑于 2022-03-22
  • 来自专栏喵叔's 专栏

    RavenDB 文档建模--RavenDB 高级建模方案

    "海南", "HUN":"湖南", "SH":"上海" } 上面这种对 Reference data 建模的方式有如下几个有点: 数据易于处理,可以一次性将所有内容加载出来,减少 RavenDB 的处理次数; 融入了 RavenDB 缓存数据的方式; 降低了反序列化的成本; 降低了使用和编辑数据的成本。 TIP:Reference data 会使一个单一的文档,因此我们可以使用 RavenDB 做更多的任务,这些将在后续内容中讲解。 在 RavenDB 中对时态数据进行建模的方法是 ​完全接受其文档性质​ ,因为在大多数时态域中,文档和视图随时间变化的概念非常重要。

    66640编辑于 2022-03-22
  • 来自专栏喵叔's 专栏

    RavenDB 文档建模 -- 开篇

    RavenDB 这种非关系型文档数据库中并不能完全解决这个问题,但是对于大多数业务系统来说 RavenDB 存储数据的模型还是比较合适的。 在 RavenDB 中每个文档都是一个聚合,它是面向文档的建模技术,为解决类似于订单和地址这种问题提供了很好的解决方案。 Q:什么是聚合? 在这个专题中,我们将学习如何拜托关系型思维模式以及如何为 RavenDB 建模。

    35720编辑于 2022-03-12
  • 来自专栏喵叔's 专栏

    RavenDB数据建模--总结

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

    64430编辑于 2022-05-25
  • 来自专栏喵叔's 专栏

    RavenDB起步--第一个 RavenDB 程序

    本篇文章将带领大家实现一个小的 RavenDB 案例程序,要求是这样的:实现一个 ToDoList 程序,可以对它进行新增、修改。下面我们开始吧! 新建项目 我们将这个项目新建为控制台应用程序。 项目新建成功后,我们需要在项目中安装 RavenDB 的包。在 NuGet b包管理其中查找 RavenDB.Client 包并安装它。 设置完之后,我们在 RavenDB Studio 中创建 Tasks 数据库,具体怎么创建我就不多说了,有不会的小伙伴请去查看上一篇文章。 新增 既然要操作 RavenDB 肯定就少不了实体类,虽然说 RavenDB 使用的是完全动态的数据库,但是在实际开发中大多数情况都需要使用实体类。 然后将任务存储在会话中并调用 SaveChanges 方法将会话中的所有更改保存到 RavenDB 中。

    57310编辑于 2022-01-24
  • 来自专栏张善友的专栏

    RavenDB系列教程

    RavenDB是一个在.NET下的文档型数据库,它具有高扩展性,支持MapReduce,提供RESTful的接口。同时它又支持ACID的事务。下面是一个RavenDB的系列教程,从入门到精通。 lifecycle tracking documents structure entities, repositories, and commands user registration Using RavenDB with ASP.NET MVC NoSQL with RavenDB and ASP.NET MVC- Part 1 NoSQL with RavenDB and ASP.NET MVC - Part 2 Building an ASP.NET MVC app using RavenDB as a Backing Store 将 RavenDB 嵌入 ASP.NET MVC 3 应用程序中 RavenDB Elmah.RavenDB: RavenDB provider for ELMAH Using RavenDB and ASP.NET MVC 4 to create a Twitter Clone Chirpy

    1.4K70发布于 2018-01-30
  • 来自专栏喵叔's 专栏

    RavenDB起步--Document Metadata

    Metadata 默认存储什么 Metadata 的存储格式和文档本身一样也是 Json,RavenDB 使用 Metadata 存储有关跟踪文档的几个重要信息: 集合名称,存储在 @collection Raven-Clr-Type .NET客户端 Raven-Java-Class Java 客户端 Raven-Python-Class Python客户端 自定义 Metadata 属性命名规范 除了使用 RavenDB session.Advanced.GetMetadataFor(order); metadata["Last-Modified-By-User"] = "张三"; session.SaveChanges(); } 我们在 RavenDB TIP:当我们在 RavenDB 文档中看到以 @ 开头的 Metadata 属性时,就说明这个属性是 RavenDB 保留给自己用的,因此我们在扩展 Metadata 属性时不能使用与之一样的属性名,

    67610编辑于 2022-02-13
  • 来自专栏喵叔's 专栏

    RavenDB建模--常见建模方案

    RavenDB 中对如何在应用程序中进行数据建模没有任何要求,我们可以使用任何形式进行建模,RavenDB 只关心如何构建数据,这就是我们后续几篇文章要讲解的内容。 public Parent Mother { get; set; } public Registration Registration { get; set; } } 我们在建模时应遵循 RavenDB where c.Grandparents.Contain(grandparent.Id) select c ).ToList(); } Tip:在 RavenDB 在这种情况下,仅为订单标头创建文档大概率是有意义的,但是如果使用投影也是可以的(这些内容将在后面的文章讲解),这样就省去了拆分数据的需要,在 RavenDB 中构建一对一关系的典型方法是利用文档 ID 另一种情况是,如果需要对文档进行并发活动,由于文档是 RavenDB 中的并发单位,因此需要对文档进行建模,以便它们具有更改的单一原因。

    80010编辑于 2022-03-22
  • 来自专栏岑玉海

    RavenDb学习(十)附件,存储大对象

    1、读取 Raven.Abstractions.Data.Attachment attachment = documentStore.DatabaseCommands.GetAttachment("videos/1"); 2、存储、更新 Stream data = new MemoryStream(new byte[] { 1, 2, 3 }); // don't forget to load the data from a file or something! documentStore.Databas

    84780发布于 2018-03-01
  • 来自专栏岑玉海

    RavenDb学习(六)查询补充特性

    1、延迟加载 原来的查询方式如下: IEnumerable<User> users = session .Query<User>() .Where(x => x.Name == "john"); 延迟加载方式: Lazy<IEnumerable<User>> lazyUsers = session .Query<User>() .Where(x => x.Name == "John") .Lazily(); IEnumerable<User> users = la

    79760发布于 2018-03-01
  • 来自专栏岑玉海

    RavenDb学习(五)结果转换

    1)Result Transformers public class Order { public DateTime OrderedAt { get; set; } public Status Status { get; set; } public string CustomerId { get; set; } public IList<OrderLine> Lines { get; set; } } //单独使用 public class OrderStat

    73990发布于 2018-03-01
  • 来自专栏岑玉海

    RavenDb学习(三)静态索引

    在静态索引这块,RavenDb其实的是lucene,所以里面有很多概念,其实都是lucene本身的。 +0300)\/", "Document": "bob" } ] } 6.查询 在查询当中用 string.Contains()方式是会报错的,因为RavenDb

    1K70发布于 2018-03-01
  • 来自专栏岑玉海

    RavenDb学习(二)简单的增删查改

    在上一节当中已经介绍了RavenDb的文档设计模式,这一节我们要具体讲一讲如何使用api去访问RavenDb 1.连接RavenDb var documentStore = new DocumentStore connect to a remote RavenDB instance at ravendb.mydomain.com, to the default database Url = http://ravendb.mydomain.com ;Database=Northwind connect to a remote RavenDB instance at ravendb.mydomain.com, to the Northwind database there Url = http://ravendb.mydomain.com;User=user;Password=secret connect to a remote RavenDB instance at ravendb.mydomain.com, with the specified credentials DataDir = ~\App_Data\RavenDB;Enlist=False use

    1.4K50发布于 2018-03-01
  • 来自专栏岑玉海

    RavenDb学习(四)处理文档相关性

    RavenDb是文档型数据库,但是我们常常也需要定义对象之间的关系,那RavenDb当中是如何处理的呢? RavenDb提供了优雅的解决方式,使用正确的话,可以减少数据开销以及网络拥堵 Denormalization 第一种就是反规范化,下面是一个订单的JSON格式 在Order这个订单当中我们把我们需要的客户信息 set; } public string Name { get; set; } public string Address { get; set; } } Includes 1)RavenDb

    84250发布于 2018-03-01
  • 来自专栏喵叔's 专栏

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

    文档会话 会话是代码和 RavenDB 交互的主要方式。 如果在 RavenDB 中没有找到指定的文档,那么字典中文档的 ID 值为 null。 Include() 在项目中我们大部分情况是在处理具有关联关系的文档,那么在 RavenDB 中我们该怎么处理呢?那么,着这一小节里我们来看看如何处理多文档。 在 RavenDB 中其实是没有咱们常说的外键关系的,对另一个文档的引用只是一个字符串的属性。那么我们该如何查询出文档及其关联的文档呢? 这时,当我们调用 Load 方法来获取 Person 文档时,因为会话缓存中已经存在了这个文档,因此不会再去查询 RavenDB ,而是直接返回数据。

    1.4K30编辑于 2022-01-27
  • 来自专栏喵叔's 专栏

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

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

    1.1K60编辑于 2022-01-29
  • 来自专栏喵叔's 专栏

    RavenDB起步--安装以及示例数据库

    本篇是 RavenDB 起步阶段的首篇文章,我将会在这篇文章里讲解如何安装 RavenDB 以及如何创建实例数据库。下面就让我们开始吧! 1.1 在 Docker 中安装 RavenDB最简单的安装方式就是在 Docker 中安装,使用如下命令 Docker 将获取最 RavenDB 的最新版本,并启动新容器来托管它。 docker run -p 8080:8080 -e RAVEN_ARGS=$rvn_args ravendb/ravendb TIP:如果你所使用的操作系统是 Windows,那么你需要开启开发者模式 2.1 创建数据库 通过 http://127.0.0.1:8080 访问 RavenDB Studio。 在 RavenDB 里,我们可以将任意复杂的数据存储为一个单元。这就表明我们不需要拆分对象,整个对象就可以存储在单个文档中,这就是 RavenDB 中的基本建模方法基于根的聚合。

    79020编辑于 2022-01-20
  • 来自专栏喵叔's 专栏

    RavenDB起步--文档标识符

    在关系型数据库中表一般情况下都会存在主键,这个主键在所在表中是唯一的不可重复的,同样在 RavenDB 中也存在这样的主键,它被成为文档标识符或文档ID。 下面我们来看一下 RavenDB 生成文档 ID 的策略。 TIP:RavenDB 的文档 ID 是数据库全局唯一的,这和关系型数据库的主键是所在表唯一不一样。 比如我们要在 RavenDB Studio中创建一个订单数据,这时我们在 ID 中输入 order/ 然后单击 Save , RavenDB 就会为我们自动生成一个类似于下图的文档 ID。 我们在 RavenDB Studio 的 ID 中输入:order| 即可使用 Identity 生成 ID。 RavenDB 通过将文档 ID 存储在 B+Tree 中来跟踪它们。如果文档 ID 非常大,则意味着 RavenDB 可以在给定空间中存储更少的文档 ID。

    51520编辑于 2022-02-12
  • 来自专栏岑玉海

    RavenDb学习(一)设计模式介绍

    RavenDb是一个文档型的数据库,和芒果Db是一个类型的东西,但是公司选择了它,主要是因为它对事务的支持比较好,芒果Db在事务方面有问题。 下面有一个例子。

    1.5K70发布于 2018-03-01
领券