Re: [Neo4j] Running server against database created with neo4j-embedded python

2012-01-06 Thread Jim Webber
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

2012-01-06 Thread Jim Webber
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

2011-12-08 Thread Jim Webber
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

2011-12-02 Thread Jim Webber
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

2011-12-02 Thread Jim Webber
 
 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

2011-12-02 Thread Jim Webber
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

2011-12-02 Thread Jim Webber
 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

2011-12-01 Thread Jim Webber
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

2011-12-01 Thread Jim Webber
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

2011-11-29 Thread Jim Webber
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

2011-11-28 Thread Jim Webber
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

2011-11-25 Thread Jim Webber
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

2011-11-24 Thread Jim Webber
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

2011-11-20 Thread Jim Webber
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

2011-11-18 Thread Jim Webber
 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

2011-11-18 Thread Jim Webber
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!

2011-11-10 Thread Jim Webber
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?

2011-11-09 Thread Jim Webber
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?

2011-11-09 Thread Jim Webber
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

2011-11-08 Thread Jim Webber
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

2011-11-07 Thread Jim Webber
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?

2011-11-05 Thread Jim Webber
+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

2011-11-04 Thread Jim Webber
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

2011-11-01 Thread Jim Webber
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

2011-11-01 Thread Jim Webber
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

2011-10-28 Thread Jim Webber
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

2011-10-28 Thread Jim Webber
 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..

2011-10-26 Thread Jim Webber
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

2011-10-17 Thread Jim Webber
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

2011-10-17 Thread Jim Webber
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

2011-10-16 Thread Jim Webber
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

2011-10-16 Thread Jim Webber
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?

2011-10-13 Thread Jim Webber
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?

2011-10-13 Thread Jim Webber
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

2011-10-12 Thread Jim Webber
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

2011-10-09 Thread Jim Webber
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

2011-10-09 Thread Jim Webber
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

2011-10-09 Thread Jim Webber
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

2011-10-09 Thread Jim Webber
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

2011-10-07 Thread Jim Webber
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

2011-10-07 Thread Jim Webber
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

2011-10-07 Thread Jim Webber
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

2011-10-07 Thread Jim Webber
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

2011-10-07 Thread Jim Webber
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

2011-10-06 Thread Jim Webber
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

2011-10-06 Thread Jim Webber
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

2011-10-04 Thread Jim Webber
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

2011-10-02 Thread Jim Webber
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

2011-09-29 Thread Jim Webber
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

2011-09-29 Thread Jim Webber
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

2011-09-28 Thread Jim Webber
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

2011-09-19 Thread Jim Webber
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

2011-08-29 Thread Jim Webber
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

2011-08-28 Thread Jim Webber
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

2011-08-26 Thread Jim Webber
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

2011-08-25 Thread Jim Webber
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

2011-08-25 Thread Jim Webber
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

2011-08-25 Thread Jim Webber
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

2011-08-25 Thread Jim Webber
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

2011-08-24 Thread Jim Webber
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.

2011-08-23 Thread Jim Webber
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

2011-08-23 Thread Jim Webber
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

2011-08-22 Thread Jim Webber
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

2011-08-22 Thread Jim Webber
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?

2011-08-21 Thread Jim Webber
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?

2011-08-19 Thread Jim Webber
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

2011-08-18 Thread Jim Webber
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.

2011-08-18 Thread Jim Webber
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)

2011-08-18 Thread Jim Webber
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)

2011-08-18 Thread Jim Webber
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

2011-08-17 Thread Jim Webber
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.

2011-08-17 Thread Jim Webber
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.

2011-08-17 Thread Jim Webber
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

2011-08-16 Thread Jim Webber
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

2011-08-16 Thread Jim Webber
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

2011-08-12 Thread Jim Webber
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

2011-08-11 Thread Jim Webber
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

2011-08-09 Thread Jim Webber
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

2011-08-09 Thread Jim Webber
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?

2011-08-08 Thread Jim Webber
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

2011-08-07 Thread Jim Webber
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

2011-08-04 Thread Jim Webber
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

2011-08-04 Thread Jim Webber
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?

2011-08-03 Thread Jim Webber
 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?

2011-08-03 Thread Jim Webber
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?

2011-08-01 Thread Jim Webber
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

2011-07-31 Thread Jim Webber
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

2011-07-31 Thread Jim Webber
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

2011-07-29 Thread Jim Webber
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

2011-07-29 Thread Jim Webber
 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

2011-07-29 Thread Jim Webber
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

2011-07-29 Thread Jim Webber
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

2011-07-28 Thread Jim Webber
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?

2011-07-28 Thread Jim Webber
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?

2011-07-28 Thread Jim Webber
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

2011-07-27 Thread Jim Webber
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

2011-07-27 Thread Jim Webber
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

2011-07-27 Thread Jim Webber
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?

2011-07-26 Thread Jim Webber
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

2011-07-25 Thread Jim Webber
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   2   3   >