I'm delevoping an application where people with cognitive disabilities can look at pictures, watch videos,... and can interact with them. User have profiles with certain info(e.g. name, interests) and there are sessions, where a user can look at those media files. With neo4j i want to implement a simple recommender system to recommend certain media files based on their interests in certain topics and the shown interest during a session.
I never use Neo4j before and so i'm a little bit unsure whether to only use neo4j to store all the data (patients, sessions, items, interests,...) or if there are some disadvantages?
I'd be really glad if someone could help me with that
I don't intend to save files in the database, but just the path to the files, so that shoudn't be a problem.
The important nodes for my recommender systems are person, item( info about media file) and tag (e.g. cat, holiday,...). A person rates an item and a person has interest in a tag. And a tag descripes the tag.
beside that, i need to store more info about the person, sessions, tags and items. so items can have multiple tags but there will also be an classification label for images (e.g. cat, dog, house). I want to store how long a session lasted, what pictures the person was most interested in...
Thats why i'm thinking about whether to store all data in neo4j or have a neo4j database for the recommender system and a sql database for the other data
I think neo4j not only is good for entity relation type problems, but also great with respect to is schemaless characteristic. Actualy you do not need a predefined schema. Even more important, you can add properties to existing nodes or relations at your guise. If you stick to non strongly typed languages such as javascript this becomes a real strong combination. In addition, an important number of very advanced graph analytical algorithms can help you avoid home grown complex algorithms.
As an alternative architecture you might envisage an RDF based aproach. With neo4j you have a rock solid, fast database.