I'm developing a Point of Sale system in Java, and I'm confused between using MySQL database and Neo4j for persistence, I like the flexibility of Neo4j in term of design but I don't have sufficient experience using it in real world projects, and I want to ask if Neo4j will be a appropriate for my use case?
Choosing a new technology "just because its there" is never a good idea.
What kind of data are you looking to store?
Is it just a registry of sales or is there a more complex model which you want to use?
Thanks @webtic for the response!
Actually the domain model of PoS system is more complex than just sales list, there will be Products, Inventory, Purchases, Suppliers, Promotions...etc, with all the relationships that could be between them. And what make me interested in a technology like Neo4J is the promises about high flexibility and agility of changes of the graph data model, that I thought it would very beneficial in term of domain model design. But as I don't have any real world experience using Neo4J and haven't seen/heard -IMH perspective- about similar projects (PoS Systems) using it makes me unsure if its appropriate for this use case!
When you want to model the complete sales system Neo4J is a great choice for sure.
My thumb of rule is that for anything slightly looking like a real world thing and not like a list in a spreadsheet the Graph is actually the model to prefer ;-)
That there are no known POS systems taking advantage of it even makes it more viable, before you know you can offer more functionality than other existing solutions. The parties selling the current systems have a solution what works for them. That probably keeps them too busy to look into new revolutionary approaches.
I took the dive a few years back and scrapped all my relational habits. Found Cypher relatively easy to learn. There will be frustration but if it doesn't hurt you are not learning ;-)
You will need some glue between Cypher and the user interfaces, I used Python for that because I was very familiar with that language. It helps when you are confident on one tier while learning a new one
Thanks @webtic for your motivational response, I appreciate it
I will do my best to learn Cypher, and graph manipulation to get the most of them!
Regarding the "the glue" between Cypher and other application layers, I'm actually familiar with Java stack, and planning to use Spring Data Neo4j to implement the data layer.