Hi Sean,
Once you've shutdown your python program, you just configure the Neo4j server
to look in the same directory by tweaking the values in
conf/neo4j-server.properties.
The property you need to tweak is: org.neo4j.server.database.location=your
database directory here
Then you can do:
Hi Olivier,
Can you rule out NFS issues by copying the cleanly shutdown database to a local
volume and start it from there?
Jim
___
NOTICE: THIS MAILING LIST IS BEING SWITCHED TO GOOGLE GROUPS, please register
and consider posting at
Hi Israel,
Neo4j doesn't have an in-memory mode as you allude to - it's the same
database whether you run it remotely or in your app (or container).
Is your reasoning because the app itself has a large footprint such that it
contends with Neo4j within the same process?
Jim
Hello,
Do You know ANY (mature) RDBMS which is: provides many connection at the
same time, transaction-less and is still popular? I don't know any (even
SQLite has transactions). And now, somebody (not meaning You) want to
convince me that transactions are not needed. At least there strange
It is a long topic on itself: Where the business logic belongs to - the
server or the client.
But the point is that far the most common use-case is to write the business
logic on the client, not on the server.
The business logic on the server has already failed multiple times in the
At the risk of re-iterating this:
Neo4j in embedded mode supports as many connections as the application where
you embed it.
Jim
On 2 Dec 2011, at 20:38, zolv wrote:
Anyway, You are talking now about things that doesn't exist and I have to
implement them on my own.
I can't imagine RDBMS
Doesn't matter how you play the words, you need transactions somewhere. And
with REST it is only available as a database plugin.
For most people it is just not worth the effort (especially who's not coming
from Java background) and they will turn around.
If you use the REST API as-is, you
Hi,
1. DB server must be able to work as standalone server
2. DB server must provide transactions.
Can anybody guide me through these 2 things in Neo4j world?
1. Neo4j works as a standalone (or clustered) server which is accessible
through the REST API.
2. Neo4j is ACID transactional with
Hi Dima,
There's a nightly snapshot that you can grab if you're interested in being on
the bleeding edge. It's in the Neo4j repo:
http://m2.neo4j.org/
And so the latest Cypher build is here:
http://m2.neo4j.org/org/neo4j/neo4j-cypher/1.6-SNAPSHOT/
You can just add a snapshot dependency to
Hi Jon,
// This one results in a not found exception on the 'asn' property.
@Test
public void testIncoming()
{
Node network = svc.createNode();
Node as = svc.createNode();
as.setProperty( asn, 123 );
as.createRelationshipTo( network,
Hi there,
Your front end won't really care whether you use
http://j2ee.my.site.com:7474/db/data or http://j2ee.my.site.com/db/data since
both are valid URIs.
If you use the default port (80) then you don't need to specify the port in the
URI, and so http://j2ee.my.site.com/db/data will be
Hi Peter,
I think I might have verbally volunteered for this issue.
Can you assign it to me? Email would help me to remember :-)
Jim
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user
Hi Pekka,
There are already (prominent) folks using Neo4j in that kind of credit card
fraud detection. I hope some of them could volunteer their experiences (though
not necessarily their proprietary clever stuff) on this list.
Jim
___
Neo4j mailing
Hi Shrieesh,
Take a look here:
http://mvnrepository.com/artifact/org.neo4j/server-api/1.5
You'll get the Maven/Ivy/whatever config you need for those dependencies.
Jim
___
Neo4j mailing list
User@lists.neo4j.org
1/ Supernode
2012, around Q2.
2/ Sharding and horizontal scalability
2013, around Q1.
These are guesses not promises :-)
Jim
PS - sharding graphs is NP complete. In theory no general solution exists.
___
Neo4j mailing list
User@lists.neo4j.org
Hey Matt,
Not to nitpick, but that's for an ideal graph partitioning, not graph
sharding overall, right? Eg the problem is solvable in many specific
domains?
You're right - it's the general case. I was just making the point that sharding
isn't something that's an afternoon's hacking to
and for helping to make Neo4j the product you want it to be.
Jim Webber
Chief Scientist @ Neo Technology
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user
Hey Peter,
I think you raise a good point. We'll need some kind of ID for objects stored
in (v)shards, but that's likely to be some kind of hierarchical ID (so that we
can locally and globally refer to objects in and across shards).
I think here the question boils down to: can we add (fast)
Hi Anders,
When you do getAllNodes, you're getting back an iterable so as you point out
the sample isn't random (unless it was written randomly to disk). If you're
prepared to take a scattergun approach and tolerate being disk-bound, then you
can ask for getNodeById using a made-up ID and deal
Hi Mike,
In order to use Neo4J at all I must:
install 'GIT'
git https://github.com/jimwebber/neo4j-tutorial.git (40 mB)
go through the tutorial
No, I was just offering a pointer to a useful resource to get you going. In
order to use Neo4j you must download it and configure it in your
Hi Mike,
Neo4j's default APIs are all Java. Have a look at the Neo4j tutorial here:
https://github.com/jimwebber/neo4j-tutorial
It will take you from the core API right the way through indexing, traversers,
Cypher, and into the REST API should you want to go that far up the stack.
And it's
+1 I love Cypher's ASCII art, and Josh's idea of drawing Cypher inside a
whiteboarded graph is wonderful.
I really don't want Cypher to pander to SQL. Cypher is about graph matching and
should be awesome at it - its duty to us newbies is simply to be humane not
identical to what I (think I)
Hi Laurent,
I believe this could managed by Neo4j since it's similar to systems already in
production.
Jim
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user
Hi,
When I changed the PUT to POST, It worked fine.
That makes sense: adding to an index is a POST operation to make it explicit
that you're annotating an existing resource (as per RFC2616).
I just double checked the server functional tests and it's visible there, and
it generates some
Hi Alican,
But I am still a bit concerned about the 128GB RAM..
You can run it on less of course. You could run it on your laptop and it would
still work.
However Neo4j is clever in its use of RAM. The more RAM you can allocate to
Neo4j, the more chance that database reads can come straight
From the high church of REST, I have no objections.
Blessed be the Roy, for he hath delivered us from RPC. Or something.
Jim
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user
If we do that, I propose that we move the Cypher and Gremlin plugins into
server. WDYT?
I'm ambivalent about that. What end-user benefits are there versus shipping
them as plugins?
Jim
___
Neo4j mailing list
User@lists.neo4j.org
Hi Emil,
When you're using Neo4j in embedded mode, only the hosting process can directly
access the data store. If you're using it in server mode, then any number of
HTTP clients can concurrently access the database through the Web API.
However, Neo4j is totally thread safe so you can have
Hi Peter,
For the specific case of updating a single property then:
PUT node/{node_id}/property/{property_key}
with an entity body like:
some text
or
27
would be OK I think
But not until the 1.6 M01 release :-)
Jim
___
Neo4j mailing list
Then I declare from the High Church of REST that what we do today is correct.
Amen :-)
Jim
On 17 Oct 2011, at 15:34, Jacob Hansson wrote:
On Mon, Oct 17, 2011 at 8:05 AM, Jim Webber j...@neotechnology.com wrote:
Hi Peter,
For the specific case of updating a single property then:
PUT
Hi Andrew,
Michael Hunger wrote a plugin for the Neo4j REST server that implements this.
You can get it from his github space:
https://github.com/jexp/neo4j-clean-remote-db-addon
Jim
___
Neo4j mailing list
User@lists.neo4j.org
I think PUTting a value to the property's URI (which is effectively it's key
within the node).
Isn't that what we already do though?
Jim
On 17 Oct 2011, at 07:16, Peter Neubauer wrote:
Ok,
So what would be good semantics gör updating just one property?
Jim?
/peter
Sent from my
Hi Pablo,
For the very specific use-cases I'd recommend writing an extension rather than
using the default representations. The default behaviour of the REST API
emphasises discoverability which in the case of supernodes isn't usually
desirable.
Jim
Hi Pablo,
What do you exactly mean by discoverability ? Always getting all in/out rels
for a node?
Yup, exactly. By default the REST server projects the graph (naively) onto the
Web (itself a graph).
About writing an extension, has anyone already done this at some level?
Is there any kind
To reiterate what Chris said about backups.
The latest release is a milestone, and while we've taken every opportunity to
rigorously test it, you should always have a backup of your data before any
upgrade especially so if it's not a stable GA release.
Jim
Hi Andrew,
The Neo4j server has a single instance of EmbeddedGraphDatabase inside. You can
create different logical databases by having disjoint graphs only.
HTH.
Jim
___
Neo4j mailing list
User@lists.neo4j.org
Hi Andrew,
It's not possible with a single REST server, though multiple REST servers will
live happily on the same host providing you give each of them different
configuration (e.g. port number, data store location etc).
Jim
___
Neo4j mailing list
Hi,
Caveat: I don't believe it's a good idea to share entities in your database
directly with consumers in the general case, even if your database has a REST
API that makes it easy to do so.
In this case your articles are important enough to be named. Long-lived names
are handled by the index
Hi Hesham,
Thanks Jim, another beginner questions then, how do I get these long-lived
names after I create an index?
If you look at this section of the manual:
http://docs.neo4j.org/chunked/snapshot/rest-api-indexes.html#rest-api-add-node-to-index
You'll see that you after you've created an
Hey,
Am I really being that hyperbolic? The deployment tools we have are superb
and simple to use. I just don't _want_ to do any prep work outside my
project folder in order to test my code. The embedded db made me think it's
possible (first time I'd ever dealt with one). (=
Understood.
Hi,
When using Neo4j in embedded mode, communication with the database is via
in-process Java method calls* since the database resides in your process.
However when Neo4j is used in HA mode (irrespective of whether it is embedded
or server), then it will use sockets to maintain consistency of
have any suggestions as to what is the best way to use neo4j to
benchmark it against a mysql database (with an equal in communication
overhead manner)?
On 10/7/11 12:23 PM, Jim Webber wrote:
Hi,
When using Neo4j in embedded mode, communication with the database is via
in-process Java
Hi Antriani,
Ok, but the REST API doesn't produce more network overhead (i.e.
HTTP...) compared to a driver implementation using sockets for access
for example MySQL JDBC ?
I have no data to support this, but I'm going to make an educated guess and say
that the MySQL JDBC driver is
Hi Andrew,
I have a quick question regarding string template. When we create a node
index the server returns a template
http://localhost:7474/db/data/index/node/favorites/{key}/{value}
Does Neo4J have any API similar to StringTemplate that can replace
placeholders in the template with
Hi,
Firstly if you're going to use the server, then *use the server* rather than
wrapping your own. The server is built and tuned for production use cases.
The WrappingNeoServerBootstrapper type can be used to wrap an existing instance
of a database in server clothing. The use case for this,
Hi,
So, using an embedded db is the only way to if you want one-shot deployment?
It might be worth it to see how difficult it would be to write that
component as a plugin to the build tool I use (Cake).
I'm not sure I follow. What's one-shot deployment? Deploying server is pretty
trivial
Hi Andrew,
In the latest snapshots the API has changed, see:
http://docs.neo4j.org/chunked/snapshot/rest-api-indexes.html
So either ensure you're using 1.5M01 if you want the old behaviour, or a
snapshot if you want the new behaviour.
Jim
___
Neo4j
Hello,
If you're using server, then the startup scripts are the easiest way.
In the directory where you downloaded the server just type:
bin/neo4j start (unix, mac)
bin/neo4j.bat start (windows)
The cypher plugin ships by default with the server. No point starting the
server programmatically
Hi Neil,
No, in this case not bleeding edge enough :-)
Can you try this with the latest snapshot? The request payload you're using was
only pushed earlier this week in response to
https://github.com/neo4j/community/issues/25
Jim
___
Neo4j mailing
No worries Neil - glad I could help.
Jim
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user
Hi Tatham,
I've closed off this issue in Github now:
https://github.com/neo4j/community/issues/25
For all you Neo4j REST API client maintainers, this means there *WILL BE
BREAKING CHANGES* to the Neo4j REST API in the 1.5 release.
I'll try to ensure they're all very well documented in the
Hi Tatham,
I don't necessarily agree with %2f and / being the same, but I do agree that
POSTing everything in the URI is a bit quirky.
Peter's opened up a new issue on this:
https://github.com/neo4j/community/issues/25
And I get to hack on it. So it looks like the REST index API will be
And it will be awesome too*.
Jim
* Otherwise Adriano will take me to a dodgy part of town and leave me there :-)
On 26 Aug 2011, at 20:03, Adriano Henrique de Almeida wrote:
Hi Allison, just adding,
There will be Jim Webber's talk at QCon São Paulo, in my track, (
I suspect (though I haven't profiled it) that the decreasing performance of
batches could be due to JSON processing.
If so, we're going to have to switch to some kind of streamed approach for the
REST batch API.
I'll add these notes into the job in the community backlog.
Thanks very much
Hi Nuo,
if you're using Neo4j server then you can edit the value in
conf/neo-wrapper.conf
wrapper.java.maxmemory=1024
Jim
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user
Hi Piotr,
Neo4j is an open source product. This means you're quite welcome to read the
source of the algorithm and see how it works directly.
The implementation for all of our shortest path algorithms can be found here:
If you're using the standard try/catch/finally idiom in Neo4j then consider
using Nat Pryce/Steve Freeman's transactor pattern.
We have an example of this in the neo4j server code here:
Hi Raffi,
There are no standard TPC-like benchmarks for Neo4j. However, for even modest
data sets, Neo4j can be orders of magnitude faster than some SQL-oriented
databases primarily because it avoids join pain (no sets) for connected data.
There are a few slides in the tutorial deck about this
Hey Josh,
You can validate what Peter's suggesting by setting a small heap when you run
the server.
If you edit conf/neo4j-wrapper.conf you can override the property for heap size
with something like this:
wrapper.java.maxmemory=1
Then you should (in theory) be able to see the batch
There is a PagingIterator however in the API which allows you to page results
by wrapping the IteratorT that gets returned from many API calls.
See:
http://components.neo4j.org/neo4j/1.4.1/apidocs/org/neo4j/helpers/collection/PagingIterator.html
Jim
Hey,
What you suggest (a cache node) is an OK way of doing things. You could also
inline the cached values in the node itself.
Since managing relationships is atomic with respect to the cached counters,
there will never be inconsistencies.
Jim
___
Hi Nuo,
process [26266]... waiting for server to be
ready.
BAD.
another server-process is running with []
Just to check before we dig deeper, are you certain you don't have
I'd agree with Peter on this - unmanaged extensions are for where you want to
put your own domain-specific API in the server, but if you want to deal with
native nodes and relationships, use the managed extensions.
Jim
___
Neo4j mailing list
Hi Romiko,
Out of the box auto-indexing only supports exact matches, rather than full text
searches. The reason is that auto indexes are created with the default
configuration (http://docs.neo4j.org/chunked/snapshot/indexing-create.html) the
first time you access them. But this gives us a
Hi Gautam,
What you're describing here is a lot of work - you're creating your own Neo4j
server with a binary protocol rather than using the REST API.
When I said your application exposes you API I meant that with the embedded
APIs you get to build an interface (e.g. Web app, RESTful services,
Hi Gautam,
If you're writing a Java application, then use the Java APIs. If you need
several instances of the application to see the same data then use Neo4j HA.
That way your application exposes your API (your service interface).
The Neo4j server does the same thing but it exposes *our* API
Hi Niels,
The devteam backlog isn't public because it contains private customer
activities (as well as features from the community).
Andreas and Peter are working on a way that we can collaborate more effectively
with (the relatively small number of) community code contributors.
Until then,
Hi Peter,
Jim: I don't suppose you know if/when the REST API will support these
complex traversals (or END_OF_GRAPH queries)? This unfortunately makes Neo4j
a no-go for our project until then.
The REST API does support some complex traversals, but it's not totally
equivalent to the either of
Hi Nuo,
I've been playing with this for a little while, and after talking it over with
the devteam, I'm pretty certain that want you want to do isn't yet possible
through the REST API. To solve your problem, you'd need a return filter like:
position.endNode().hasProperty('name')
Hi Nuo,
Please ignore my previous mail - Tobias pointed out that my syntax was wrong
(thanks Tobias!).
Try:
position.endNode().hasProperty('name')
!position.endNode().hasRelationship([org.neo4j.graphdb.DynamicRelationshipType.withName(
'bar' )])
And it should work fine (look out for
Hi,
That depends, of course, on what those requests are doing. If you are writing a
single property only in each request, the server will perform fewer of those
(especially if they're contended).
If you're querying the graph, then the limiting factor is the performance of
Jetty (the HTTP
Hi Peter,
[I'm sure the Greliministas will provide an answer too, but here's the native
Neo4j APIs' take]
In the Neo4j simple traverser framework, you can set max depth to end of graph.
But you constrain the types of relationships you allow the traverser to
traverse. That way your traversals
Hi Peter,
It's a bit confusing, but we have (at least) two traverser frameworks, both of
which have been around since 1.x.
The core traverser API: in the org.neo4j.graphdb package
The new traverser API: in the org.neo4j.graphdb.traversal package
Have a look at the slideware in the neo4j
Hi Niels,
Is this partitioning an aspect of the supernode problem? If so, there is a
feature request* in the devteam backlog for that.
Jim
* It is currently 5th in priority order.
___
Neo4j mailing list
User@lists.neo4j.org
G'day Romiko,
* Configuration File: Autoindexing enabled here is related to
automatically indexing all nodes and relationships?
*
If I want to add a node to an index following the guidelines, what convention
should be used for the Key/Value naming? Imagine we have nodes of type
Did your robot use the REST batch API or the normal REST API?
Jim
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user
Salut Bruno,
Could you clarify your intent for (2) and (3) please?
Do you really mean to use the batch inserter there (that is, is this for an
initial import), or are you trying to add data to a steady-state database?
If the latter, then you need to read the core API:
Hi Mike,
I've added this to the webadmin backlog. That backlog is currently small-ish,
so there's a reasonable chance you'll see this in the 1.5 timeframe*.
Jim
* no promises, the world's far too chaotic for that. Especially when rioters
are burning down your local pie shop (tragedy!)
On 9
Hi Dario,
It's hard to know if it's expected behaviour unless you share a bit more
context.
What were you doing (in JUnit tests or curl commands) to produce these?
Jim
On 9 Aug 2011, at 14:35, Dario Rexin wrote:
Hi,
I just attached a hoptoad appender to my logger in the Neo4j Server and
Hi Nuo,
In the REST API every interaction is automatically executed within a
transaction on the server side.
If you need to complete multiple operations within the scope of a transaction
you have a few options:
1. REST batch API:
http://docs.neo4j.org/chunked/snapshot/rest-api-batch-ops.html
Hello Manav,
I am not a lawyer, so what follows here is an opinion.
My question is pretty simple. I am creating a website which uses neo4j
as its database. Now if I want high availability and monitoring for my db ,
do I need commercial license ? or Agpl3 will be fine with my use case.
I'd add py2neo too.
Jim
On 4 Aug 2011, at 06:20, Eddy wrote:
Okay, cheers. I think the guys and girls at Neo4j need to list all these
tools and their status in the wiki somewhere. I think neo4jrestclient and
bulbflow are others that can be added.
On Thu, Aug 4, 2011 at 2:14 AM, Aaron
Hi Ahmed,
Can you sketch how your data looks? Otherwise it's hard to see where the NPE
might occur.
Jim
On 4 Aug 2011, at 08:03, ahmed.elsharkasy wrote:
i tried this
IterableRelationship relations =
node.getRelationships(DynamicRelationshipType.withName(PRECEDES_ +Id),
Direction.BOTH);
in the implementation of the remote transaction
handling logic, we completely removed the project.
I still believe this to be a superior model for tools, but would build it
differently if I were to build it today.
-tobias
On Mon, Aug 1, 2011 at 4:48 PM, Jim Webber j...@neotechnology.com wrote
Hello,
I'm not sure I understand this problem.
You're saying that in a RDBMS, you can query the database to help debug it.
In Neo4j you also have query capabilities to help debug a database (e.g.
Cypher, Gremlin), though our toolchain isn't as integrated as some of the SQL
tools (e.g.
Hi Mathias,
EmbeddedReadOnlyGraphDatabase is not quite what it seems, and I think should be
deprecated/removed. The correct way for database instances to become consistent
is through the HA protocol.
Jim
___
Neo4j mailing list
User@lists.neo4j.org
Hi Ahmed,
The best way for us to help is if you send a unit test that demonstrates the
problem you're having. Can you send some JUnit code please?
Jim
On 31 Jul 2011, at 16:01, ahmed.elsharkasy wrote:
i face strange problems with this method , i am sure i am giving it the right
node id and
Hi John, Niels,
I think of indexes in Neo4j as long-lived names. Not quite the keep it local
that Niels mentioned, but not entirely dissimilar either.
Those long lived-names tend to give you starting points in the graph from where
you perform graph operations. Indexing therefore constitutes
Hi Aseem,
Jim, thanks for the explanation. I understand your constraints, but thinking
about it more, I'm actually even more baffled -- how can we actually make
use of this paged traversal API in a web scenario?
Neo4j's traversers (which is what the REST paging API really is) knows nothing
All of this works, without JS. That means the client (your browser) isn't
the party doing the paging or keeping track of all results. It's something
on the server side.
That something on the server side is called Google. That is, there is an
organisation which has set up databases,
Now that is interesting - I hadn't considered this when writing the REST paging
stuff.
When you say that the PagingIterator caches, what's the memory overhead
involved, particularly when I want to page backwards through a potentially
large result set?
Jim
Hey,
Retrieving popular nodes not directly possible with the REST API.
Even in Java, you'd have to sort your result set manually since you don't know
ahead of time how the search is going to traverse your graph.
It is only once you have your result set (which may be large) that you can
sort,
Hi Aseem,
When you GET a resource, you're asking for its state at a particular instant in
time. GET's don't always return the same content, what's important about them
is that clients can't be held responsible for any (unintended) side-effects of
a GET operation. For example, if you GET the
Feature (though perhaps PUT) would be a better choice of method. POSTing a new
set of properties can't update, because the semantics aren't clear - what would
it mean if a property was missing, is that an effective DELETE, or an
indication it should be left alone.
Jim
Try using the GA version. I don't think auto-indexing was available in M02.
Jim
On 28 Jul 2011, at 00:51, dhsieh wrote:
Same probelm here. Downloaded neo4j-enterprise-1.4.M02-unix.tar.gz with
deafult installtion on Linux. Added the foolwoing lines to neo4j.properties
file:
Hi John,
In an embedded scenario, pagination doesn't make as much sense. Since calls to
the embedded APIs typically return a lazily-evaluatable iterableT you just
call next() to efficiently advance through the results.
Jim
___
Neo4j mailing list
Hi John,
OK, gotcha. I didn't realise there's a network hop in there too.
Go ahead on use the PagingIterator.
Jim
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user
Using the Java version typically gives you (slightly) more powerful API
compared to the REST API.
My rule of thumb is: if you can use the embedded version in your architecture,
then you should.
Jim
___
Neo4j mailing list
User@lists.neo4j.org
Yeah, I agree with Niels. It's unfortunate naming in the API. You should really
think of it as a relationship name.
Jim
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user
Hi Pieter,
Paged traversals are in 1.4 GA.
Jim
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user
1 - 100 of 291 matches
Mail list logo