Hi Dennis,

As Neil mentioned a well configured batch inserter typically gives you
5x or higher write speed compared to normal writes running in a
transaction. Batch inserter is there to speed up initial import of
data but judging from the use-cases you presented you will be running
in normal transactional mode.

In a large transaction (thousands of node, relationship and/or
property creates/updates/deletes) you do about 10-100 writes per ms.
Running small write transactions with just a few updates in each
transaction the bottleneck will be the flush operations and then you
typically get around 200 transactions/s (numbers are very hardware
dependent).

Regarding contention, by default a write will not block a read but
writes have to wait for each other. Modifying a node's or
relationship's properties will acquire a write lock on that node or
relationship holding it until the transaction commits or gets rolled
back. Deleting or creating a relationship will acquire a write lock on
the relationship, the start node and the end node.

I think you are on the right track considering using Neo4j for this
problem :) If you could give us some more information about how
exactly the rating system is going to work we could advice you on how
to design your graph. For example:

Does getting the highest rated comments mean:

a) of all the latest comments since time X, give me the ones that had
the highest rating

or

b) for this topic / thread, only show comments with rating higher then X

Regards,
Johan

On Tue, Jun 16, 2009 at 4:59 PM, Neil Ellis<[email protected]> wrote:
> We've been doing an easy Gig per minute using the batch updater.
>
> All the best
> Neil Ellis
>
> (Sent from my iPhone)
>
>
> On 16 Jun 2009, at 15:50, Dennis Peterson <[email protected]>
> wrote:
>
>> Hi everybody, I just came across Neo4J, and while the read performance
>> sounds great, I haven't seen anything about write performance. I
>> suspect it's good, but wanted to ask.
>>
>> I'm considering using Neo for a threaded discussion forum. It
>> definitely sounds like it would retrieve a discussion tree very
>> quickly. Would it also be fast in posting new messages?
>>
>> Root comments would be attached to a topic, so by starting at the
>> topic's node you can get a list of the latest posts. It seems the way
>> to do this would essentially be to make a linked list of posts, and
>> with each new one, splice the new node in between the topic node and
>> the previous head of the list. Would there likely be undue contention
>> at that point?
>>
>> I'll also be rating comments, and would like to get a list of
>> highest-rated comments. For that, I would likely keep a list of them.
>> Keep the current low score somewhere, refresh it periodically with a
>> scan of the list, anything above the low score just add it to the
>> list, and periodically purge the excess.
>>
>> In a relational database of course it's easy, just sort by the
>> scores...but that score index is going to be constantly re-sorting
>> itself, so there's plenty going on, you just don't see it. I suspect
>> Neo would actually be more performant since you don't have to keep
>> *all* the comments sorted by score.
>>
>> Am I on the right track?
_______________________________________________
Neo mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to