由对图数据的处理需求,看到了图数据库(GraphDataBase)这种比较新的数据库模式,并且通过比较发现用的相对多的要属Neo4j了,现在来看网上对Neo4j的介绍还比较少,内容主要来源于三个地方:官方网站http://www.neo4j.org/ ;中文社区http://www.neo4j.org.cn/ 和Neo4j
google网上论坛https://groups.google.com/forum/?fromgroups#!forum/neo4j。而中文社区的内容基本上是对官网内容的翻译,可以中英文对照着看,以加快理解。

       在各种官方资料中都说Neo4j的性能优良,可以支持几十亿个节点和上百亿的关系,于是怀着兴奋和期望开始了对它的研究。
      Neo4j有两种运行模式,即程序嵌入式模式和服务器模式。对于项目的长期使用来说显然是服务器模式更加适合。所以在对嵌入式模式进行了简单的了解之后就开始对其服务器模式进行研究。对于官网中已经介绍的内容本文就不再赘述了,而目前能搜索到的资料基本上也是这些内容的重复,本文中讲一些我使用过程中遇到的问题和经验。
      首先当然是去官网上下载安装包。我选择的是neo4j-enterprise-1.8.M07-windows版本,按照官网的教程逐步进行安装,启动。这个时候遇到了第一个问题,就是neo4j.bat install执行之后,服务可以安装上去,但是无论如何都无法启动。提示:失败 1053 服务没有及时响应启动或控制请求 在网上翻看了很多资料,基本上都是修改服务的超时时间,但是此时对这个问题无效。最后在google论坛上看到相似内容,可能是电脑安装的Java
jdk版本问题,于是把jdk 1.7 换回到jdk 1.6,再启动果然问题解决了。所以如果要使用Neo4j的服务器模式运行,最好还是首先确定自己电脑安装的是jdk 1.6 
    服务运行起来之后就是研究它的功能和用法了。我用的是Java,所以一切内容都是以Java为语言基础的。服务器模式提供了REST API,但是由于水平有限,要自己通过Java使用这些API实在是不容易。于是寻找针对REST API的封装工具。http://docs.neo4j.org.cn/server-java-rest-client-example.html这里介绍了如何在Java中使用REST
API,其中用到了Jersey,但是在网页上所给的例子中我发现了一个问题,在查询某个点的时候,他的参数用到了之前创建点的时候的临时变量URI firstNode,这就意味着如果所有点已经创建完毕,而我想通过某个点的属性查询到它的话就没有办法了。遗憾的是Java使用REST API这部分只有这一页的例子,其他地方也没有搜索到相关资料。这种方法只能先告一段落。
    还有另外一种方法是通过Java-REST-Bindinghttp://docs.neo4j.org.cn/rest-clients.html 它集成了REST API 可以通过Java远程连接Neo4j服务器GraphDatavaseService
gds=new RestGraphDatabase("http://10.108.xxx.xx:7474/db/data");同时还支持Neo4j-core-API,这样就可以像使用嵌入式模式那样的代码形式对数据库进行响应操作,而且嵌入式模式下的代码实例相对较多。这样就可以很方便的进行创建节点,添加属性和关系,查询,创建索引等操作。
    与MongoDB的可视化操作工具MongoVUE相似的是,针对Neo4j也有一个工具-neoclipse。cfeibiao的博客http://blog.csdn.net/cfeibiao/article/details/6842941有对它的基本介绍。
    如果你的数据库已经对应点的属性建立了索引,则可以通过某个点的属性值对其进行查询,比如“name”属性的“张三”。另外还支持cyper语言查询。
    另外一种检测工具就是web控制台,可以通过http://ip地址:7474/webadmin访问。
的一些使用心得" title="Neo4j 的一些使用心得" style="border:0px;list-style:none;">

的一些使用心得" title="Neo4j 的一些使用心得" style="border:0px;list-style:none;">

    最终,一个致命的问题就是速度问题。从现有的MongoDB中把数据转存到Neo4j中,包括查重、设置属性、关系、建立索引等操作,完成一个点需要将近1秒的时间,这是无法忍受的速度。。。

Neo4j 的一些使用心得的更多相关文章

  1. neo4j性能调优(转)

    最近在公司实习做的就是优化neo4j图形数据库查询效率的事,公司提供的是一个在Linux上搭建且拥有几亿个节点的数据库.开始一段时间主要是熟悉该数据库的一些基本操作,直到上周才正式开始步入了优化数据库 ...

  2. neo4j - 查询效率的几种优化思路

    最近在公司实习做的就是优化neo4j图形数据库查询效率的事,公司提供的是一个在Linux上搭建且拥有几亿个节点的数据库.开始一段时间主要是熟悉该数据库的一些基本操作,直到上周才正式开始步入了优化数据库 ...

  3. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  4. NoSql数据库使用半年后在设计上面的一些心得

    NoSql数据库这个概念听闻许久了,也陆续看到很多公司和产品都在使用,优缺点似乎都被分析的清清楚楚.但我心里一直存有一个疑惑,它的出现究竟是为了解决什么问题? 这个疑惑非常大,为此我看了很多分析文章, ...

  5. 我的MYSQL学习心得(二) 数据类型宽度

    我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  6. 我的MYSQL学习心得(三) 查看字段长度

    我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  7. 我的MYSQL学习心得(四) 数据类型

    我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...

  8. 我的MYSQL学习心得(五) 运算符

    我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  9. 我的MYSQL学习心得(六) 函数

    我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

随机推荐

  1. Ubuntu服务器WDCP可视化界面搭建注意

    title: Ubuntu服务器WDCP可视化界面搭建注意 前两天心血来潮,研究了下服务器搭建与部署. 领了个免费体验3天的vps服务器进行了实操. 在安装WDCP的时候遇到了些问题,网上大部分对问题 ...

  2. 探寻宝藏 --- 双线DP

    双线DP , 在郑轻的时候 做过 这种双线DP  ,  这是多维DP 应该是比较简单的  但是那个 时间复杂度的优化 始终看不懂 .  先附上代码吧 , 等看懂了再来 , 补充一下 解释  . #in ...

  3. 2017青岛网络赛1011 A Cubic number and A Cubic Number

    A Cubic number and A Cubic Number Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65535/3276 ...

  4. 我要上google

    我要上google 一.下载google浏览器(百度下载) 二.获取和运行xx-net 1.https://github.com/XX-net/XX-Net 2.解压下载的xx-net,运行文件夹中的 ...

  5. 程序员必知的LinuxShell命令

    程序员必知的LinuxShell命令 grep (Globle Regular Expression Print全局正则表达式) 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的 ...

  6. Python之绘图和可视化

    Python之绘图和可视化 1. 启用matplotlib 最常用的Pylab模式的IPython(IPython --pylab) 2. matplotlib的图像都位于Figure对象中. 可以使 ...

  7. post登录资料备份

    # coding=utf-8 import urllib import hashlib import http.client import http.cookiejar import http.coo ...

  8. grunt 全局使用

    grunt 不同地方使用时需要将插件下载的当前文件夹,这是因为查找模块时是当前路径,这会造成多个工程使用时会需要下载多次,而这些东西又不应该存在于工程之中,所以应该将所有模块全局安装,然后在工程下面只 ...

  9. treetable adding nodes at root level

    describe("loadBranch()", function() {     beforeEach(function() {     this.newRows = " ...

  10. PHP 之QQ第三方登录

    一.下载QQ SDK 下载地址:http://wiki.open.qq.com/wiki/mobile/SDK 二.配置SDK 三.具体代码 login.html <!DOCTYPE html& ...