sql >> Databasteknik >  >> RDS >> Oracle

Hur designar jag en tabell som kommer att lagra mycket stora data?

Den storleken placerar dig i VLDB-territoriet (mycket stora databaser). Saker och ting är fundamentalt annorlunda på den höjden.

Din fråga kan inte besvaras utan de fullständiga ansvarskraven för din ansökan. Du måste designa för prestanda med avseende på vad din applikation ska GÖRA med datan.

Mitt råd är att ta med någon ombord som har tidigare erfarenhet, annars är du nära 100% garanterad att misslyckas.

Om du använder Oracle ger det flera typer av partitionering som du kommer att vilja använda mycket noggrant. Du behöver partitioner för administrativa ändamål (flytta data, bygga index, återställa data) såväl som för frågeprestanda:

  • Omfångspartitionering, till exempel efter ett datumintervall
  • Listpartitionering, för att lagra delar av data, säg landsvis ('SE', 'US', 'GB')
  • Hash-partitionering. Lagrar dina data i en av partitionerna baserat på en hashfunktion
  • Eller någon kombination av ovanstående

Dessutom behöver du någon som vet hur man bygger och konfigurerar en monstermaskin med riktigt fantastisk I/O-genomströmning. Du behöver mer än 1 GB/s, vilket inte är särskilt billigt när du också behöver lagra 200 TB. Faktiskt, om dessa 200 TB endast är tabelldata, måste du dubbla eller tredubbla det för att kunna skapa index, aggregerade tabeller, säkerhetskopior etc.

Ledsen att jag inte kunde ge dig en lösning redo att användas, men jag ville försäkra dig om att du förstår att du inte bara bygger en databas som är över genomsnittet. Det är enormt!



  1. Hur får man data från olika associerade tabeller med containable i Cakephp?

  2. lång omröstningsinformation från mysql fungerar inte

  3. SQL Val av datum med maximal försäljning för varje avdelning

  4. exportera db-objekt för versionskontroll