写点什么

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:112870
用户头像

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

关注

评论

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

架构实战营第一期--模块七作业

clay

架构实战营

模块七-游戏商城异地多活架构设计

babos

#架构实战营

模块7作业

柱林

架构实战营模块七作业

子豪sirius

架构实战营

模块七 作业

Geek_35a345

linux之tree命令

入门小站

Linux

学读代码比学写代码更重要

baiyutang

编程 工程规约 9月日更

又一款Nginx 管理可视化神器!通过界面完成配置监控,一条龙

Summer

Java nginx 学习 程序员 IT

Python——While 循环for循环与 break 语句

在即

9月日更

聊聊 Jmeter 如何并发执行 Python 脚本

星安果

Python Jmeter 并发 文件上传

数字化转型潮起 金融机构“科技范儿”十足

CECBC

深入了解Spring之ConfigurationClassPostProcessor

邱学喆

@Bean @ComponentScan @PropertySource @Import @ImportResource

模块七作业

河马先生

架构实战营

css中塌陷问题指的是什么,margin和padding应该怎么区分

你好bk

CSS html css3 大前端

计算机中遇到的单位该怎么换算

耳东@Erdong

计算机 9月日更 单位换算

架构训练营模块七作业

喻高咏        

架构训练营 模块七

王者荣耀商城异地多活架构设计

feitian

[架构实战营]模块七作业

xyu

#架构实战营

模块七作业

Mr.He

架构实战营

模块七作业

袁小芬

架构实战营模块 7 作业-王者荣耀商城异地多活架构设计

蔸蔸

都江堰市建成区块链场景创新实验室!

CECBC

模块七作业

VE

架构实战营

14. DeepMind--会打游戏的人工智能

Databri_AI

人工智能

专利分析:数字人民币的“双离线”支付问题

CECBC

🏆【Alibaba工具型技术系列】「EasyExcel技术专题」摒除OOM!让你的Excel操作变得更加优雅和安全

码界西柚

EasyExcel Apache POI Alibaba 9月日更

架构实战营模块 7 作业

zlz

架构训练营 模块六

小卷儿

HTML字符实体大全

入门小站

工具

QUIC简介及简单示例

devpoint

QUIC http3 9月日更

架构实战营 模块七 作业

脉醉

#架构实战营

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