一、常见的关系型数据库和非关系型数据库
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不正常
参考:
来源:CSDN
作者:lili安
链接:https://blog.csdn.net/likeyou1314918273/article/details/104118912