“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

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

公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2010-05-20 22:112225
用户头像

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

关注

评论

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

🍃【Spring原理系列】让你知道真正的“AOP”

洛神灬殇

spring aop 面向切面 spring aop 5月日更

SimpleDateFormat线程不安全的5种解决方案!

王磊

Java 后端 5月日更

「打碎质疑」,阿里云未来何止600亿?

ToB行业头条

云计算 阿里云 盈利模式

架构实战训练营 - 模块4 - 作业

Presley

构建可靠的磁盘系统:故障判定和自动化处理

焱融科技

云原生 运维自动化 高性能 分布式存储 超融合

Golang 别名类型

escray

学习 极客时间 Go 语言 5月日更

你习惯写注释吗?

ES_her0

5月日更

模块4作业-Redis方案

高亮

架构训练营

变电站运维推陈出新?无人值守却更胜一筹

一只数据鲸鱼

数据可视化 3D可视化 智慧电网 变电站

MySQL 数据库学习笔记(2)

lenka

5月日更

五行合一,微服务运行态建设的“内功心法”

BoCloud博云

微服务

CampusBulider(模模搭)学习笔记6:室内搭建

ThingJS数字孪生引擎

3D可视化 数字孪生

Docker 存储调整的几种方法

运维研习社

Docker 5月日更 存储管理

三大业界大佬的DevOps解决方案

码语者

DevOps

《Spring 手撸专栏》| 开篇介绍,我要带新人撸 Spring 啦!

小傅哥

spring 后端 小傅哥 面经 手撸Spring

K8s二开之 client-go 初探

雪雷

Kubernetes Go 语言

密码学系列之:IDEA

程序那些事

IDEA 密码学 程序那些事

图像灰度与灰阶的纠结:gray level/scale译文释义

老猿Python

灰度 图形图像处理 数字图像处理 灰阶 gray scale

Python 正则表达式

若尘

正则表达式 正则 Python编程 5月日更

下周极客时间课程学习计划

IT蜗壳-Tango

5月日更

IOS端音频的采集与播放

floer rivor

音视频

系统思考力建立3个简单操纵方法

风翱

系统性思考 5月日更

LeetCode题解:341. 扁平化嵌套列表迭代器,DFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

比物理线程都好用的C++20的协程,你会用吗?

华为云开发者联盟

事件驱动 嵌入式 事件 主循环 C++20

【LeetCode】二叉树的堂兄弟节点Java题解

Albert

算法 LeetCode 5月日更

网络攻防学习笔记 Day16

穿过生命散发芬芳

5月日更 网络攻防

垄断

小天同学

商业 市场垄断 5月日更

模块四:课后作业

黄先生

架构训练营

模块四作业

c

架构实战营

缓存数据一致性 - 架构师峰会演讲实录

万俊峰Kevin

缓存 微服务 cache 分布式缓存 Go 语言

我的Serverless实战—玩转腾讯云Wordpress

liuzhen007

Serverless 5月日更

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