立即领取|华润集团、宁德核电、东风岚图等 20+ 标杆企业数字化人才培养实践案例 了解详情
写点什么

Raven——一个.NET 上的文档数据库

  • 2010-05-20
  • 本文字数:1665 字

    阅读完需:约 5 分钟

Raven 是一种用于.NET/Windows 的基于 LINQ 的弱格式(shcema-less)文档数据存储服务。Raven 不是另外一种 NoSQL,也非关系型解决方案,而是希望解决大型 Web 应用的性能和扩展性要求。

Raven 能把所有类型的数据都保存为 JSON 文档,而不会把特定的格式强加于这些内容之上。这意味着,数据能以任意格式保存,尤其适合如下场景

  • 和 Web 相关的数据,比如用户 Session、购物车等等——Raven 基于文档的特性意味着你可以在一个单独的远程调用中,获取和保存所有需要处理的数据。
  • 动态实体,比如用户自定义实体,带有大量可选字段的实体等等——Raven 自由格式的特性意味着你不需要疲于实现关系模型。
  • 持久视图模型——不用在每次请求的时候都从零开始重新创建视图模型,你可以直接把它的最终形式保存在 Raven 中。这就减少了计算时间、减少了远程调用的次数,提高了总体性能。
  • 大数据集——众所周之,Raven 的底层存储机制可以支持超过 1T 的容量(在单台机器上),并且非关系型的特性让其很容易在多台机器上共享数据库,这样做对于 Raven 而言是极其自然的。

如下的代码片段是存储在 Raven 中的一个示例文档:

复制代码
{
"PostTypeId":1,
"Id":2321816,
"Title":"Storing commercial files on the server",
"AcceptedAnswerId":2321854,
"LastActivityDate":"\/Date(1266953391687+0200)\/",
"AnswerCount":3,
"Comments":[
{
"Score":null,
"CreationDate":"\/Date(1266952919510+0200)\/",
"Text":"are they \"sensitive\" information?",
"UserId":"users/203907"
},
{
"Score":null,
"CreationDate":"\/Date(1266953092057+0200)\/",
"Text":"I wouldn't say they are sensitive information...",
"UserId":"users/200145"
}
]
}

每个文档都有一个键或文档 ID 与其关联,上面例子中的键是“2321816”。除了文档,Raven 还能存储元数据或附加到文档中的文本 / 二进制附件。为了从数据存储中搜索和获取文档,Raven 使用索引来完成:

索引是在一系列文档之上进行操作的 LINQ 查询,并为每个文档生成投影,可使查询更有效率。索引是一种 Raven 可在后台执行的重要 LINQ 查询,其结果保存在持久存储中。这些查询能在日后被高效地查询。

下面是一个以 Title 作为索引来组织帖子的例子:

复制代码
from post in docs.Posts
<p>where post.AcceptedAnswerId != null</p><p>select new { post.Title };</p>

在这个索引被创建之后,用户只用查询它就可以获得想找的文档了。

Raven 提供 HTTP API 客户端 API (C#)。HTTP API 具备和客户端 API 一致的功能,让那些只能使用 JavaScript 和 HTML 的程序也可以访问。包含如下一些命令:

HTTP API 也支持在一个调用中获取多个文档批请求的功能。

Raven 基于 3 种许可协议发布:

  • Raven DB Community – a free edition that can be used only for open source projects with no support
  • Raven DB Commercial – a paid-for edition for commercial software with support for a limited number of incidents/year
  • Raven DB Enterprise – similar to Commercial but has extra features like sharding, unlimited master/slave replicas, failover, replication to RDBMS, and better support.
  • Raven DB Community——免费版本,只能用于开源项目,无技术支持
  • Raven DB Commercial——付费的商业软件,提供有事件和年度限制的技术支持
  • Raven DB Enterprise——类似商业版,不过具备一些额外的特性,如分片、无限的主 / 从复制、故障转移、复制到 RDBMS,并提供更好的技术支持。

两种商业版都具有月度订阅或长期许可的选择。Raven 由 Hibernating Rhinos 开发,一个 Ayende Rahien 创建的咨询公司。

其他资源: Raven DB 网站源代码仓库,由Ayende Rahien 编写的 Raven DB 介绍讨论组

查看英文原文: Raven, a Document Database for .NET

2010-05-20 22:112322
用户头像

发布了 254 篇内容, 共 56.9 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

小度全屋智能携大模型应用惊艳亮相中国建博会,智慧体验演绎未来家居新标准

新消费日报

centos7系统安装xrdp教程。

百度搜索:蓝易云

云计算 Linux centos 运维 xrdp

CentOS7安装MySQL8

百度搜索:蓝易云

MySQL Linux centos 运维 Web

给 ES 插上向量检索的翅膀 | DataFunSummit 2023 峰会演讲内容速达

极限实验室

ES 分布式存储 向量数据库 极限科技 2023数据基础架构峰会

百度iOS端长连接组件建设及应用实践

百度Geek说

网络编程 移动端 即时通讯IM 长连接 企业号 7 月 PK 榜

新兴技术的影响与展望:生成式AI及更多思考|社区征文

小诚信驿站

年中技术盘点

机器学习洞察 | 挖掘多模态数据机器学习的价值

亚马逊云科技 (Amazon Web Services)

机器学习

PyTorch: nn网络层-卷积层

timerring

PyTorch

CentOS7系统GitLab安装部署教程。

百度搜索:蓝易云

git Linux gitlab 运维 云服务器

阿里云容蓓:DCDN 助力云原生时代的应用构建及最佳实践

阿里云视频云

云计算 阿里云

AIGC 对程序员的影响 | 社区征文

sidiot

AI AIGC 年中技术盘点

云服务器vCPU与物理CPU关系?

百度搜索:蓝易云

运维 cpu 云服务器 vCPU

Centos7系统路由追踪安装使用教程。

百度搜索:蓝易云

云计算 Linux centos 运维 云服务器

C++中map的使用方法

梦笔生花

你信不信,只要学几天javascript就可以使用纯原生实现五星评分效果 【附完整代码】

Geek_yx5md7

JavaScript 前端开发 函数 前端基础 DOM操作

代码随想录 Day15 - 二叉树(二)

jjn0703

倒计时 2 天|请收好 Kyligence 用户大会参会指南

Kyligence

数据分析 指标平台

从0到100:定制公交预约小程序开发笔记

CC同学

从0-100:约拍小程序开发笔记

CC同学

华为云CodeArts Check代码检查插件3大版本使用指南

华为云PaaS服务小智

华为云 代码检查 华为开发者

2023-07-12:RocketMQ如何做到消息不丢失?

福大大架构师每日一题

福大大架构师每日一题

Linux(CentOS7)安装最新版Python

百度搜索:蓝易云

Python 云计算 Linux centos7 运维

代码随想录 Day14 - 二叉树(一)

jjn0703

聊聊微服务 架构思想

EquatorCoco

架构 微服务

go 实现ringbuffer以及ringbuffer使用场景介绍

蓝胖子的编程梦

TCP 网络 epoll ringbuffer 环形缓冲区

阿里云Redis与Tair压力测评

WizInfo

Centos7系统拒绝国外IP海外IP访问的几种方法

百度搜索:蓝易云

云计算 Linux centos 运维 服务器

从0到1:垃圾上门回收预约小程序开发笔记

CC同学

低代码为运营需求发力 | 社区征文

--linshuai

前端 低代码 年中技术盘点

OCR技术的昨天今天和明天!2023年最全OCR技术指南!

合合技术团队

人工智能 合合信息 OCR技术

没收入是表象,UMU CEO李东朔的出海经验:第一年破100国家

B Impact

Raven——一个.NET上的文档数据库_.NET_Abel Avram_InfoQ精选文章