Birden çok boyut gördüm ve çok fazla karakter için çok fazla yer ayıran bir MySQL alanında sunucu belleğini boşa harcamak istemiyorum. Elde edebileceği en büyük şey bu hiç değişecek mi?Maks. bir Facebook uid uzunluğu?
cevap
Tamsayı taşması, tamsayı -> dize geçişleri vb., Veri türlerini çok kısıtlayıcı hale getirerek bu şekilde gerçekleşir. 128b'lik bir varchar için birkaç bayta dışarı sıçrayın ve kendinizi yolun aşağısına saklayın. Kullanıcı tabanınız o kadar büyük olur ki, UID'lerin veri tiplerini sıkıştırarak kaç bayttan tasarruf edeceğiniz konusunda endişelenmeniz gerekiyorsa, kendinizi büyük bir başarı olarak düşünün ve bu sizin için mutlu olacak bir problemdir.
Kısa cevap, Kimsenin sorunuzu cevaplayabileceğini düşünmüyorum, “hiç” uzun bir zaman ve facebook kaç kölelik sonradan köle olacak biliyor.
En iyi söyleyenlerden bir alıntı ile bitireceğim;
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.
—Donald E. Knuth
Anlaşıldı. Teşekkürler! =) –
Bu iyi bir cevap. Sadece bu kesin problemi yaşadım. Önceden sistemimdeki tüm Facebook kimlikleri en fazla 10 basamak uzunluğundaydı, ancak son zamanlarda Facebook bunu değiştirdi, böylece ID'ler 15 basamak uzunluğunda. Aynı Facebook kimliğine sahip birden fazla kullanıcı görmeye başladım ve "ID" nin aslında tamsayı değeri olduğunu anlamadım. Tarlamı bir varchar olarak değiştirdim ve bol bol porsiyon verdim. Bunun için VARCHAR için – Gavin
+1: Javascript parseInt ("10208914157005637") 10208914157005636 döndürür! –
Bunun asla değişmeyeceğinden nasıl emin olabilirsiniz? Daha iyi bir varchar yap.
Facebook UID hiçbir zaman kendi veritabanında benzersiz bir tanımlayıcı olduğundan değişmeyecektir. Eğer değiştiyse, facebook
bunun üzerine bahse giremezler, ör. varolanları güncellemek zorunda kalmadan alfanümerik UID'leri kullanmaya karar verdiler. Tabii ki olası bir değişiklik değil, asla asla deme ... – ivanhoe
Bunun eski bir yazı olduğunu biliyorum, ancak Google beni buraya getirdi. Facebook UID'ler şu anda değişiyor! Her facebook uygulaması aynı kullanıcılara farklı UID'leri görüyor. AppId + UserId kombinasyonu asla facebook uygulamalarında kullanılmak üzere tasarlandığından değiştirilmemelidir; Şu anda, testlerim kullanıcı kimliğini 17 karakter uzunluğunda gösteriyor. Şu anda, bir sonraki kullanıcının kimliğinin ne olabileceğini asla bilemeyeceğinizden, facebook_id varchar (50) olarak MySQL'de bildiriyorum. :-O –
çalışmasını durduracaktır. Şu anda, Facebook UID'leri 64 bit tamsayıdır. Ama bir gün değişmeyeceğini garanti edemem.
Dokümanlarda belirtilen hiçbir sınır yoktur. “Hiç değişecek mi?” Diye konuştuğumuz Facebook; Önemli API değişiklikleri yaygındır. Bu yüzden, UID'ler oldukça merkezi olsalar da, FB * 'nin * gelecekteki herhangi bir zamanda değişmesi için güvenmeyeceğim, çünkü sadece böyle hissedebilirler. Onu opak bir karakter dizisi olarak ele alsanız iyi olur. – Piskvor
Mysql için UNSIGNED BIGINT kullanın; bkz: http://stackoverflow.com/questions/2172126/user-id-big-int-int-or-string – Costa