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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

    不知不觉,“.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 是需要授权文件的,因为生产环境需要完善的功能,授权文件可以用邮件获取:support@hibernatingrhinos.com,商业授权是有服务支持的,当然是需要收费的。 如果是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,一目了然了。我们添加命名空间:

1
2
3
using  Raven.Client;
using  Raven.Client.Document;
using  Raven.Client.Indexes;

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

1
2
3
4
5
6
public  class  Employee
{
     public  Int32 Id {  get set ; }
     public  String Name {  get set ; }
     public  DateTime Birth {  get set ; }
}

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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


本文转自叶小钗 h数据之巅博客园博客,原文链接:http://www.cnblogs.com/asxinyu/p/dotnet_Opensource_project_RavenDB_Intro.html,如需转载请自行联系原作者

相关文章
|
11天前
|
存储 设计模式 编解码
.NET 8.0 通用管理平台,支持模块化、WinForms 和 WPF
【11月更文挑战第5天】本文分析了.NET 8.0 通用管理平台在模块化、WinForms 和 WPF 方面的优势。模块化设计提升了系统的可维护性和可扩展性,提高了代码复用性;WinForms 提供了丰富的控件库和简单易用的开发模式,技术成熟稳定;WPF 支持强大的数据绑定和 MVVM 模式,具备丰富的图形和动画功能,以及灵活的布局系统。
|
5月前
|
运维 Oracle 关系型数据库
screw生成数据库文档
screw生成数据库文档
65 12
|
6天前
|
API C#
在.NET中使用QuestPDF高效地生成PDF文档
在.NET中使用QuestPDF高效地生成PDF文档
|
3月前
|
开发者 API Windows
从怀旧到革新:看WinForms如何在保持向后兼容性的前提下,借助.NET新平台的力量实现自我进化与应用现代化,让经典桌面应用焕发第二春——我们的WinForms应用转型之路深度剖析
【8月更文挑战第31天】在Windows桌面应用开发中,Windows Forms(WinForms)依然是许多开发者的首选。尽管.NET Framework已演进至.NET 5 及更高版本,WinForms 仍作为核心组件保留,支持现有代码库的同时引入新特性。开发者可将项目迁移至.NET Core,享受性能提升和跨平台能力。迁移时需注意API变更,确保应用平稳过渡。通过自定义样式或第三方控件库,还可增强视觉效果。结合.NET新功能,WinForms 应用不仅能延续既有投资,还能焕发新生。 示例代码展示了如何在.NET Core中创建包含按钮和标签的基本窗口,实现简单的用户交互。
67 0
|
4月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的《数据库原理及应用》课程平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的《数据库原理及应用》课程平台的详细设计和实现(源码+lw+部署文档+讲解等)
|
3月前
|
SQL Oracle 关系型数据库
.NET 开源快捷的数据库文档查询和生成工具
【8月更文挑战第1天】推荐几款.NET开源数据库文档工具:1. DBDocumentor,支持多类型数据库,快速生成详尽文档;2. SqlDoc,界面简洁,自定义内容与格式;3. DBInfo,强大查询功能,支持多种导出格式。这些工具有效提升文档管理效率与质量。
|
5月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的数据库课程在线教学的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的数据库课程在线教学的详细设计和实现(源码+lw+部署文档+讲解等)
56 2
|
5月前
|
存储 JSON NoSQL
【文档数据库】ES和MongoDB的对比
【文档数据库】ES和MongoDB的对比
377 1
|
4月前
|
SQL JavaScript 安全
基于.NET开源跨平台的文档管理系统
基于.NET开源跨平台的文档管理系统
128 0
|
XML .NET C#
推荐几个Net开源项目
SharpDevelop 强大的插件系统,通过Addin构建成一个功能齐全的.net开发IDE。核心是AddInTree。跟随这个项目开发许多有用的组件,比如功能文本编辑器(ICSharpCode.TextEditor),SharpZipLib等。
1055 0