sql >> Database teknologi >  >> RDS >> Mysql

MySQL-datatyper for kryptovaluta?

Der er en klart bedste mulighed ud af de tre, du foreslog (plus en fra kommentarerne).

STORT — bruger kun 8 bytes, men den største BIGINT har kun 19 decimaler; hvis du dividerer med 10, er den største værdi, du kan repræsentere, 9,22, hvilket ikke er nok rækkevidde.

DOBBELT — har kun 15–17 decimalcifre med præcision; har alle de kendte ulemper ved floating-point aritmetik.

VARCHAR — vil bruge 20+ bytes, hvis du har at gøre med 18 decimaler; vil kræve konstante string↔int-konverteringer; kan ikke sorteres; kan ikke sammenlignes; kan ikke tilføjes i DB; mange ulemper.

DECIMAL(27;18) – hvis du bruger MySQL, vil dette tage 12 bytes (4 for hver gruppe på 9 cifre ). Dette er en ganske rimelig lagerstørrelse og har tilstrækkelig rækkevidde til at understøtte mængder så store som en milliard eller så små som en Wei. Det kan sorteres, sammenlignes, tilføjes, trækkes fra osv. i databasen uden tab af præcision.

Jeg ville bruge DECIMAL(27,18) (eller DECIMAL(36,18) hvis du har brug for at gemme virkelig store værdier) for at gemme kryptovaluta pengeværdier.




  1. Indsæt et tidsstempel i databasen via ContentValues

  2. dublerede poster i SQL JOIN

  3. Spørgsmål om typer i MySQL

  4. Entity Framework + MySQL klassegenerering