.NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了。虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来。今天就给大家介绍.NET平台下的文档型数据库RavenDB,虽然我以前也在小项目用过其他文档型数据库,但问题很多,小项目还可以,大项目就歇菜了。这个数据库我关注了很久,最近一直在看它的文档,所以把知道的先总结下来。

.NET开源目录:【目录】本博客其他.NET开源项目文章目录

本文原文地址:http://www.cnblogs.com/asxinyu/p/dotnet_Opensource_project_RavenDB_Intro.html

注意:RavenDB虽然商业化,但对社区是免费的,收费的是提供的其他服务。免费版本功能没有限制,只是用户认证有限制。

1.RavenDB概述与特性

1.1 RavenDB基本介绍

在这里就不介绍所谓的关系型数据库和NOSQL数据库的区别和优缺点了,需要了解的可以自行搜索。

RavenDB是针对Windows/.NET平台而设计的开源文档数据库。RavenDB的出现将.NET应用与非关系数据库连接到一起。数据以Shcema-less方式存储,并直接通过HTTP、RESTful API或更方便的.NET客户端API连接,.NET客户端API使用LINQ操作RavenDB数据库文档存储,所以你懂的,很舒服。RavenDB有.NET和JAVA版本,目前都在3.0。虽然RavenDB是开源的,但官方也提供了一些付费服务,可以参考官网,不过在国内这个还是算了,墙比较高,累。 下面我们进入正题,看看它的主要特性吧。

RavenDB官网:http://ravendb.net

GitHub主页  :https://github.com/ravendb/ravendb

1.2 RavenDB主要特点

1.2.1 客户端API支持.NET和JAVA

  主要说.NET API吧,在语言层面最主要的是LINQ支持,这一点估计是现在.NET NOSQL数据库的标配了。其他就是扩展性和灵活的配置方便,API都提供了。值得注意的是,不管是.NET API还是JAVA API都是建立在它的REST API基础上的。

1.2.2 伸缩、可扩展、插件化

  RavenDB具有非常高的可伸缩性。支持Multi-tenancy (多用户数据隔离),以及不同的同步类型,还可以根据需要支持分区分片等等。可以对RavenDB进行扩展,目前已有的插件如:触发器,编码器/解码器,任务调度,编译扩展,分析器,加密,压缩等等。Multi-tenancy翻译有点别扭,这里解释一下:Multi-tenancy 使每个客户组织都工作在一个为其定制好的虚拟软件或者解决方案实例中,并认为自己在独享环境。Multi-tenancy 与多软件实例体系结构不同,多软件实例结构拥有多个软件实例并且每个实例服务于一个客户组织,而 Multi-tenancy 结构是由一个软件实例为所有的客户组织提供服务。多软件实例结构物理上隔离客户组织的数据,而 Multi-tenancy 环境中的软件或者解决方案逻辑上隔离客户组织的数据和配置。

1.2.3 性能与安全

自动调优,智能索引,快速读取优化,不会被锁,多级缓存支持。 ACID事务支持,自动批处理,没有锁,客户端和服务器端连接保护。

授权(文档级,用户/用户组),身份验证(使用Windows身份验证或OAuth API来进行认证),数据加密(可以加密内容数据和索引数据),兼容FIPS(联邦信息处理标准)。

1.2.4 其他

全文搜索(基于Lucene,可以使用Lucene的内置特性,支持自定义分词器/分析器,与标准查询无缝集成),RavenFS分布式虚拟文件系统(同步,搜索,版本控制,加密等)

2.RavenDB安装

说了这么多,那总得干点实际的对吧,无码无真相,那么就一起来看看如何搭建环境,以及搞个Demo玩玩呢。注意第一次玩下载安装包好一点。图形化界面安装,比较容易懂,我第一次搞的时候没有用安装方式。

2.1 下载Windows安装包

http://ravendb.net/downloads页面下载最新的稳定的.NET工具包,目前为止.NET平台最稳定的版本为3.0.30115:

有时候下载比较慢,我使用百度云共享了一份,有需要的下载:链接:http://pan.baidu.com/s/1eSyNyqm密码:o2k6

2.2 安装步骤

这种Windows安装就很简单了,不过多说,这里只说明几个重点问题:

1.安装之前安装.NET Framework 4.0这是必不可少的哦;

2.RavenDB可以在不同的模式下运行,如Windows服务,IIS应用程序;

3.安装的时候如果是Production/Test 是需要授权文件的,因为生产环境需要完善的功能,授权文件可以用邮件获取:[email protected],商业授权是有服务支持的,当然是需要收费的。 如果是Development模式,则是对所有用户开放的,没有任何功能限制。我安装的时候选择的是Development。

4.如果开发机没有安装IIS,只会安装Windows 服务哦。我是Win10机器,由于基本不搞Web开发,所以IIS没有安装。

5.配置好,数据库相关文件路径,安装好后可以在系统服务里面看到RavenDB服务已经在运行了。

官方安装指南地址:http://ravendb.net/docs/article-page/3.0/csharp/server/installation/using-installer

2.3 RavenDB Studio初体验

安装好后,先别慌打开VS哦。先好好看文章。上面的2.2中,我们选择的端口为8080,那么在开发环境中,打开浏览器输入这个:http://localhost:8080

进入RavenDB的Studio数据库管理界面哦。BS形式的,还不错,由于刚开始没有数据库,当你打开的时候,会提示你新建数据库。如下图:

设置好后,如果选择了加密,还会跳出加密选择对话框,如下图:

添加好后,就进入到了Studio的界面,看看总的,功能还很多呢,值得好好研究一下,今天先打住把,希望更多的人研究并分享。

  

3.C#开发初体验

  环境搞好了,那可以打开VS干一票了。由于我们下载的安装包里面没有.NET驱动,不过NuGet把一切都准备好了。新建项目啥就不说了,打开NuGet,搜索RevenDB.Client,如下图:

  安装上之后。引用命名空间,话说这里很多新人不知道添加一个DLL后默认的命名空间是啥,这里就多说一句吧。右键添加的DLL,选择“ 在对象浏览器中查看”,然后会打开你选择的DLL的相关结构,展开你要选择的DLL,一目了然了。我们添加命名空间:

using Raven.Client;
using Raven.Client.Document;
using Raven.Client.Indexes;

还是老套路,我们可以不需要先去设计数据库哦,好听点的名字好像是叫Code-first,先把实体弄起来吧。

public class Employee
{
	public Int32 Id { get; set; }
	public String Name { get; set; }
	public DateTime Birth { get; set; }
}

注意,我们这里为了便于查询,加了Id字段,实际上,每个Document都是有一个默认的ID的,即使你不加也会给你分配值。看看简单的新增修改代码:

static void Test1()
{
	//创建默认的文档对象,指定数据库连接和数据库名称,如果没有会自动新建
	using (IDocumentStore store = new DocumentStore{
					Url = "http://localhost:8080/",
					DefaultDatabase = "Northwind"}
		  )
	{
		//初始化实例
		store.Initialize();
		//使用IDocumentSession对象对数据库进行操作,先打开会话
		using (IDocumentSession session = store.OpenSession()) 
		{
			//新建一个实体对象
			Employee employee = new Employee
			{
			   Name = "Jok",Birth = DateTime.Now.AddYears(-10)
			};
			//直接将该对象保存,会保存到Employees的集合中去
			session.Store(employee);
			//如果不设置ID,会话将分配给对象一个Id,每个对象都默认有Id,即使实体类没有该Id字段
			Int32 employeeId = employee.Id; 
			//保存所有变化到服务器
			session.SaveChanges();
			//根据ID查询
			Employee loadedEmployee = session.Load<Employee>(employeeId);
		}
	}
}

我们看看数据库管理界面,系统会默认新建Northwind数据库。

其他操作我们暂且就放过吧,有兴趣大家自己尝试一下,官方的文档非常全面,系统大家看懂后能写文章出来,这样让其他人少走弯路。

4.RavenDB资源

RavenDB官网:http://ravendb.net

GitHub主页:https://github.com/ravendb/ravendb

RavenDB官网文档:http://ravendb.net/docs/article-page/3.0/csharp/start/getting-started

RavenDB书籍之打包:链接:http://pan.baidu.com/s/1slQRp5F 密码:g3ep

本文RavenDB的代码:链接:http://pan.baidu.com/s/1skZy5e1 密码:2e6k

RavenDB 最新版下载:链接:http://pan.baidu.com/s/1eSyNyqm密码:o2k6

时间: 2024-08-07 08:30:37

.NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验的相关文章

.NET平台开源项目速览-最快的对象映射组件Tiny Mapper之项目实践

心情小札:近期换了工作,苦逼于22:00后下班,房间一篇狼藉~ 小翠鄙视到:"你就适合生活在垃圾堆中!!!" 晚上浏览博客园 看到一篇非常实用的博客:.NET平台开源项目速览(14)最快的对象映射组件Tiny Mapper,花了10分钟简单了解了一下. 看评论也是挺有价值,同时也看到许多新手同学问道在实际项目中使用的情况. 下面就原作者的代码的基础上略作调整,阐述一下在实际项目场景中的使用: 第一步:了解类库方法:TinyMapper 主要有两个函数: TinyMapper.Bind&

.NET平台开源项目速览(17)FluentConsole让你的控制台酷起来

从该系列的第一篇文章 .NET平台开源项目速览(1)SharpConfig配置文件读写组件 开始,不知不觉已经到第17篇了.每一次我们都是介绍一个小巧甚至微不足道的.NET平台的开源软件,或者学习,或者使用,或者介绍,或者分析原理等等,其实这个过程也让我了解了很多东西.也希望这个分享系列继续给大家带来收获,根据大家的评论和反应,其实说明这些小的组件都还不错,可以提高开发效率. 今天继续给大家介绍一款简单到爆的开源组件,但是可以让你的控制台瞬间高大上. 1.控制台能有啥滑头? 借用新生命论坛的一张

.NET平台开源项目速览(13)机器学习组件Accord.NET框架功能介绍

Accord.NET Framework是在AForge.NET项目的基础上封装和进一步开发而来.因为AForge.NET更注重与一些底层和广度,而Accord.NET Framework更注重与机器学习算法以及提供计算机视频.音频.信号处理以及统计应用相关的解决方案.该项目使用C#语言编写,项目主页:http://accord-framework.net/ 说明:该文章只是一个基本介绍,主要内容是翻译的官方文档和介绍,部分英文表述个人能力有限,不太熟悉,所以直接照搬原文,有比较确切的知道中文名

.NET平台开源项目速览(12)哈希算法集合类库HashLib

.NET的System.Security.Cryptography命名空间本身是提供加密服务,散列函数,对称与非对称加密算法等功能.实际上,大部分情况下已经满足了需求,而且.NET实现的都是目前国际上比较权威的,标准化的算法,所以还是安全可靠的.但也有一些场合,需要自己实现一些安全散列算法.不仅仅是学习,也可以进行测试以及相关研究.而今天要介绍的正式这样一个包括了目前几乎所有散列函数算法实现的.NET开源组件,大家可以实际使用,查看或者修改等.满足更多不同人,不同层次的需求.那就看看相关基础知识

.NET平台开源项目速览(4).NET文档生成工具ADB及使用

转载自  http://www.cnblogs.com/asxinyu/p/dotnet_Opensource_project_ADB_CSharpDocument.html 阅读目录 1.ADB介绍 2.ADB生成.NET文档过程 3.资源与代码 很久以前就使用ADB这个工具来生成项目的帮助文档.功能强大,在学习一些开源项目的过程中,官方没有提供CHM帮助文档,所以为了快速的了解项目结构和注释.就生成文档来自己看,非常好用.这也是一个学习方法吧.例如本文在: .NET平台开源项目速览(2)Co

.NET平台开源项目速览(16)C#写PDF文件类库PDF File Writer介绍

1年前,我在文章:这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)中(第9个项目),给大家推荐了一个开源免费的PDF读写组件 PDFSharp,PDFSharp我2年前就看过,用过简单的例子,不过代码没有写成专门的文章.最近在查找资料的时候,又发现一款小巧的写PDF文件的C#组件:PDF File Writer.该开源组件是在codeproject,还没有托管到其他地方,所以花了点时间了解了一下,分享给大家. .NET开源目录:[目录]本博客其他.NET开源项目文章目录

.NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator

去年,我在一篇文章用原始方法解析复杂字符串,json一定要用JsonMapper么?中介绍了简单的JSON解析的问题,那种方法在当时的环境是非常方便的,因为不需要生成实体类,结构很容易解析.但随着业务的变化,也会碰到超级变态的JSON,如果还按照以前的思路,会把人搞抽风掉,一旦结构变化,又要重来.所以今天给大家介绍一个简单的方法,轻轻松松搞定超级变态的JSON,虽然需要生成实体类.它就是开源的:JSON C# Class Generator组件. .NET开源目录:[目录]本博客其他.NET开源

.NET平台开源项目速览(19)Power BI神器DAX Studio

PowerBI更新频繁,已经有点更不上的节奏,一直在关注和学习中,基本的一些操作大概是没问题,更重要的是注重Power Query,M函数,以及DAX的使用,这才是核心.   上个月研究了DAX的一些语法和公式,发现这玩意看起来简单,但其实功能非常强大,所以就想和写代码一样,弄个工具试一下. 当然直接在Power BI Desktop中也可以完成,但总归感觉怪怪的,直到我发现了DAX Studio. 本来想直接下载来用一下,结果发现不是很容易玩,所以从头到尾把文档看了一遍,顺便总结下来. 如果不

第七周 项目一-图形用户界面(GUI)应用程序开发初体验

第一次 用vc++感觉很蒙 第一次在4408在舍友指导下做的 感觉不太好 今天来机房又做了一次 顺手了些 vc++开始的样子 简单操作后的样子 我添加的代码 我们想要的样子 学习心得: 我在许多同学身上看到了贺老师的影子,这是种很特殊的力量在引领者我们前进,我们需要她.