

Use UUIDS always for Auto increments for MYSQL. Never or very rarely use Auto-increments. ( the moment you reach 3 join stop there and try to un-normalized database.ģ. Use Mysql only for storage only and for realtime updates we recommend MongoDB.Ģ.

When using MySQL, i would recommend doing the following:ġ. We build our product which is in the same lines as yours but we have used a combination of Mysql and MongoDB. It feels like you have most experience with SQL/RDBMS technologies, so for the simplest learning curve, and if your application fits it, then I'd personally start by looking at AWS Aurora. RDBMS/SQL stores are great for having as many indexes as you want, other than the slow-down in write speed, whereas databases like Amazon DynamoDB provide blisteringly fast read/write performance, but are very limited on key indexing capabilities. MongoDB, with its document-store type solution is a very different model to key-value-pair stores (like AWS DynamoDB), or column stores (like AWS RedShift) or for more complex data relationships, Entity Graph Stores (like AWS Neptune), to stores designed for tokenisation and text search (ElasticSearch) etc.Īlso critical in all this is how many items you believe you need to index by. however please don't fall into the trap of considering 'NoSQL' as being single category. Your question regards 'Relational or not' is obviously key, and you need to consider both your required data structure, as well as the ACID requirements of your application model, as well as the non-functional requirements in terms of scalability, resilience, whether you want security authorisation at the highest application tier, or right down to 'row' level in the database, etc. Particularly if you are planning to host in either AWS or Azure, then your first point of call should be the PaaS (Platform as a Service) databases supplied by these vendors, as you will find yourself requiring a lot less effort to support them, much easier Disaster Recovery options, and also, depending on how PAYG the database is that you use, potentially also much cheaper costs than having a dedicated database server. The most important question is where are you planning to host? On-premise, or in the cloud.
