2011-09-27 20 views
34

Tôi đã thấy nhiều kích thước và tôi không muốn lãng phí bộ nhớ máy chủ trên một trường MySQL đang đặt quá nhiều không gian cho quá nhiều ký tự. Những gì lớn nhất mà họ có thể nhận được và điều này sẽ thay đổi bao giờ?Giá thầu CPC chiều dài của một uid Facebook?

+2

Không có giới hạn nào được chỉ định trong tài liệu. Về "nó sẽ thay đổi bao giờ" - đó là Facebook chúng ta đang nói đến; thay đổi API mạnh mẽ là phổ biến. Vì vậy, mặc dù các UID là khá trung tâm, tôi sẽ không tin tưởng FB * không * để thay đổi nó, bất cứ lúc nào trong tương lai, bởi vì họ chỉ có thể cảm thấy như vậy. Xử lý tốt hơn nó như một chuỗi ký tự mờ đục. – Piskvor

+3

Đối với Mysql, sử dụng BIGSIGNED BIGINT; xem: http://stackoverflow.com/questions/2172126/user-id-big-int-int-or-string – Costa

Trả lời

63

Đây là cách số nguyên tràn, số nguyên - chuỗi di chuyển vv xảy ra, bằng cách làm cho các kiểu dữ liệu quá hạn chế. Gây ra trên một vài byte cho một varchar 128b và tiết kiệm cho mình những rắc rối xuống đường. Nếu cơ sở người dùng của bạn quá lớn đến mức bạn cần phải lo lắng về việc bạn sẽ tiết kiệm được bao nhiêu byte bằng cách crunching các kiểu dữ liệu của UID, hãy coi mình là một thành công lớn và đó là một vấn đề bạn sẽ vui lòng giải quyết.

Câu trả lời ngắn gọn, tôi không nghĩ rằng bất cứ ai sẽ có thể trả lời câu hỏi của bạn, "bao giờ" là một thời gian dài và ai biết được bao nhiêu thực thể mà facebook sẽ làm nô lệ.

Tôi sẽ kết thúc bằng câu trích dẫn từ một người đã nói tốt nhất;

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

Đồng ý. Cảm ơn! =) –

+0

Đây là câu trả lời hay. Tôi chỉ có vấn đề chính xác này. Trước đây tất cả các ID Facebook trong hệ thống của tôi không dài quá 10 chữ số, tuy nhiên gần đây Facebook đã thay đổi ID này thành các chữ số có chiều dài 15 chữ số. Tôi bắt đầu thấy nhiều người dùng có cùng một ID Facebook và không nhận ra "ID" thực sự là giá trị số nguyên tối đa. Tôi thay đổi lĩnh vực của tôi để một varchar và đã cho nó rất nhiều padding cho hậu thế. – Gavin

+0

+1 cho VARCHAR vì điều này: parseInt ("10208914157005637") trong Javascript trả về 10208914157005636 !!! –

2

Làm thế nào bạn có thể chắc chắn rằng điều này sẽ không bao giờ thay đổi? Tốt hơn làm cho nó một varchar.

-8

UID Facebook sẽ không bao giờ thay đổi vì đây là mã định danh duy nhất trong cơ sở dữ liệu của họ. Nếu thay đổi thì facebook sẽ ngừng hoạt động

+4

không đặt cược vào điều đó, chúng có thể quyết định chuyển sang sử dụng UID chữ và số mà không cần phải cập nhật những cái hiện có .. không có thay đổi gì, nhưng không bao giờ nói không bao giờ ... – ivanhoe

+2

Tôi biết đây là một bài đăng cũ, nhưng Google đã đưa tôi đến đây. UID của Facebook không thay đổi vào lúc này! Mỗi ứng dụng facebook đều thấy cùng người dùng với các UID khác nhau. Sự kết hợp AppId + UserId sẽ không bao giờ thay đổi, vì nó được thiết kế để được xử lý bởi các ứng dụng facebook, vì vậy bạn có thể dựa vào nó. Tại thời điểm này, các thử nghiệm của tôi chỉ định id người dùng là 17 ký tự. Tại thời điểm này, tôi tuyên bố nó trên MySQL là facebook_id varchar (50), vì bạn không bao giờ có thể biết id của người dùng tiếp theo có thể là gì. : -o –

2

Hiện tại, UID của Facebook là số nguyên 64 bit. Nhưng tôi không thể đảm bảo rằng sẽ không thay đổi một ngày.

Các vấn đề liên quan