Hi!

I am working on a project where a graph database might be a good fit for 
data storage.

Such databases are completely new to me, so I'm not sure they would be the 
right approach. If so, I would also appreciate some input on the data model 
I have come up with.


*What do I want to store?*

Examples of things I want to store from the perspective of a user:
- store that I am grateful to person P1 because of reason R1, R2 and R3.
- store that I did activity A1 with person P1 and P2, that I have a 
positive memory PM1 about it and that we took pictures PI1 and PI2.
- store that person P1 is an important person for me.
- store that person P1 is a person that I would like to meet more often.
- store that I like activity A1 because I get the feeling F1 when I do it, 
and because it connects to a personal value PV1 of mine.
- store that activity A1 is a preferred activity and that it needs planning 
beforehand.

So, as you can see, a few entities in our data model are: person, activity, 
image, personal value, feeling, memory and many more.

Each entity can have relationships with many other entities. Also, some 
entities like person or activity can have multiple tags like: preferred, 
most_important, spontaneous, planned, look_forward_to, inspiring, and so on.


*What do I want to query?*

I want to query things like:
- give me a person who I have done at least 2 activities with
- give me a person who I am grateful for for at least 2 reasons, and give 
me those reasons
- give me a preferred activity that I have not done in a while
- give me a personal value that is not connected to any activity

I also want to perform many updates:
- mark this existing person as important
- mark this existing activity as spontaneous and preferred
- connect this existing activity with this existing personal value


The data of each user is going to be completely independent of the data 
from other users, meaning that entities (nodes) from a user will not be 
connected to entities from other users. There will be a few thousand 
entities per user.


With this in mind, I have a bunch of *questions* for you:
- are graph databases a good fit for the problem I am trying to solve?
- if so, could neo4j be a good fit too? If not, what other backends could I 
look at?

A few more questions related to neo4j and my data model:
- since I want to tag my entities in multiple ways (an entity can be: 
activity, preferred, spontaneous), and I want to be able to query things 
like an activity who is preferred and spontaneous, should I use labels to 
store my tags?
- how do I store the nodes so I know to what user they belong? do I tag 
them all with the user_id? Or do I create a user node and connect that one 
to all other nodes belonging to that user?
- is there any library to easily and clearly visualize both the labels and 
the properties of each node?

Thank you so much, any insights are greatly appreciated!

-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to