2011-07-27 10 views
6

Potrzebuję przechowywać tweety twitter numerów identyfikacyjnych, a te liczby są duże, jak 16 cyfr dużych. Zastanawiałem się, czy nie używać biginta w mysql do ich przechowywania? czy jest inna alternatywa. Ile cyfr może obsłużyć bigint? Próbowałem spojrzeć na specyfikacje, ale nie było to jasne. Jakie są ograniczenia przechowywania tak dużych liczb w tabeli mysql? dzięki!bigint w mysql

+2

Może brzmieć idiotycznie, ale nie masz wpływu na to, czy Twitter używa numerów dla id, czy jutro będzie używać ciągów. Najpierw pójdę na bezpieczną pozycję, jeśli nie będę mieć kontroli nad typem danych, i idę na sznurku ... Ale dociera do ciebie daleko. – Wrikken

Odpowiedz

6

Bigint jest 64-bitowy, który przechodzi -9223372036854775808 do 9223372036854775807 podpisany, i 0 do 18446744073709551615 niepodpisane, zgodnie z the mysql docs.

2

od instrukcji MySQL

BIGINT [(M)] [znaku] [ZEROFILL]

dużej liczby całkowitej. Podpisany zakres jest -9223372036854775808 do 9223372036854775807. niepodpisany zakres wynosi od 0 do 18446744073709551615

http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

+0

Jest to definicja tego, czym jest typ BIGINT, ale nie odpowiada na pytanie, co powinien używać PO i czy powinien używać BIGINT, czy też nie. – thomasrutter

4

Nawet jeśli obecnie identyfikatory zmieścić się na BIGINT (64bit podpisany), gdy pokolenie ID jest poza kontrolą , bezpieczniej jest przechowywać jako ciąg tekstowy.

Nie tylko może wzrosnąć jeszcze bardziej (cóż, jest mało prawdopodobne, aby kiedykolwiek przelał się BIGINT); ale możesz później dodać prefiks i przechowywać identyfikatory z innych systemów w tej samej tabeli. A może niektórzy przyszli API mogą używać nieliczbowych identyfikatorów

+0

+1 za sugestię. –

+0

Jeśli nie chcesz wykonywać żadnej z wielu rzeczy w mysql, które są znacznie szybsze przy użyciu liczb całkowitych niż ciągi znaków ... – DougW

+0

... które faktycznie byłyby przydatne operacje na identyfikatorach ... takich jak? –

1

BigInt jest drogą do zrobienia. Dla tego nie ma bardziej wydajnego typu danych. BigInt może przechowywać nubery do 2^64, czyli około 25 cyfr.

2

Myślę, że w odniesieniu do wartości Wrikkensaid warto byłoby przechowywać dwa identyfikatory.

  • string (VARCHAR) rzeczywistego ID tweet więc trzeba, że ​​(i tylko w przypadku gdy zdecydujesz się iść do znaków, jak również).

  • INT że używasz do wewnętrznej rzeczy takie jak łączących tabelach

2

Mówisz używasz PHP. Musisz pamiętać, że wbudowany numeryczny typ PHP zależy od komputera, a na x86 używa tylko 32-bitowych wartości całkowitych. Wartości, które nie są liczbami całkowitymi lub są poza zakresem 32-bitowym, będą przechowywane za pomocą typów zmiennoprzecinkowych, które nie są zaprojektowane tak, aby były dokładne z ostatnią cyfrą dla bardzo dużych liczb.

Chociaż istnieją biblioteki dla PHP, które pozwalają na przenośne duże liczby całkowite, bez względu na twoją architekturę, prawdopodobnie byłoby łatwiej utrzymać pole id jako ciąg przez cały czas. Ponieważ nie będziesz wykonywać żadnej arytmetyki, po prostu traktując to jako identyfikator, nie powinno to być dużym problemem.

Powiązane problemy