Re: [Neo4j] Running server against database created with neo4j-embedded python
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: bin/neo4j start to get the server running. Remember that only one process (your application or the neo4j server) can have a lock on this database at any one time. Jim ___ NOTICE: THIS MAILING LIST IS BEING SWITCHED TO GOOGLE GROUPS, please register and consider posting at https://groups.google.com/forum/#!forum/neo4j Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] lock issue on Ubuntu at startup
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 https://groups.google.com/forum/#!forum/neo4j Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Using AStar Algorithm with neo4j REST API
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 ___ NOTICE: THIS MAILING LIST IS BEING SWITCHED TO GOOGLE GROUPS, please register and consider posting at https://groups.google.com/forum/#!forum/neo4j Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Standalone server and transactions
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 silent that Neo4j has full transactions (not batch mode) ONLY in embedded mode and in embedded mode there is allowed only 1 connection. Neo4j has transactions in both server and embedded mode. As Michael points out, if the default REST API behaviour isn't what you need out of the box, you can readily extend it. When you embed Neo4j in your code, then it supports as many connections as your code does. Neo4j is fully thread safe. If you think this isn't clear, could you help by pointing out weaknesses in the documentation - that way we can fix them and other users in future won't be inconvenienced in the same way. Cheers, Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Standalone server and transactions
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 history (think of stored procedures on the RDBMS). Server side logic works well when the DB is part of the app (e.g. embedded) and server/client code is often indistinguishable. I don't believe that we are talking about business logic on the server - we're talking about data access logic (queries). Business logic binds to that data over the network - that the data is sourced through a plugin is an implementation detail. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Standalone server and transactions
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 server that doesn't give me JDBC driver in the box. Unfortunately Neo4j is like this. There is no native transaction-full support so Neo4j can work as standalone server with many connections to it. And that's the point. Now I have to choose one of the: - Neo4j as standalone server with REST without transactions or - Neo4j embedded with only 1 connection with transactions. I can't imagine the situation where DB server is embedded in application (really big application) which allows 1 connection (not 2, not many, but 1!). There is no possibility to have separated machine for DB because then there is no transactions. Transactions in meaning the core of persisting data doesn't exist in DBMS...I'm amazed that nobody has thought about these as a bottleneck problem. -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/Standalone-server-and-transactions-tp3553058p3554188.html Sent from the Neo4j Community Discussions mailing list archive at Nabble.com. ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Standalone server and transactions
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 will get a single transaction per HTTP request. Neo4j is always transactional. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Standalone server and transactions
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 each HTTP request to the server being internally scoped in a single transaction. HTH, Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Named matched with depth gives error
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 your Maven POM/Ivy settings/whatever else to get this automatically as part of your build. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Using in-memory DB for unit tests
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, DynamicRelationshipType.withName( AS ) ); System.out.println( network.getSingleRelationship( IPAddressRelationshipType.AS, Direction.INCOMING ) .getStartNode() // It's the start node of the incoming relationship, which is the same as the end node of the outgoing relationship .getProperty( asn ) ); } You got the start and end node wrong - I changed that and your test ran just fine. Good luck with your first project - I hope it's as enjoyable as my first Neo4j project :-) Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Network accessible hostname
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 fine. To use port 80, you'll need to ensure no other Web servers are running on that port, and you'll have to edit the conf/neo4j-server.properties file: org.neo4j.server.webserver.port=80 Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Network accessible hostname
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
Re: [Neo4j] Neo4j Data Capacities
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 list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Neo4j server plugin
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 https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Scalability Roadmap
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 https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Scalability Roadmap
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 complete. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
[Neo4j] Neo4j 1.5 Boden Bord Released!
Hello graphistas! After a successful Milestone 2 release of Neo4j 1.5 Boden Bord and excellent community and customer feedback, we've been busy at work putting the finishing touches to the Neo4j 1.5 GA release which is now available on our downloads page. Since the last milestone you'll find we've smoothed a few rough edges and the documentation has been made really spick-and-span. We think this is our best release yet, but you can be the judge of that considering the splendid set of features and improvements that have gone into it. The full announcement is available on the Neo4j blog here http://blog.neo4j.org/2011/10/announcing-neo4j-boden-bord-15-ga.html and Neo4j 1.5 GA is ready for download from our web site here http://neo4j.org/download/ and is deployed into the maven repository, A big thanks to you, our community, for driving so many of these features forward 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
Re: [Neo4j] Native UUID support?
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) support for UUIDs natively in our store, like we do for strings. I don't know the answer to that, but the kernel folks can probably offer some insight. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Sampling a Neo4j instance?
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 with the times when your ID's don't resolve. It'll be slow (since the chances of having the nodes in cache are low) but as random as your random ID generator. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Simple Java Example
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 preferred Java toolchain - the tutorial simply shortcuts that. If you're not keen on grabbing it from Github, then we keep a precompiled version of the tutorial here: http://dl.dropbox.com/u/2530082/koan.tar.gz The tutorial will get you going with Hello World and beyond very quickly. It's set up so that it has all the latest jars and so on, so it's ready to go. Otherwise you can download the database from neo4j.org: http://neo4j.org/download/ And you can follow the Hello World docs here: http://docs.neo4j.org/chunked/stable/tutorials-java-embedded-hello-world.html All the best with your hacking, Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Simple Java Example
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 already configured to use the latest milestone - you should be up and running in a few minutes once you've cloned the git repository. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Cypher-Pickle?
+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) already know. Jim On 5 Nov 2011, at 03:48, jadell wrote: Mattias Persson-2 wrote: 2011/11/4 maxdemarzi lt;maxdemarzi@gt; I'd say the strongest part of Cypher is the ascii art pattern where you clearly see what you're querying for, right there and then without having to parse it into a graph into your head. Removing that would reduce my interest in this language significantly. This! A thousand times this! Whenever I'm trying to explain how you find connected information without joins, people's eyes tend to glaze over until I a) draw the graph on the whiteboard, b) write out the Cypher query *directly inside the graph*. That's the no f-ing way! moment for most people to see the power of graphs and graph query languages. -- Josh Adell -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/Neo4j-Cypher-Pickle-tp3480817p3481871.html Sent from the Neo4j Community Discussions mailing list archive at Nabble.com. ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Paper: G2 : A Graph Processing System for Diagnosing Distributed Systems
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
Re: [Neo4j] error indexing node: status 405 returned
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 documentation here: http://docs.neo4j.org/chunked/snapshot/rest-api-indexes.html#rest-api-add-node-to-index Hope that helps, Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Neo4j performance with 400million nodes
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 memory rather than spending potentially milliseconds going to mechanical disk, yielding thousands of traversals per second rather than millions. So more RAM = less disk hits (statistically) which is where you'll get huge read performance benefits. Less RAM means more likelihood of going to disk. All things being equal, with 128GB RAM you can cache a lot of your dataset in main memory. Perhaps even all your *active* dataset in fact (since it's about a quarter the size of your full dataset). That's going to give you blistering performance. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] REST traverse deprecation
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
Re: [Neo4j] REST traverse deprecation
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 https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Db connections as we do in mysql ,oracle etc..
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 many concurrent threads accessing the data in embedded mode, so it's fine to use Neo4j embedded in your own Web applications. If you need to scale out the number of instances of Neo4j in your system, then read up on HA: http://docs.neo4j.org/chunked/snapshot/ha-setup-tutorial.html Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Set property on node in Neo4j REST server
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 User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Set property on node in Neo4j REST server
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 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 :-) But this is exactly what we do today, no? Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Jacob Hansson Phone: +46 (0) 763503395 Twitter: @jakewins ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Set property on node in Neo4j REST server
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 https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Set property on node in Neo4j REST server
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 phone. On Oct 17, 2011 6:57 AM, Aseem Kishore aseem.kish...@gmail.com wrote: On Sun, Oct 16, 2011 at 6:06 AM, Peter Neubauer peter.neuba...@neotechnology.com wrote: Looking at http://docs.neo4j.org/chunked/snapshot/rest-api-node-properties.html#rest-api-set-property-on-node you can set the property as just a string in the request, which is valid JSON. Hey Peter, I think the confusion may have stemmed from the fact that strings by themselves are *not* actually valid JSON as far as I understand. I believe valid JSON is *technically* only objects and arrays, though many libraries, in practice, tend to support primitive values as valid JSON too. It's certainly convenient, and I prefer that, too. E.g. http://jsonlint.com/ validates {} and [] but not or 1 or true: Parse error on line 1: ^ Expecting '{', '[' Cheers, Aseem ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Size limits for REST Server?
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 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Size limits for REST Server?
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 of docs about this? Yes, and I just noticed Peter responded with those links :-) And lastly (I just realized I only asked more questions so far... ) is the REST-Server somehow prepared for these extensions? I mean, could I use the 'skeleton' of the Server and only change some parts in order to get all this? With the managed and unmanaged extensions, you add your code into the server through APIs. The managed API gives you a very graph-centric view and manages creation of JSON and HTML representations on your behalf. The unmanaged API gives you a JAX-RS API plus direct access to the underlying database. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] indexquery 12times faster than cypher -- neostore-upgrade-question
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 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Different instances in Neo4j REST db
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 https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Different instances in Neo4j REST db
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 User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Beginner Question - Unique IDs
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 framework in Neo4j, so I think you're on the right track when you say you should create an index for articles and share the URI of the index entry with your users. FWIW you shouldn't share the article's Node URI directly because there's no guarantee that it's stable over time. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Beginner Question - Unique IDs
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 index, you can add to it. And in the HTTP 201 response when you've added a node (or relationship) to the index, there's a location header that gives you your long-lived URI for the index entry. Dereferencing that URI with a HTTP get will give you a useful response representation including a JSON map with a key called self which will point to the node (in your case an article) that you want. HTH, Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Recommended way to deploy server software
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. Check out the functional tests from the community edition. There's infrastructure in there that will get you running from within your project - in fact for testing it's probably better than the WrappingBootStrapper. I couldn't locate Jake's. Do you have a link? Thanks. I then I realise that I saw Jake's measurements on a different, non-public list. But to summarise, he thinks the REST API could be made to have roughly the same throughput as the embedded API, albeit at higher latencies. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Neo4j embedded
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 the cluster. Jim * so I guess technically the communication mechanism is stack frames :-) ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Neo4j embedded
Hi Antriani, Since Neo4j is an embedded database, the equal is quite legitimately to use the Java APIs. If you want to introduce network and serialisation overhead, then use the REST API. But I really believe that you should measure the performance of your *system* not just your database. So if you can replace MySQL (or whatever) in your system with Neo4j embedded, then do so and measure that. If you can't (e.g. you're not on the JVM) then replace it with a sensible use of the REST API and measure that. Jim On 7 Oct 2011, at 11:28, Antriani Stylianou wrote: Ok,thanks! Do you 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 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 the cluster. Jim * so I guess technically the communication mechanism is stack frames :-) ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Neo4j embedded
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 overall faster than our REST API :-) But my point stands: measure your system, not its components. Neo4j might well have a slower network API than MySQL, but you might find that because of the data model, you ship less data over the network, or the queries run so much faster that network differences become negligible. Something will be your bottleneck in either the Neo4j case or the MySQL case, but if the Neo4j case is faster despite having a slower network interface, then you might not care. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] template tool
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 the real values? Short answer: no. The reason we used these URI templates is that we can't enumerate (in the general case) the contents of an index, so we have to invite clients to compute them (hence the URI template). So the thinking goes, since it's you (as the client) that creates the index entries, knowing the {key} and {value} expansions are easy for you to perform. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Recommended way to deploy server software
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, is that you have an existing datastore and you'd like to use tools like the Webadmin visualisation tool to examine the data. It's not really meant as a replacement for the Neo4j server. If you use it that way, I'd advise you to do a lot of performance testing. If you need an example of how it's used, then see: https://github.com/neo4j/community/blob/master/server/src/functionaltest/java/org/neo4j/server/WrappingNeoServerBootstrapperTest.java I don't believe this class is available as a Maven dependency (although I'd be happy if someone corrected me on that, happier still if I found it in the neo4j server API classes). I think it gets shipped inside neo4j-server-15.M01.jar which means you'll need to download Neo4j from the Web site anyway. The Neo4j server has an opinionated transaction model (1 transaction per HTTP request) but apart from that, it is the same Neo4j database. So if you exclude the network costs, it will tend towards the same performance for a given query. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Recommended way to deploy server software
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 with modern automation tools. I'd love to look at any resources showing performance comparisons between server embedded. Do you know of any? There have been some micro benchmarks on this list (Josh and Jake for example). Otherwise the performance of the server is pretty easy to reason about: Sp (q) = Ep (q) + Cn + Ct That is: Sp == server performance q == some query/database activity Ep == embedded performance Cn == cost of network (and serialisation) Ct == cost of transaction (since the server uses one transaction per request) You can approximate this as: Sp (q) = k + Ep (q) This applies to a single thread. Multi-threaded (i.e. multiple client) throughput will likely be lower on the server because it has to do extra work (the term k in the above) compared to embedded. You have to work out k for your system. It'll depend on file system, available RAM, how you allocate RAM to Neo, operating system... See: http://docs.neo4j.org/chunked/snapshot/configuration.html for information on how to configure your system optimally. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Add node to index
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 mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Using Cypher with WrappingNeoServerBootstrapper
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 when there's scripts to do this already. Jim On 2 Oct 2011, at 23:54, Demian Calcaprina wrote: I am new with Neo4j, and I am using the rest API. I managed to use many of the APIs, but I followed Cypher plugin API (http://docs.neo4j.org/chunked/1.4.1/cypher-plugin.html), and I get an error in server: No such ServerPlugin: CypherPlugin. I am starting the server like this: srv = new WrappingNeoServerBootstrapper( myDb, config); srv.start(); How should I enable the plugin into the server? Thanks in advance, Dem ian ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Adding index items via REST
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 list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Adding index items via REST
No worries Neil - glad I could help. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Forward slashes in index values
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 manual, but following the URI above will show you how things look on the wire now. Tatham/Romiko/Josh/Nigel/Jake/and others, you have tweaks to make... Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Forward slashes in index values
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 changing in our 1.5 release to have a JSON payload in the entity body. That should prevent any URI ambiguity and be more sensible too. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Neo4j Events Coming Up in September
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, ( http://www.qconsp.com/schedule/sabado), which will be on Saturday, September 10, and the workshop, 1 day before. (which I'll attend). ;) Cheers, Adriano Almeida 2011/8/26 Allison Sparrow alli...@neotechnology.com *** Hi Everyone, We have a bunch of great events coming up in September. Check it out below. We are adding more events on the regular, so be sure to check back at http://plancast.com/neo4j for updates throughout the month. If you have any questions regarding participation, feel free to email me at alli...@neotechnology.com. *WEBINAR: Getting Started with Neo4j* Thursday, 1 September @10:00 PDT Neo4j is the world's leading graph database, storing data in the nodes and relationships of a graph. The most generic of data structures, a graph elegantly represents any kind of data, preserving the natural structure of the domain. This webinar is designed to help developers achieve a fast start with Neo4j.. There are no pre-requisites. Join this webinar to learn: * basic graph concepts * modeling data in a graph * querying a graph Register: https://www1.gotomeeting.com/register/491756720 System Requirements PC-based attendees Required: Windows® 7, Vista, XP or 2003 Server Macintosh®-based attendees Required: Mac OS® X 10.5 or newer *LONDON Keynote: Ian Robinson presents @Progressive .NET Tutorials* Wednesday, 7 September @ 09:30 - 13:20 GMT This hands-on tutorial will introduce you to building RESTful web services using the new Microsoft Web APIs (http://wcf.codeplex.com). Over the course of several exercises, we'll develop a simple Fighting Fantasy service for machines to play when they're not busy running your business applications. The tutorial's mixture of theory and practice will cover: - Resource design and development - Test-driven server- and client-side development - The Atom Syndication Format - Caching - Hypermedia http://skillsmatter.com/podcast/open-source-dot-net/restful-web-service-development-in-dot-net *BAY AREA Meetup: Spring Data Neo4j* Wednesday, 7 September @ 19:00 PDT Join us for an introduction to Spring Data, with a special emphasis on Spring Data Neo4j. We'll get you started with this exciting new technology, then take a deeper dive into how you can make the magic happen with Neo4j. www.meetup.com/graphdb/events/30126321/ *WEBINAR: Getting Started with Spring Data Graph* Thursday, 8 September @ 10:00-11:00 PDT The Spring Data project makes it easier to build Spring-powered applications that use new data access technologies such as non-relational NOSQL databases, cloud based data services, and graph databases. This webinar is designed for enterprise developers who are working with Spring and need to understand if they can benefit from a graph database. The session will introduce the different types of data management offered in Spring Data, including graph databases, and will show how easy it is to get started with the Spring Data Graph project. https://www1.gotomeeting.com/register/622766136 *KARLSKRONA (SWEDEN) Conference Talk: How Graph Databases Can Make You a Superstar @Devcon 2011 * Thursday, 15 September https://www1.gotomeeting.com/register/889000248Andres will be presenting about graph databases generally, and Neo4j specifically. telecomcity.org/hem/devcon11.aspx *SEATTLE Meetup: Neo4j in the Real World *Thursday, 15 September @ 19:00 PDT An evening learning about real world use cases for a graph database, citing a mix of actual and abstracted commercial deployments. We'll consider modeling a real domain, performance tuning, and deploying a local or geographically distributed cluster. www.meetup.com/graphdb-seattle/events/27968441/?rv=ea1.2 *DENVER Conference Talk: Geoprocessing with Neo4j Spatial and OSM @FOSS4G * Friday, 16 September @ 14:00 MST Presentation by Craig Taverner, Amanzi. What better way to perform geoprocessing than on a graph! And what better dataset to play with than Open Street Map! 2011.foss4g.org/sessions/geoprocessing-neo4j-spatial-and-osm *ST. LOUIS Conference Talk: An Introduction to Doctor Who (and Neo4j) @Strange Loop 2011 *Monday, 19 September Doctor Who is the world’s longest running science-fiction TV series. Battling daleks, cybermen and sontarans, and always accompanied by his trusted human companions, the last Timelord has saved earth from destruction more times than you’ve cursed Maven. Neo4j is the world’s leading open source graph database. Designed to interrogate densely connected data with lightning speed, it lets you traverse millions of nodes in a fraction of
Re: [Neo4j] More batch vs. single operation benchmarks
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 Josh! Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Server couldn't start after java.lang.OutOfMemoryError
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
Re: [Neo4j] All simple paths algorithm
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: https://github.com/neo4j/community/tree/master/graph-algo/src/main/java/org/neo4j/graphalgo/impl/shortestpath Enjoy! Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Test and try/catch block
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: https://github.com/neo4j/community/blob/master/server/src/functionaltest/java/org/neo4j/server/helpers/Transactor.java It's not always appropriate, but it the general case it can keep your code a bit terser and more intent-ful. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Performance Benchmarks Available
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 here (warning, large file): https://github.com/jimwebber/neo4j-tutorial/blob/master/presentation/A%20Programmatic%20Introduction%20to%20Neo4j.pptx And there's a video of me talking about this stuff here (see around 25:40): http://skillsmatter.com/podcast/java-jee/cypher HTH, Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Neo4jPHP batch insert benchmarks
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 operation fail much earlier if it is the JSON components barfing. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] pagination with traversal and search query results
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 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Fastest way to count relationships from a particular node.
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 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Server couldn't start after java.lang.OutOfMemoryError
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 another server process running? Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Return Node in an unmanaged server plugin
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 User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Indexing - Rest Api
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 little wiggle room to cheat the lifecycle of the server. Warning: if you read past this point, what I'm about to suggest might make you rip out your own eyeballs and feed them to a passing alley cat. Seriously, you've been warned, this is a bit of a hack :-) So, before we do anything, let's make sure we've got auto-indexing enabled for the server. Make sure that you've added some config like this into your neo4j.properties file: node_keys_indexable=name,phone relationship_keys_indexable=since node_auto_indexing=true relationship_auto_indexing=true Then bring up your server. Next up, we want to pre-empt the creation of an auto-index, by telling the server to create an apparently manual index which has the same name as the node (or rel) auto-index (in this case we're making a node auto index so the index name is node_auto_index), like so: POST /db/data/index/node HTTP/1.1 Host: localhost:7474 Content-Length: 76 Content-Type: application/json {name:node_auto_index, config:{type:fulltext,provider:lucene}} This triggers the creation of an index which happens to have the same name as the auto index that the database will create for itself. Now when we interact with the database, the index is created so the state machine skips over that step and just gets on with normal day-to-day auto-indexing. You have to do this early in your server lifecycle, otherwise you run the risk of creating a normal auto index as a side effect of doing normal work. See, I told you it was yucky. Jim PS - cheers to Chris Gioran for the tip that this is possible PPS - double cheers to Chris for wanting to make this sane in future releases :-) ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] EXTERNAL: Re: how to use neo4j in server mode w/o using HTTP/REST stuff?
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, RMI endpoint) that precisely suits your needs. I really don't think it's a good idea in general to try to avoid HA with creative solutions - they'll lead to pain. HA, isn't that complicated (Ian Robinson is about to publish a nice piece on setting up HA on his website: http://iansrobinson.com), and its is free of charge providing you accept the terms of the AGPL. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] how to use neo4j in server mode w/o using HTTP/REST stuff?
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 (that is our REST interface). At this point there are no other protocols supported by the server. But since you're in Java already, the native APIs are a better choice. JIm ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] partitioning the relationship store
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, I'll confirm that we have supernode support in the backlog, but I can't confirm how this might affect store layout at this point because we haven't done the design yet, and there are other features in the backlog which could constrain or influence how we support super nodes. Of course Neo Tech is hiring, so if you want direct access to the devteam backlog... Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Depth and traversals in journey planner migration.
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 the Java traverser APIs. I think Peter Neubauer could be right here - if you don't want to write Java, then writing Gremlin or Cypher is a good way to go. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Filter traversal result by relationship type (REST API)
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') !position.endNode().hasRelationship('bar') It's the hasRelationship(String) function that's not available here. Instead, I'd suggest you code your traversal against one of the Java APIs and deploy it as an unmanaged extension or server plugin: http://docs.neo4j.org/chunked/snapshot/server-unmanaged-extensions.html http://docs.neo4j.org/chunked/snapshot/server-plugins.html Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Filter traversal result by relationship type (REST API)
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 those JavaScript array parentheses, needed because we're calling a var arg function). Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Number of request per second using Neo4j Server configuration and REST
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 server that we embed). In an unscientific micro benchmark (on a normal dev macbook pro, running other apps, using default settings for server and underlying database), I adapted the REST API exercise from the Doctor Who koans/dataset (https://github.com/jimwebber/neo4j-tutorial). I repeatedly executed this relatively taxing traversal with return type set to fullpath: { order : depth_first, uniqueness : node_path, relationships : [{ type : PLAYED, direction : in }, { type : APPEARED_IN, direction : out }], return_filter : { language : javascript, body : position.endNode().hasProperty('title') position.endNode().getProperty('title').contains('Invasion') }, max_depth : 3 } On an average run, I get these kinds of numbers: Number of traversals [1] Total seconds taken [40.752000] Average traversals/sec [245.386729] Client threads used [2] Average traversals/sec/thread [122.693365] (note: I only have 4 cores available, so using 2 client threads to generate load, and 2 to serve them on the server seemed about right) Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Depth and traversals in journey planner migration.
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 tend to end at nodes where there are no more relationships (that you've declared the traverser can traverse) to follow. Edited from the Doctor Who Koans (https://github.com/jimwebber/neo4j-tutorial), E.g. Traverser t = theDoctor.traverse(Order.DEPTH_FIRST, StopEvaluator.END_OF_GRAPH, ReturnableEvaluator.ALL_BUT_START_NODE, DoctorWhoUniverseGenerator.COMPANION_OF, Direction.INCOMING); The new Neo4j traverser framework takes a different approach. It allows the writer to embed some logic which determines at each hop of a traversal whether the current node is to be included in the results, and whether or not to continue searching down the current subgraph, e.g. Traverser traverser = Traversal.description() .relationships(DoctorWhoUniverseGenerator.PLAYED, Direction.INCOMING) .breadthFirst() .evaluator(new Evaluator() { public Evaluation evaluate(Path path) { if (path.endNode().hasRelationship(DoctorWhoUniverseGenerator.REGENERATED_TO, Direction.BOTH)) { return Evaluation.INCLUDE_AND_CONTINUE; } else { return Evaluation.EXCLUDE_AND_PRUNE; } } }).traverse(theDoctor); You can see how you could adapt this to address your domain: public Evaluation evaluate(Path path) { if (path.endNode().hasRelationship(RELATES_TO, Direction.BOTH)) { return Evaluation.EXCLUDE_AND_CONTINUE; } else if (path.endNode().hasRelationship(RELATES_TO, Direction.INCOMING)) { return Evaluation.EXCLUDE_AND_CONTINUE; } else { return Evaluation.INCLUDE_AND_PRUNE; } } Hope that helps a bit, and thanks for the tweet about the forums (Anders registered a redirect). Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Depth and traversals in journey planner migration.
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 tutorial here for examples: https://github.com/jimwebber/neo4j-tutorial The REST API doesn't provide such rich access. If you're going to do super-badass traversals, then I'd write them in Java and expose them through the REST API as extensions (a bit like stored procs I guess): Unmanaged (JAX-RS) extensions: http://docs.neo4j.org/chunked/snapshot/server-unmanaged-extensions.html Server plugins: http://docs.neo4j.org/chunked/snapshot/server-plugins.html Jim PS - Please upgrade to 1.4.1. It's completely jar-compatible with 1.4 but better. ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] partitioning the relationship store
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 https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Indexing - Rest Api
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 Customers, and we have 1 customers, what sort of key/value would we set for each customer, as I would guess that all properties are indexed for the node? Would it be perhaps a unique auto increment number for example that is in no way related to the data node? The basic mechanics are straightforward: Assuming you've configured your indexes (http://docs.neo4j.org/chunked/snapshot/auto-indexing.html#auto-indexing-config), then there's nothing more to do. Every time you encounter a node (or relationship) with one of the properties that you declared in your config, it'll be added to the index if it wasn't before, and the property value will be in sync with the value in the node (or relationship). Only the properties that you ask to be auto-indexed will be. So in your case, you might well have an auto index config that indexes only (say) customer_id and doesn't care about other properties. * Also, how can we control the properties/fields to index when we add a node to an index with the RestApi, I would imagine we would not want to index all fields on a node via the auto indexing feature? At the moment you can't control auto indexing through the REST API, you can only use auto indexes that have been configured on the server. I recall Jake (I think) mentioning this before, and it boils down to the fact that we don't mutate config (and so changes to auto index config isn't persisted across DB restarts). Once we figure out how to persist things like config in a database, we'll get stuck into that :-) Jim PS - thanks for prompting on this, it's triggered a good refactoring and cleanup of the index functional tests. ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Database error
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
Re: [Neo4j] Further information about Neo4J
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: http://docs.neo4j.org/chunked/snapshot/tutorials-java-embedded-hello-world.html Jim PS - do keep this list appraised of your research, there are a number of academic folks here (including me) who would be interested. ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Rest-Server Java Opts Configuration
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 Aug 2011, at 09:41, mike_t wrote: Where is the best place to configure the heap size for the neo4j rest server. I don´t want to specify the java opts at startup. -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/Rest-Server-Java-Opts-Configuration-tp3238301p3238301.html Sent from the Neo4j Community Discussions mailing list archive at Nabble.com. ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Exceptions in Neo4j Server
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 am getting some internal neo exceptions besides the ones I’m getting from my unmanaged extensions. I would like to know, why they happen and if it’s a known behaviour. Here are the exceptions: java.net.SocketTimeoutException Read timed out -2SocketInputStream.java → socketRead0 129 SocketInputStream.java → read 382 ByteArrayBuffer.java → readFrom 107 StreamEndPoint.java → fill 198 SocketConnector.java → fill 290 HttpParser.java → parseNext 212 HttpParser.java → parseAvailable 404 HttpConnection.java → handle 228 SocketConnector.java → run 582 QueuedThreadPool.java → run java.net.SocketException Socket closed 162 SocketInputStream.java →?read 382 ByteArrayBuffer.java →?readFrom 107 StreamEndPoint.java →?fill 198 SocketConnector.java →?fill 290 HttpParser.java →?parseNext 212 HttpParser.java →?parseAvailable 404 HttpConnection.java →?handle 228 SocketConnector.java →?run 582 QueuedThreadPool.java →?run Cheers, Dario ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Transactions using the REST API?
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 2. Unmanaged extension (JAX-RS): http://docs.neo4j.org/chunked/snapshot/server-unmanaged-extensions.html 3. Server plugins: http://docs.neo4j.org/chunked/snapshot/server-plugins.html With 1 you POST commands over to the server and the batch API executes them against the GraphDatabaseService on your behalf (and rolls back the transaction and gives you feedback if anything goes wrong). With 2 3 you write server-side Java code which interacts with the GraphDatabaseService hosted by the Neo4j server. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Neo4j Licensing
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. If you use HA then your code also needs to be open source. That's one of the conditions of the AGPL. It prevents people from deriving value from using open source software without giving back. If you open source your stack in accordance with AGPLv3 then you can use HA without paying. If you cannot open source your stack then you need to obtain Neo4j under a different license. Neo Technology will be happy to provide a paid-for commercial license. If I need commercial license then I will not be able to use it because of lack of budget! Can I create a reliable website using only community edition of Neo4j? That depends on your situation. If you can tolerate downtime in your app, then you might not need HA. If you don't need read scale then you might not need HA. If you want to write a lot of crazy plumbing yourself you might not need HA. You are best placed to make those design calls since you know the design of your system. Remember that although Neo4j is fanatically open source (you can read the code of what you're using), not all of Neo4j is always free - if you're using Neo4j in a closed-source commercial environment, then you should obtain a commercial license otherwise you may even fall foul of the AGPL. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] neo4j.py install problems
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 Moffatt [via Neo4j Community Discussions] ml-node+3223244-294443037-340...@n3.nabble.com wrote: If you don't need Node Models, I did some work on bindings with similar syntax to the neo4j.py bindings. https://github.com/OneSaidWho/neo4py They work with version Neo4j 1.3, using JCC instead of JPype, so should be somewhat faster than the current bindings. They might get you by until Jacob has some time :) Aaron On Mon, Aug 1, 2011 at 11:24 AM, Jacob Hansson [hidden email]http://user/SendEmail.jtp?type=nodenode=3223244i=0 wrote: Hey Eddy, sorry about the late reply, I'm on vacation, so I've been checking email rather sporadically. I'm not sure exactly what causes your problem, since we seem to have lost the nested exception at some point (presumably a java/jpype/python thing), but generally, what you are seeing is the under-the-hood database saying I can't create a database at that location. That could be because it does not have write access to the folder you give it, or that the folder does not exist. It could also be something more complicated, but make sure that the process this app runs in has write access, and that the folder exists, first. On the subject of the new neo4j.py bindings, I am currently assigned to them, and will be working on nothing but them until we get a release of them out. I on vacation this week, and will be travelling and moving next week (I will try to get some work done though). After the dust settles, I'll push hard to get a new version out. /Jacob On Sun, Jul 24, 2011 at 4:05 AM, Eddy [hidden email]http://user/SendEmail.jtp?type=nodenode=3223244i=1 wrote: Anyone? Also whats the current status of neo4j.py? I read somewhere it was being updated some time ago. -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/neo4j-py-install-problems-tp3191386p3194919.html Sent from the Neo4j Community Discussions mailing list archive at Nabble.com. ___ Neo4j mailing list [hidden email] http://user/SendEmail.jtp?type=nodenode=3223244i=2 https://lists.neo4j.org/mailman/listinfo/user -- Jacob Hansson Phone: +46 (0) 763503395 Twitter: @jakewins ___ Neo4j mailing list [hidden email] http://user/SendEmail.jtp?type=nodenode=3223244i=3 https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list [hidden email] http://user/SendEmail.jtp?type=nodenode=3223244i=4 https://lists.neo4j.org/mailman/listinfo/user -- If you reply to this email, your message will be added to the discussion below: http://neo4j-community-discussions.438527.n3.nabble.com/neo4j-py-install-problems-tp3191386p3223244.html To unsubscribe from neo4j.py install problems, click herehttp://neo4j-community-discussions.438527.n3.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_codenode=3191386code=ZWRkeS5yZXNwb25kZWtAZ21haWwuY29tfDMxOTEzODZ8LTE4NjgwMDk1MA==. -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/neo4j-py-install-problems-tp3191386p3224364.html Sent from the Neo4j Community Discussions mailing list archive at Nabble.com. ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Delete Nodes connected by a certain relationship
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); IteratorRelationship itr = relations.iterator(); while (itr.hasNext()) { Relationship relationship = itr.next(); relationship.delete(); } and i am having this error Exception in thread main java.lang.NullPointerException at org.neo4j.kernel.impl.nioneo.xa.ReadTransaction.nodeLoadLight(ReadTransaction.java:81) at org.neo4j.kernel.impl.persistence.PersistenceManager.loadLightNode(PersistenceManager.java:82) at org.neo4j.kernel.impl.core.NodeManager.getNodeForProxy(NodeManager.java:466) at org.neo4j.kernel.impl.core.NodeProxy.getRelationships(NodeProxy.java:104) -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/Delete-Nodes-connected-by-a-certain-relationship-tp3224430p3224527.html Sent from the Neo4j Community Discussions mailing list archive at Nabble.com. ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Synchronization of EmbeddedReadOnlyGraphDatabase - Bug?
for building applications, leading us to deprecate the project. When we then later discovered a severe bug 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: 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 https://lists.neo4j.org/mailman/listinfo/user -- Tobias Ivarsson tobias.ivars...@neotechnology.com Hacker, Neo Technology www.neotechnology.com Cellphone: +46 706 534857 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] how to scale and view or generate reports for complex graphs?
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. neoclipse/webadmin don't yet have query support). Jim On 2 Aug 2011, at 21:39, sambodhi wrote: Hi Niels Thanks for your reply! Adding meta info should certainly help but what I exactly mean from complexity her is huge size of the graph with thousands of nodes. For example, in RDBMS if there is some problem with a some user information, I can fire a select query or I can use tools like sql developer which allows me to debug where the problem is. But in case of graph database am not sure if it would be feasible with neoeclipse to navigate through thousands of nodes and debug. -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/Neo4j-how-to-scale-and-view-or-generate-reports-for-complex-graphs-tp3205010p3219983.html Sent from the Neo4j Community Discussions mailing list archive at Nabble.com. ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Synchronization of EmbeddedReadOnlyGraphDatabase - Bug?
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 https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] updateOrAdd method
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 the new properties , but i found the same old un-updated node in the DB , also i followed the instructions regarding flushing and shutting down the index please can you help me? -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/updateOrAdd-method-tp3213619p3213619.html Sent from the Neo4j Community Discussions mailing list archive at Nabble.com. ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Brainstorming on my project: neo4john
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 less of your database design than it would in a RDBMS. Marko had a good line about this: graphs are adjacency free indexes (or words to that affect). Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Paged traversal REST API suggestion for improvement
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 about the back button. It is simply a way of getting bite sized chunks of results back to the client while minimising client, server, and network overhead. It's more discrete streaming than a hypermedia set of pages. If your client wants to provide navigation, then it can. But it is your client's job to cache previous pages that it's pulled from the server. The server does not support prev navigation because the aggregate costs to the server are prohibitive. [snip] It seems to me that the root cause of this dilemma is the IterableT constraint you mentioned -- it only goes forward. Yes it does, and for good performance reasons. Perhaps a better API/model then would be to use an offset parameter. This is different than page because it doesn't require the server to keep state; it just tells the server, return me the results starting *after* this result (which would generally be the last result I saw on my previous page of results). The offset would require us to go forward through the iterator to the offset. Then return from there. I'd considered it briefly, but then dropped the idea since it's extremely wasteful. - Get me the results of this traverse would return everything That's what the normal (non-paged) traversal API does. - Get me the results of this traverse, paged with size 20 would return 20 results That's what the paged traversal API does. - Get me the results of this traverse, paged with size 20, starting with the node/rel after this one [given by an ID] would return the next 20 results That's what (sort of) repeated GETs on the traversal API does, with the caveat that you already specified the page size when you set up the traverser. But we can't give you the ability to look up an arbitrary page on the server. That doesn't even make sense since between invocations the graph may mutate and you'll get different results back anyway. Jim PS - if you want to be prev friendly, then think about making the entire prev page cacheable rather than placing another call on the server for the previous page and doing the hard work of rendering it all over again. ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Paged traversal REST API suggestion for improvement
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, processing, caching, and a myriad of other things and exposed them through a Web server. Saying Neo4j should do this because Google does isn't a fair comparison - Google has more than a database, it has an entire application. I'd say your app should do this, and if you can find a performant way of doing it that doesn't hold server-side state then I'll be happy to take a patch for the REST API. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Pagination in Embedded
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 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Traverse Order By
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, and then deliver popular nodes back ahead of unpopular ones. If you're keen to do this via the REST API, I would suggest a writing plugin that implements this logic in Java, and have that plugin exposed to your client application. Be aware that such a plugin might have interesting memory requirements if you end up processing large graphs. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Paged traversal REST API suggestion for improvement
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 BBC new page now, and then GET it again in 20 minutes, the bytes you receive will almost certainly be different. I think what's perhaps a bit odd in the paged traverser case is that clients do in fact trigger a state transition on GET which materially changes the response. Adding /next to the paged traverser URI does not change this, it just lengthens the URI. Under the covers, the REST API is just using the traversal API and so gets back an IterableT which is forward-only. We can't (or rather won't) do things like ?page=2 (or similar) because that would involve holding all the traversal state on the server which is one of the things paged traversers were meant to avoid (being kind to both the server and clients). If you want to remember all traversal state on the client, that's OK. You can page through your own local data structures. In fact given the number of clients is likely to be larger than the number of servers, this makes sense since the memory burden is shared amongst the many clients, rather than being placed on the single server. So, I'll buy that we've conflated a little too much into a single GET, but it's motivated by a sincere trade off to not overburden the server. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] update node properties via rest?
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 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] auto indexes in REST in 1.4?
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: node_auto_indexing=true node_keys_indexable=name,age relationship_auto_indexing=true relationship_keys_indexable=ROOT,KNOWS,CODED_BY Started the neo4j server, use neo4j-shell and added Neo4j Wiki Matrix example nodes relationships. From http://localhost:7474/db/data/, browser shows Neo4j REST interface links as: Root relationship_index /db/data/index/relationship node_index /db/data/index/node reference_node /db/data/node/0 However, the fisrt 2 links /db/data/index/relationship /db/data/index/node show nothing about the auto indexes for node relstionship I specified in neo4j.properties file. Not sure if this feature actually works in the current 1.4.M02 build. Can any one pitch in on this issue? -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/Neo4j-auto-indexes-in-REST-in-1-4-tp3159205p3205171.html Sent from the Neo4j Community Discussions mailing list archive at Nabble.com. ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Pagination in Embedded
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 User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Pagination in Embedded
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
Re: [Neo4j] Implementation of neo4j
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 https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Relationships = strongly typed. nodes = just nodes. Why?
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
Re: [Neo4j] paging
Hi Pieter, Paged traversals are in 1.4 GA. Jim ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user