Squeeze the hell out of the system you have
The bit on the database performance issues leads me to my hottest, flamiest take for new projects:<p>- Design your application&#x27;s hot path to never use joins. Storage is cheap, denormalize everything and update it all in a transaction. It&#x27;s truly amazing how much faster everything is when you eliminate joins. For your ad-hoc queries you can replicate to another database for analytical purposes.<p>On this note, I have mixed feelings about Amazon&#x27;s DynamoDB, but one things about it is to use it properly you need to plan your use first, and schema second. I think there&#x27;s something you can take from this even with a RDBMS.<p>In fact, I&#x27;d go as far to say as joins are unnecessary for nonanalytical purposes these days. Storage is so mind booglingly cheap and the major DBs have ACID properties. Just denormalize, forreal.<p>- Use something more akin to UUIDs to prevent hot partitions. They&#x27;re not a silver bullet and have their own downsides, but you&#x27;ll already be used to the consistently &quot;OK&quot; performance that can be horizontally scaled rather than the great performance of say integers that will fall apart eventually.<p>&#x2F;hottakes<p>my sun level take would be also to just index all columns. but that&#x27;ll have to wait for another day.