写点什么

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

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

关注

评论

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

铁路运输行业怎么定义?为什么要用到堡垒机?

行云管家

等保 堡垒机 铁路行业 运输

比赛放榜!开源!Workshop!阿里妈妈将在国际顶会NeurIPS打出一键三连

新消费日报

考核信息化管理平台(源码+文档+部署+讲解)

深圳亥时科技

智源Aquila-VL-2B模型成为首个Linux基金会MOF评级达到“最开源”Class I等级的模型

智源研究院

DaisyDisk for Mac:可视化磁盘清理,释放空间超轻松

Rose

Cinema 4D 2023激活补丁(C4D 2023中文版)-Mac/win

Rose

曲靖具有资质等保测评机构在哪里?电话多少?

行云管家

等保 堡垒机 等保评测 曲靖

Agisoft Metashape Professional 高精度3D模型 + 多格式支持,协同工作无忧

Rose

Word 2024 LTSC for Mac(word 2024)永久破解版

Rose

面向金融场景的大模型 RAG 检索增强解决方案

阿里云大数据AI技术

人工智能 最佳实践 rag PAI

音视频编解码SDK开发的流程

北京木奇移动技术有限公司

音视频开发 音视频技术 软件开发定制

HarmonyOS开发宝典震撼来袭,卓越应用开发之旅一触即发,轻松启程!

HarmonyOS开发者

Understand for Mac(优秀的源代码审查工具)

Rose

DispCam DisneyPlus Video Downloader for Mac(迪士尼视频下载工具)v1.1.1 激活版

Rose

Renamer 7 for mac 中文激活版 最好的批处理文件重命名工具

Rose

Python爬虫实战:调用微店商品详情接口(Micro.item_get)

代码忍者

API 接口 pinduoduo API

得物商家客服从Electron迁移到Tauri的技术实践

得物技术

typescript rust Vue 前端 前端 electron

PHP爬虫的使用与开发

科普小能手

php 爬虫 爬虫教程 PHP开发

以数据驱动增长,火山引擎数智平台“数据找人”为双12营销提效

字节跳动数据平台

电商 数据飞轮 双十二

工单+远程技术支持一个方案就搞定!贝锐向日葵技术支持方案升级

科技热闻

SmoothScroll for mac v1.6.0永久激活版 鼠标增强工具

Rose

TunesKit Subtitle Editor Mac版 功能强大的字幕编辑工具

Rose

京东商品详情数据接口(JD.item_get)丨京东API接口代码指南

tbapi

京东API接口 京东商品详情接口 京东商品数据采集

LED电子屏厂家解密:LED控制系统的硬件设计

Dylan

系统 电子 LED display LED显示屏 市场

CST软件如何得到方向性系数随频率扫描的曲线

思茂信息

教程 仿真 cst

安全研究年终总结-分享2024年RCE类的CVE漏洞高危EXP集合!

安全乐谷

网络安全 数据安全 安全漏洞 漏洞分析 安全扫描

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