产品战略专家梁宁确认出席AICon北京站,分享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

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

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

关注

评论

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

智慧城市解决方案提供商万达信息加入龙蜥社区

OpenAnolis小助手

开源 智慧城市 万达集团

详细解读PolarDB HTAP的功能特性和关键技术

阿里云数据库开源

数据库 阿里云 开源 postgre polarDB

Web安全渗透测试基本流程

学神来啦

网络安全 Web 渗透测试 WEB安全 kali

技术平台&应用开发专题月 | 企业上云利器-YMS(Yon Middleware Service)

用友BIP

用友 用友iuap

OpenHarmony移植:XTS子系统之应用兼容性测试套件

华为云开发者联盟

OpenHarmony 移植 XTS子系统 acts 测试套件

阿里云移动研发平台EMAS:2月产品动态

移动研发平台EMAS

阿里云 程序员 emas 移动端 研发工具

拥抱云原生 2.0 时代,Tapdata 入选阿里云首期云原生加速器!

tapdata

数据库 实时数据服务平台

坐标PCB公司,想做实时数仓、推生产线看板,和Tapdata Cloud的偶遇来得就是这么凑巧

tapdata

实时数据

这是我见过最详细的Nginx 内存池分析

Linux服务器开发

nginx 线程池 Linux服务器开发 Linux后台开发 内存池

推荐算法!基于隐语义模型的协同过滤推荐之商品相似度矩阵

编程江湖

大数据 算法

java培训:使用 Disruptor 做springboot内部消息队列

@零度

JAVA开发 springboot

WMS是什么?

源字节1号

开源 后端开发

技术平台&应用开发专题月 | 如何保证业务服务稳定运行—用友云原生技术平台高可用能力介绍

用友BIP

用友 用友iuap

TypeScript 2.0开启空值的严格检查

华为云开发者联盟

typescript js 空指针 ts

Figma禁封中国企业,下一个会是Postman吗?国产软件势在必行

Liam

后端 Postman Apifox API swagger

java编程技术FastDFS 安装和配置

编程江湖

深入跨国互联网业务场景,看华为云数智融合元数据如何打破“数据墙”

华为云开发者联盟

大数据 数据仓库 华为云 元数据 数智融合

iuap助力三花控股集团打造主数据管理平台

用友BIP

用友 用友iuap

云平台是什么?知名云平台有哪些?

行云管家

云计算 阿里云 云服务 云平台

it运维工程师的工作是做什么的?累吗?

行云管家

运维 服务器 IT IT运维

元宇宙,帮助土耳其奶牛产了更多奶?

CECBC

中小型企业CRM系统有哪些好处

低代码小观

销售管理 企业管理 CRM系统 客户关系管理系统 企业管理软件

Java有了synchronized,为什么还要提供Lock

华为云开发者联盟

Java synchronized 死锁 lock 同步代码块

做开发这么久了,还不会搭建服务器Maven私有仓库?这也太Low了吧

冰河

系统架构 程序开发 程序员进阶 编程基础 Maven仓库

新一代对抗作战框架MITRE Engage V1版本正式发布

青藤云安全

网络安全 青藤 青藤云安全

技术平台&应用开发专题月 | 业务上云后的调试利器—云机一体

用友BIP

用友 用友iuap

面向编排的运维在阿里的应用 |阿里巴巴DevOps实践指南

阿里云云效

云计算 阿里云 运维 云原生 部署与维护

由Figma封停大疆,看国产IDE如何应对与突围?

Baihai IDP

人工智能 ide AI 基础软件 国产化

区块链能否助力版权“突围”?

CECBC

墨天轮国产数据库沙龙 | 四维纵横姚延栋 :MatrixDB,All-in-One高性能时序数据库

墨天轮

数据库 时序数据库 国产数据库 MatrixDB

为什么MySQL主键查询这么快?

蝉沐风

MySQL 索引 主键查询

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