图数据库学习

和自甴很熟 提交于 2020-02-01 16:34:33

一、常见的关系型数据库和非关系型数据库

1.1 关系型数据库

  

关系型数据库最典型的数据机构是表,由二维表及其之间的联系所组成的一个数据组织

优点:

1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。

1.2 非关系型数据库

优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。

缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠。

二、非关系型数据库NoSql 

三、知识图谱数据库

 

3.1 简介Neo4j与Cayley 

图数据库分为两大类:本地的和非本地的。

Neo4j属于前者,即本地的。所以它不支持分片,所有的数据只能存在一台机器的硬盘里。

dgraph属于后者,即非本地的。它的底层设计就支持分片,并且有自己的存储引擎(存储引擎:就是数据库进行磁盘数据的存取方式)。

cayley没有自己的存储引擎。它可以配置多种存储引擎,如:leveldb,mysql,mongodb等。如果存储引擎选择的是mongo那么它也支持分片。 

1.根据neo4j的人说法:图数据库分片是个NP完全的问题。目前没有非常好的切图策略。neo4j说与其写一个幼稚的分片功能,不如把速度搞好。它是速度优先的。商业公司在推这个项目,有商业公司在用,它资格最老,文档很好,使用体验好,比如可以拉docker。有社区版和商业版之分。功能上社区版和商业版没有差别。商业版多了一些其他的支持而已。JAVA语言写的,社区活跃。除了不支持分片,neo4j功能上应该能满足你的一切需求。有图形化界面。

2.cayley很年轻,GO语言写的。目前连个像样的文档都没有。玩起来很痛苦,甚至根本玩不转。谷歌了半天才找到那么一两篇文章。我在虚拟机里试的,不知道是机器卡还是cayley的问题,总之不稳定,卡。那么点数据查询的时候都慢的要死。就当是cayley的问题吧,目前可以不用考虑它了。github上好像是有61个contributor吧。有图形化界面(很简单)。

3.dgraph很年轻,GO语言写的。有正式的文档,商业公司在推。目前没有其他商业公司使用。官方说建议公司内部使用。使用体验应该不错,可以拉docker。dgraph公司承诺以后继续开源。官方有dgraph和neo4j性能对比图。对比图看起来完虐neo4j。它使用n-quad方式导数据的,cayley也是。这种方式老实说我不是很理解,感觉需要一些学习成本。你知道n-quad吗?

dgraph的全文索引目前不支持中文。从进度上来看估计dgraph会比cayley成长的快。我个人也比较看好dgraph,底层设计上就支持分片,有自己的存储引擎,相比于neo4j有后发优势。github上好像有一百多个贡献者吧。也许跟cayley的记混了。都挺活跃的。好像也有图形化界面。dgraph的设计理念是尽量保持简单。所以像主键唯一性这种东西你得自己想办法。它之所以导入快,就是因为你已经把图数据构造好了,唯一性也自己解决好了,只需要把n-quad提交给数据库就行了。你可以弄几十甚至上百个线程提交n-quad。提交后它数据库只需要分片后往磁盘里写就行了。你说这样它能不快吗?你可能会说什么东西都是我弄好了,那我要你何用?仔细想一下你用图数据库的初衷是什么?是不是为了查询复杂关系的时候速度快?最好是能用gremlin或者类似于SQL这样的查询语言快速地把关系查不来?这不就结了嘛,dgraph能满足你的需求啊。构造结点和边本来就是你分内事嘛,如果你还想要快,那就提前把唯一性弄好,到时候直接写数据就完了。

试了一下dgraph,直接下载安装后看不到页面。目前最新的是0.7.7版本。拉一个docker就好了,页面跟neo4j很像,挺漂亮的。dgraph不支持属性,所有的属性都用边来表示。感觉很不错,学习中。

四、MongoDb介绍

MongoDB  是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。Mongo 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部署、易使用,存储数据非常方便。

MongoDB是开源,高性能的NoSQL数据库;支持索引、集群、复制和故障转移、各种语言的驱动程序丰富;高伸缩性;
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的。

4.1 主要特点

  • MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。
  • 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。
  • 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
  • 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
  • Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
  • MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
  • Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
  • Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
  • Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
  • GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
  • MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
  • MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
  • MongoDB安装简单。

4.2 MongoDb安装

五、Neo4j数据库安装使用

5.1 jdk安装

1、下载jdk-13.0.2

安装路径 D:\Program Files\Java\jdk-13.0.2\

2、解决jdk13没有jre问题

进入jdk目录D:\Program Files\Java\jdk-13.0.2>后输入bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre

回车;

在jdk13的目录下找到jre剪贴出来即可。

3、配置jdk的环境变量

4、java -version

      javac

测试jdk与jre。

5.2 下载Neo4j

1、Neo4j国内版本

http://neo4j.com.cn/topic/5b003eae9662eee704f31cee

2、解压文件夹到目录

D:\Program Files\Neo4j\neo4j-community-3.5.14-windows-chs-3.0.0

3、环境变量配置

系统变量: NEO4J_HOME    D:\Program Files\Neo4j\neo4j-community-3.5.14-windows-chs-3.0.0

                   Path                     %NEO4J_HOME%\bin

4、开启neo4j console

(1)cmd中输入 neo4j.bat console

如上图所示已经开启了NEO4J数据库。

(2)在浏览器中访问http://localhost:7474/查看数据库

初始密码:neo4j

未曾显示该页面;我的页面如下。

(3)neo4j没有登录用户名和密码设置,需要使用插件实现,步骤如下

      ①配置文件

         配置文件conf/neo4j-server.properties中添加:

                        org.neo4j.server.credentials=username:password
                        org.neo4j.server.thirdparty_jaxrs_classes=org.neo4j.server.extension.auth=/auth

                        

        其中username、password即为登录用户名和密码

      ②添加jar包

      ③重启neo4j

https://www.cnblogs.com/visoncheng/p/4306355.html

 

不只是不是以上方法有用,加载很久以后反而出来页面。抑或是浏览器问题。

先命令打开数据库,在命令start neo4j

刷新依然未连接

问题:

(3)注册NEO4J服务

输入命令:neo4j install-service

本地服务查看:

     重新输入命令neo4j.bat console查看数据库;

     services.msc打开服务

(4)开启NEO4J服务

输入命令: neo4j start

停止、重启、查询Neo4j服务

neo4j status不正常

参考:

常见的关系型数据库和非关系型数据及其区别

MongoDb学习笔记(一)---MongoDb数据库介绍、安装、使用

neo4j vs dgraph vs cayley各有什么优劣

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!