.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 是需要授权文件的,因为生产环境需要完善的功能,授权文件可以用邮件获取: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,如需转载请自行联系原作者

相关文章
|
6月前
|
NoSQL 关系型数据库 MySQL
Linux平台下安装部署MongoDB数据库及基本使用(1)
Linux平台下安装部署MongoDB数据库及基本使用(1)
246 0
|
7月前
|
前端开发 Java 关系型数据库
基于Java+SpringBoot+vue的社区报修维修平台(含源码和数据库)
基于Java+SpringBoot+vue的社区报修维修平台(含源码和数据库)
|
23天前
|
数据采集 存储 监控
.NET智慧手术室管理平台源码
术前访视记录单、手术风险评估表、手术安全核查表、自费药品或耗材、麻醉知情同意书、麻醉记录单、分娩镇痛记录单、麻醉复苏单、术后镇痛记录单、术后访视记录单、压伤风险评估量表、手术清点记录单、护理记录单、输血护理记录单。
26 0
|
30天前
深入.net平台的分层开发
深入.net平台的分层开发
47 0
|
1月前
|
JavaScript Java 关系型数据库
基于vue的MOBA类游戏攻略分享平台23(程序+数据库+论文)可帮忙远程调试
基于vue的MOBA类游戏攻略分享平台23(程序+数据库+论文)可帮忙远程调试
|
1月前
|
存储 数据采集 Apache
众安保险 CDP 平台:借助阿里云数据库 SelectDB 版内核 Apache Doris 打破数据孤岛,人群圈选提速4倍
随着业务在金融、保险和商城领域的不断扩展,众安保险建设 CDP 平台以提供自动化营销数据支持。早期 CDP 平台依赖于 Spark + Impala + Hbase + Nebula 复杂的技术组合,这不仅导致数据分析形成数据孤岛,还带来高昂的管理及维护成本。为解决该问题,众安保险引入 Apache Doris,替换了早期复杂的技术组合,不仅降低了系统的复杂性,打破了数据孤岛,更提升了数据处理的效率。
众安保险 CDP 平台:借助阿里云数据库 SelectDB 版内核 Apache Doris 打破数据孤岛,人群圈选提速4倍
|
4月前
|
SQL 存储 安全
CloudQuery一体化数据库SQL操作安全管控平台
CloudQuery一体化数据库SQL操作安全管控平台
184 0
|
4月前
|
Web App开发 开发框架 .NET
asp.net基于WEB层面的云LIS系统平台源码
结合当今各检验科管理及实验室规模的不同状况,充分吸收当今IT科技的最新成就,开发出以高度产品化、功能强大、极易实施操作、并不断升级换代为主要特点的LIS系统。彻底解决检验科的信息孤岛,全面实现全院信息互通互联、高度共享,并为检验科的规范化管理提供了有力工具。
41 0
|
4月前
|
存储 SQL 数据挖掘
某工商信息商业查询平台基于阿里云数据库 SelectDB 版内核 Apache Doris 的湖仓一体建设实践
从传统 Lambda 架构到基于 Doris Multi-Catalog 的湖仓一体架构实践,保证了数据的准确性和实时性、高效处理和分析了大规模数据,推动信息服务行业发展创新!
某工商信息商业查询平台基于阿里云数据库 SelectDB 版内核 Apache Doris 的湖仓一体建设实践