NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

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

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

关注

评论

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

2024深圳电子展,中国国际电子信息博览会(CITE电博会)

AIOTE智博会

电子展

StarRocks & Friends 上海站活动回顾(含 PPT 下载链接)

StarRocks

数据库 OLAP MPP 大数据 开源

强化学习从基础到进阶-案例与实践[6]:演员-评论员算法(advantage actor-critic,A2C),异步A2C、与生成对抗网络的联系等详解

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动 A3C算法

面向对象设计的逆向建模方法和开源工具

高鹏

Java 开源 架构 DDD 架构设计

如何通过场景规划帮助企业实现全面预算管理?

智达方通

智达方通 全面预算管理 财务规划和分析 财务规划与预测 全面预算管理系统

接口测试|Fiddler会话栏中添加IP列

霍格沃兹测试开发学社

强化学习从基础到进阶-常见问题和面试必知必答[6]:演员-评论员算法(advantage actor-critic,A2C),异步A2C、与生成对抗网络的联系等详解

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动

探索支付宝云开发,开启一段100ms的神奇旅程!

TRaaS

支付宝小程序 云开发

机遇与挑战——超级自动化产品的国产化替代已成为大势所趋

九科Ninetech

接口测试|Fiddler界面工具栏介绍(三)

霍格沃兹测试开发学社

一文梳理清楚 Python OpenCV 的知识体系

这我可不懂

Python OpenCV

教学实训模块升级,助力应用型数据科学人才培养|ModelWhale 版本更新

ModelWhale

数据分析 大模型 教学实训 在线编程 云课堂

完全自动驾驶车辆何时才能成为现实

来自四九城儿

视觉系统对自动驾驶至关重要|数据堂

来自四九城儿

数智时代:新基建与低代码的绝妙碰撞!

快乐非自愿限量之名

低代码 新基建 数智转型 数智时代

何时使用Kafka而不是RabbitMQ

越长大越悲伤

Kafk Rabbit MQ 消息列队

Scrum看板工具在项目管理中的作用

顿顿顿

敏捷工具 scrum工具 scrum敏捷工具

零基础自学:2023年的今天,请谨慎进入网络安全行业

网络安全学海

黑客 网络安全 信息安全 计算机 渗透测试

复旦大学智能计算平台与世界科学智能大赛启动仪式

新云力量

智能 计算 复旦大学

SQL 优化(一):慎用 SQL 函数

hungxy

Java MySQL 后端

接口测试|Fiddler设置手机抓包

霍格沃兹测试开发学社

唯一入选中国厂商!灵雀云获Gartner® 首份《DevOps平台魔力象限报告》“荣誉提及”

York

容器 DevOps 云原生 Gartner 平台工程

解决QT QGraphicsView提升到QChartView报错的问题

智趣匠

小程序容器技术在移动警务中的业务价值

FinFish

小程序容器 移动警务 警务app

Vue插槽详解

高端章鱼哥

Vue 插槽

接口测试|Fiddler弱网测试

霍格沃兹测试开发学社

【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系)

洛神灬殇

领域驱动设计 DDD 领域驱动设计思想 领域驱动模型

es笔记一之es安装与介绍

Hunter熊

elasticsearch Kibana 安装Kibana

最佳实践|亚马逊可持续发展的架构模型

亚马逊云科技 (Amazon Web Services)

JavaScript

接口测试|Fiddler抓包设置及证书配置

霍格沃兹测试开发学社

Selenium 中并行测试的重要性

FunTester

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