.NET上的文档数据库-Raven

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 
where post.AcceptedAnswerId != null
select new { post.Title };

在这个索引被创建之后,用户只用查询它就可以获得想找的文档了。

Raven提供HTTP API和客户端API (C#)。HTTP API具备和客户端API一致的功能,让那些只能使用JavaScript和HTML的程序也可以访问。包含如下一些命令:

GET

PUT

POST

DELETE

PATCH

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创建的咨询公司。

时间: 2024-10-29 06:09:44

.NET上的文档数据库-Raven的相关文章

你想找的Python资料这里全都有!没有你找不到!史上最全资料合集

GitHub 上有一个 Awesome - XXX 系列的资源整理,资源非常丰富,涉及面非常广.awesome-python 是 vinta 发起维护的 Python 资源列表,内容包括:Web框架.网络爬虫.网络内容提取.模板引擎.数据库.数据可视化.图片处理.文本处理.自然语言处理.机器学习.日志.代码分析等.在给大家分享之前呢,小编推荐一下一个挺不错的交流宝地,里面都是一群热爱并在学习Python的小伙伴们,大几千了吧,各种各样的人群都有,特别喜欢看到这种大家一起交流解决难题的氛围,群资料

用ASP开发基于浏览器的文档数据库管理软件

浏览器|数据|数据库|浏览器 文档数据库是internet/intranet应用的重要组成部分.用手工维护站点的文档和链接,管理员要有一点web方面的技术背景才能胜任,随着站点规模的扩大,需要维护的文档越来越多,难免有力不从心的感觉.使用文档数据库则有明显不同的效果,管理员用它可以轻松应付成千上万篇文档的维护和管理,用户发布.查询.浏览文档也更加方便快捷. 笔者使用微软的ASP技术(Active Server Page,一种可取代CGI的服务器端动态web网页),开发了基于浏览器的文档数据库管理

使用Eclipse RAVEN方法测试GUI可访问性

使用 IBM 基于规则的可访问性验证环境自动验证基于 Java 的 GUI 可访问性 简介:IBM Rule-based Accessibility Validation Environment (RAVEN) 是一种 Eclipse 插 件,它提供了对 GUI 组件的运行时检查,从而确保能够持续使用 Java 可访问性特性.本文对 RAVEN 工具进行了一番审视,并举例说明了如何使用它验证 Java Swing 应用程序. 为软件系统 创建图形用户界面,这在可用性和设计两方面对适应性技术提出了

NoSQL数据库技术特性解析之文档数据库

文档数据库-nosql数据库技术实战"> 现今云计算的从业人员对NoSQL一词并不感到陌生,虽然很多技术人员都长期从事关系数据库的工作,但现在他们对NoSQL技术充满期待.对于企业来说,从关系型数据库到NoSQL数据库转变绝对是个需要深思熟虑的大改变.这涉及的不仅是软件的变化,更多的是对于数据存储上观念性的变化. CouchDB专家兼作者Bradley Holt认为NoSQL并不是反SQL的运动,为对应的工作选择最恰当的工具才是正确的模式. 大多数非关系数据库都具有快速和可伸缩的特性.通过

史上最全的“大数据”学习资源(上)

当前,整个互联网正在从IT时代向DT时代演进,大数据技术也正在助力企业和公众敲开DT世界大门.当今"大数据"一词的重点其实已经不仅在于数据规模的定义,它更代表着信息技术发展进入了一个新的时代,代表着爆炸性的数据信息给传统的计算技术和信息技术带来的技术挑战和困难,代表着大数据处理所需的新的技术和方法,也代表着大数据分析和应用所带来的新发明.新服务和新的发展机遇. 五月直播季迅猛来袭!5月13日20点,直播<虎嗅网架构演讲>,点击报名:https://yq.aliyun.com

史上最全“大数据”学习资源整理

史上最全"大数据"学习资源整理 2016-05-17 Hadoop技术博文 当前,整个互联网正在从IT时代向DT时代演进,大数据技术也正在助力企业和公众敲开DT世界大门.当今"大数据"一词的重点其实已经不仅在于数据规模的定义,它更代表着信息技术发展进入了一个新的时代,代表着爆炸性的数据信息给传统的计算技术和信息技术带来的技术挑战和困难,代表着大数据处理所需的新的技术和方法,也代表着大数据分析和应用所带来的新发明.新服务和新的发展机遇.     资源列表:   关系数

从渡鸦科技发布 Raven H-1,看虚拟助手为何纷纷开始做硬件

近日,渡鸦科技在北京 751 东区故事 D Live 生活馆举行了 2016 新品发布会. 在这次新品发布会中,以往总是语出惊人的吕骋在这次整个过程中几乎没讲产品之外的内容,没有渲染背后的故事,也没讲情怀.更像是一个老道.经历过起伏的创业者.吕骋以家庭客厅为场景,向观众展示了硬件新品 Raven H-1 的娱乐影音.家居自动化等功能. Raven H-1 是什么? Raven H-1 包括 H-Base(主机)和 H-Port(影音).H-View(屏幕).H-Sound(音箱模块)三个独立模块

你患上开发者渐冻症了吗?

软件开发技术的百花齐放,一夜春笋让全球的开发者们长期生活在恐惧中,不少程序员因此患上了开发者渐冻症. 近日TC的专栏作家Jon Evan是撰文指出,即使对于一位精通八种开发语言的资深开发者来说,一个突然走红的JavaScript也足以让他四肢冰凉,颤栗不止. 大多数开发者都患上了这种开发渐冻症,而且无药可救. 今天开发者面对的选择多到令人发指,惨无人道的地步.过去几年中,通过在SQL/键值/文档数据库(例如MySQL.PostgreSQL. MongoDB.BigTable.Redis.Memc

基于SaaS的面向文档数据库隐私保护研究

基于SaaS的面向文档数据库隐私保护研究 山东大学  姜真 本文首先提出了面向文档数据库隐私保护架构,该架构在原有SaaS架构的基础上,通过在应用层和存储层之间增加隐私保护层,形成一种新的SaaS服务部署架构.这种架构将隐私保护系统和SaaS应用系统解耦.在此架构中,隐私保护系统对于SaaS应用和数据库系统均是透明的.然后,本文介绍了基于面相文档数据库的隐私保护的基本方法,为了适应面向文档数据库基于文档存储的数据结构体系,本文设计了基于value切分和key混淆的面向文档数据库隐私保护基本方法.