NOSQL——Neo4j
1, 介绍&配置
近几年互联网大数据的不断发展导致了各种DBMS的发展,除了传统的RDBMS(关系型DBMS),NOSQL发展也较迅速,最著名的是文本型数据库Mongodb,今天介绍的是一种基于图的NOSQL——Neo4j。适合一些图型数据(如下图)的存储,比如社交关系网络等。
从官网上可以获得更详细的介绍和下载,下载分三个版本——社区版(Community)、高级版(Advanced)和企业版(Enterprise),一般个人使用Community Edition就可以了,或者可以使用Advanced Edition,不过常用的功能都是一样的。建议选择1.9M02版本以后的,因为对数据查询进行了优化。执行效率更好点。
下载后解压缩到某目录下,配置系统的环境变量。类似Java,添加<Neo4j_Directory>/bin到系统路径中。
之后在命令行里安装服务,将Neo4j作为系统的一个服务部署。一般安装的同时也会启动数据库。如下所示:
运行成功后即可进行各项操作。如果失败,一般是系统权限问题,可以尝试用管理员权限运行。
2, 存储
Neo4j的存储主要分为两种,一种是内嵌在项目中的。还有一种是服务器端配置的。项目内嵌偏重小型个人项目,而服务端的则是可以构建稍大规模的项目甚至生产级的项目。
至于逻辑存储方式,neo4j采用文件存储,整个数据库是由多个文件组成,包括数据、索引等。值得一提的是Neo4j采用lucene作为索引引擎,在索引效率上还算不错。
不过需要补充的是,不大清楚Neo4j在分布式存储方面的可用性如何,这方面我还没怎么深入,如果可以部署到分布式存储环境的话,那更好了。
3, Cypher查询
类似于RDBMS的SQL语言,Neo4j也有独立的数据库查询语言——Cypher,其实看过黑客帝国的人应该熟悉,这里各个术语基本都和黑客帝国里的角色相关,或许这也是设计者的初衷。计算机网络其实就是一张巨大的拓扑图结构。
在配置Neo4j服务成功后,可以通过命令行打开Cypher查询界面,命令行中输入命令 Neo4jShell即可,如下所示:
具体到相关的语言特征,和传统的SQL类似,但是增加了不少图的元素。可以输入help查看相关信息,或者访问官方文档,有几个典型的查询:
1),查询。
一般以start命令开始,例