2011-09-27 9 views
34

여러 크기를 보았고 너무 많은 문자를 저장할 공간이 너무 많은 MySQL 필드에 서버 메모리를 낭비하고 싶지 않습니다. 그들이 얻을 수있는 가장 큰 것은 무엇이며 이것은 언제까지 변할 것입니까?최대 용량은 얼마입니까? 페이스 북의 uid 길이?

+2

설명서에 지정된 제한이 없습니다. "그것은 변할 것입니까?"- 우리가 말하는 페이스 북입니다. 과감한 API 변경이 일반적입니다. 따라서 UID가 꽤 중심적이지만, FB * *를 변경하지 않는 것은 장담 할 것이기 때문에 언제든지 변경할 수 있습니다. 불투명 한 문자열로 처리하는 것이 좋습니다. – Piskvor

+3

MySQL의 경우 UNSIGNED BIGINT를 사용하십시오. 참조 : http://stackoverflow.com/questions/2172126/user-id-big-int-int-or-string – Costa

답변

63

데이터 형식을 너무 제한적으로 지정함으로써 정수 오버플로가 발생하는 방식, 정수 -> 문자열 마이그레이션 등이 발생합니다. 128b varchar의 몇 바이트를 스플래시하고 길을 혼란스럽게하지 마십시오. 사용자 기반이 너무 커져서 UID의 데이터 유형을 정리하면 얼마나 많은 바이트를 절약 할 수 있는지 걱정해야 할 때 큰 성공이라고 생각하면 문제는 해결할 수 있습니다.

짧은 대답, 나는 누군가가 당신의 질문에 대답 할 수있을 것이라고 생각하지 않는다. "이제까지"는 오랜 시간이었고, 그때까지 얼마나 많은 엔티티 페이스 북이 노예가 될 것인지를 안다.

나는 그것을 가장 잘 말한 사람의 말을 끝낼 것이다.

We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. 
—Donald E. Knuth 
+0

동의. 감사! =) –

+0

이것은 좋은 대답입니다. 방금이 정확한 문제가있었습니다. 이전에는 내 시스템의 모든 Facebook ID 길이가 10 자리를 넘지 않았지만 Facebook은 최근 ID를 15 자리 길이로 변경했습니다. 나는 같은 페이스 북 ID로 여러 사용자를 보았고 "ID"가 실제로 최대 정수 값이라는 것을 인식하지 못했습니다. 나는 필드를 varchar로 변경하고 후손을 위해 많은 패딩을 주었다. – Gavin

+0

+1 때문에 VARCHAR에 +1 : Javascript의 parseInt ("10208914157005637")가 10208914157005636을 반환합니다. –

2

어떻게 변하지 않을 것이라고 확신 할 수 있습니까? 더 나은 그것을 varchar하게하십시오.

-8

Facebook UID는 데이터베이스의 고유 한 식별자이므로 절대로 변경되지 않습니다. 그것이 바뀌면 페이스 북은 작동을 멈춘다.

+4

에 해당하지 않아도됩니다. 기존의 것을 업데이트하지 않고 영숫자 UID를 사용하는 것으로 전환하기로 결정했습니다. 물론 변경되지는 않을 것이지만 절대 절대로 말하지 마십시오. – ivanhoe

+2

이 게시물은 오래된 것으로 알고 있지만 Google에서 여기 가져 왔습니다. Facebook UID가 현재 변경됩니다! 모든 페이스 북 응용 프로그램은 다른 UID를 가진 동일한 사용자를 봅니다. AppId + UserId 조합은 페이스 북 앱이 처리하도록 설계되었으므로 절대로 변경해서는 안됩니다. 내 테스트에서는 사용자 ID가 17 자 길이임을 나타냅니다. 이 순간에 나는 facebook_id varchar (50)로 MySQL에서 선언하고있다. 다음 사용자의 ID가 무엇인지 알 수 없기 때문이다. :-영형 –

2

현재 페이스 북의 UID는 64 비트 정수이다. 하지만 언젠가는 변하지 않을 것이라고 보장 할 수는 없습니다.