sql >> Database >  >> RDS >> Mysql

Database-architectuur voor miljoenen nieuwe rijen per dag

Als je het hebt over grotere hoeveelheden gegevens, kijk dan eens naar MySQL-partitionering . Voor deze tabellen zou een partitie op gegevens/tijd zeker de prestaties ten goede komen. Er is een goed artikel over partitionering hier .

Kijk naar het maken van twee afzonderlijke databases:één voor alle onbewerkte gegevens voor de schrijfbewerkingen met minimale indexering; een tweede voor rapportage met behulp van de geaggregeerde waarden; met ofwel een batchproces om de rapportagedatabase bij te werken vanuit de database met onbewerkte gegevens, of gebruik replicatie om dat voor u te doen.

BEWERKEN

Als u echt slim wilt zijn met uw aggregatierapporten, maakt u een set aggregatietabellen ("vandaag", "week tot nu", "maand tot nu", "per jaar"). Aggregeren van onbewerkte gegevens tot "vandaag", dagelijks of in "realtime"; aggregatie van "per dag" tot "week tot nu toe" op een nachtelijke basis; van "week tot datum" tot "maand tot datum" op wekelijkse basis, enz. Bij het uitvoeren van zoekopdrachten voegt u (UNION) de juiste tabellen toe voor de datumbereiken waarin u geïnteresseerd bent.

BEWERK #2

In plaats van één tabel per klant, werken we met één databaseschema per klant. Afhankelijk van de grootte van de client, hebben we mogelijk meerdere schema's in een enkele database-instantie, of een speciale database-instantie per client. We gebruiken afzonderlijke schema's voor het verzamelen van onbewerkte gegevens en voor aggregatie/rapportage voor elke klant. We gebruiken meerdere databaseservers en beperken elke server tot een enkele database-instantie. Voor veerkracht worden databases over meerdere servers gerepliceerd en load-balanced voor verbeterde prestaties.



  1. MySQL – Wacht enkele seconden met SELECT SLEEP()

  2. ROW_NUMBER in SQL – Selecteer Topvoorbeeld in SQL en SQL Server

  3. Hoe dblink gebruiken (installeren) in PostgreSQL?

  4. Query om zowel de cumulatieve als de totale SUM over het salaris te berekenen