文档数据库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 { getset; }
    public String Name { getset; }
    public DateTime Birth { getset; }
}

注意,我们这里为了便于查询,加了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


如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。

.NET数据挖掘与机器学习,作者博客:http://www.cnblogs.com/asxinyu

文档数据库RavenDB-介绍与初体验的更多相关文章

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

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  2. (一)SpringBoot基础篇- 介绍及HelloWorld初体验

    1.SpringBoot介绍: 根据官方SpringBoot文档描述,BUILD ANYTHING WITH SPRING BOOT (用SPRING BOOT构建任何东西,很牛X呀!),下面是官方文 ...

  3. (一)SpringBoot2.0基础篇- 介绍及HelloWorld初体验

    1.SpringBoot介绍: 根据官方SpringBoot文档描述,BUILD ANYTHING WITH SPRING BOOT (用SPRING BOOT构建任何东西,很牛X呀!),下面是官方文 ...

  4. ThinkPHP -- 开发初体验及其几个配置文件的介绍

    ThinkPHP是一款不错的轻量级的PHP+MVC框架,它吸取了Ruby On Rails的特性,不仅将Model.View.Controller分开,而且实现了ORM.模板标签等高级特性.    开 ...

  5. Handlebars的基本用法 Handlebars.js使用介绍 http://handlebarsjs.com/ Handlebars.js 模板引擎 javascript/jquery模板引擎——Handlebars初体验 handlebars.js 入门(1) 作为一名前端的你,必须掌握的模板引擎:Handlebars 前端数据模板handlebars与jquery整

    Handlebars的基本用法 使用Handlebars,你可以轻松创建语义化模板,Mustache模板和Handlebars是兼容的,所以你可以将Mustache导入Handlebars以使用 Ha ...

  6. 范仁义web前端介绍课程---4、html、css、js初体验

    范仁义web前端介绍课程---4.html.css.js初体验 一.总结 一句话总结: html:就是网站的骨架,比如div标签.a标签等 css:style标签或者style属性里面的就是css j ...

  7. K8S Kubernetes 简单介绍 转自 http://time-track.cn/kubernetes-trial.html Kubernetes初体验

    这段时间学习了一下 git jenkins docker  最近也在看  Kubernetes  感觉写得很赞  也是对自己对于K8S 有了进一步得理解  感谢 倪 大神得Blog 也希望看到这篇Bl ...

  8. Python 3.8.0 正式版发布,新特性初体验 全面介绍

    Python 3.8.0 正式版发布,新特性初体验 北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性. 赋值表达式 PE ...

  9. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

随机推荐

  1. 网页制作之html基础学习2-标签

    一.html结构组成 <html> --开始标签 <head> 网页上的控制信息 <title>页面标题</title> </head> & ...

  2. 字符串处理-AC自动机

    估计在OJ上刷过题的都会对AC自动机这个名词很感兴趣,同样,记得去年ACM暑期集训的时候,在最后讲到字符串部分,听说了这个算法的名字之后就对于它心向往之,AC正好是Accept的简称,字面意义上的理解 ...

  3. zookeeper 之znode 节点

    <pre name="code" class="html">使用 ls 命令来查看当前 ZooKeeper 中所包含的内容: [zk: 10.77. ...

  4. dsdfdsfd

    aibang.com/show/1816725179-1268699976/product/7069113.html aibang.com/show/1816725179-1268699976/pro ...

  5. 关于UIText换行

    话不多说,直接上代码 --代码是lua的,c++也一样 local text = ccui.Text:create("text can line wrap text can line wra ...

  6. 终于懂了:FWinControls子控件的显示是由Windows来管理,而不是由Delphi来管理(显示透明会导致计算无效区域的方式有所不同——透明的话应减少剪裁区域,所以要进行仔细计算)

    在研究TCustomControl的显示过程中,怎么样都找不到刷新FWinControls并重新显示的代码: procedure TWinControl.PaintHandler(var Messag ...

  7. 列举一些常见的Python HTTP服务器

    要使 Python 写的程序能在 Web 上被访问,还需要搭建一个支持 Python 的 HTTP 服务器.下面列举一些常见的 Python HTTP 服务器,以及它们目前的大致发展情况,以便用户的对 ...

  8. HDU 1599 find the mincost route (无向图floyd最小环详解)

    转载请注明出处:http://blog.csdn.net/a1dark 分析:终于弄懂了floyd的原理.以前的理解一直肤浅.所以一做到floyd应用的题.就拙计了.其实floyd的本质DP.利用前K ...

  9. 在windows下如何配置RTT开发环境?

    之前一直使用MDK查看和编译RTT的源码,这几天无聊想起RTT官方提供使用scons工具编译RTT,因此想试试这种方法,做下此笔记,以供入门者参考. 注 1 下载安装Python2.7 论坛中很多人说 ...

  10. UVA 10574 - Counting Rectangles(枚举+计数)

    10574 - Counting Rectangles 题目链接 题意:给定一些点,求可以成几个边平行于坐标轴的矩形 思路:先把点按x排序,再按y排序.然后用O(n^2)的方法找出每条垂直x轴的边,保 ...