MySql'de çok sayıda URL'yi saklamak ve sütunda benzersiz bir dizin oluşturmak istiyorum. Eğer utf8 sütununu yaparsam, bazı URL'leri tutmak için yeterli olmayan bir varcharla (333) sınırlı olacağım. Sütunu latin1 olarak bildirirsem, o zaman tam 1000 karakter elde ederim (buna çok ihtiyacım olduğunu düşünmüyorum). Bununla birlikte, URL'yi kodlamalıyım ve her zaman kodlanmış URL ile çalışırken tutarlı olmalıyım. Büyük URL kümelerini yönetmenin daha iyi bir yolu var mı?Mysql'de URL'leri depolamanın en etkili yolu?
cevap
bir şey. Bu, daha sonra, belirli bir ana bilgisayar için tüm URL'leri almanın yanı sıra dize uzunluğu endişelerinize yardımcı olmanız için de yararlı olabilir. Örneğin
: Bunu yapmak için
PROTOCOLS
-----------------------
PROTOCOL_ID INTEGER
PROTOCOL VARCHAR(10) (i.e., http, https, ftp, etc.)
HOSTS
-----------------------
id BIGINT
hostname varchar(256)
URL
-----------------------
PROTOCOL INTEGER FK to PROTOCOLS
HOSTNAME BIGINT FK to HOSTS
QUERY_STRING VARCHAR(333)
i'nin çarpışma kontrolü ile bir karma algoritması kullanarak biliyorum en yaygın uygulama, sadece URL'ler üzerinde çok düşük çarpışma üretecek hızlı bir şekilde kodlama çeşit kullanın.
Tüm URL'ler boyunca aynı olacağını bildiğiniz parçaları (yani HTTP: //, www, vs ...) doğramaya çalışın. URL'ler alanınızın bir parçasıysa, bunu da kesin.
Aksi takdirde, ben sorunu yeniden düşünmek ve denemek ve başarmak için çalışıyoruz ne olursa olsun başarmak için farklı bir yol bulmak istiyorum. Benzersiz bir URL kümesinin gerçekten başka bir sorunu çözdüğünü varsayalım. Eğer ayrı tabloda URL'nin ana makine adı ve protokol kısmını saklamak ve bir anahtar yoluyla başvuruda bulunuyor düşünmek olabilir
Onun URL'ler depolamak neden hakkında yanlış varsayımlar muhtemelen ne yapıyoruz. Muhtemelen www, vb. Kesmek/güvenli değil. –
Bir örnek verebilir misiniz? Http ve www'yi kaldırarak orijinal URL'yi kolayca yeniden üretebilirsiniz, tanım bütünlüğünü etkilemez ... Bunu açıklayabilir misiniz? –
Bu yanlış. Http://www.foo.com ve http://foo.com'un aynı URL'ye başvurduğuna dair bir garanti yoktur. Https://www.foo.com ve http://foo.com olsun. –
üç iyi yolu:
1) yerine VARCHAR METİN kullanın. benzersizliği sağlamak için, bir MD5() veya SHA1() karma değerini saklamak ve bir UNIQUE veya PRIMARY dizini eklemek için ayrı bir VARCHAR sütunu oluşturmanız gerekir. Bu URL almak için ek bir disk arama talihsiz sonucuna sahiptir, ancak kullanım durumunuza bağlı olarak Tamam olabilir.
2) ikili harmanlama ile VARCHAR ve sıkıştırmak kullanarak URL'yi() sıkıştırmak. İlk iki yazarak gibi
3) Üçüncü unuttun. grr ...
+1, kişisel olarak # 1 ile giderdim (URL’nin değil, URL’nin karmasına benzersiz sınırlar koyma kendisi) bulunur. – nathan
Bu nedenle, VARCHAR URL sütununu birincil olarak ayarlamak yerine karma için başka bir sütun oluşturmalıyım? – User
İki ayrı öneride bulundum. Birinin diğerinden daha iyi olduğunu söylemedim. Kullanım durumunuz için en uygun olanı seçmelisiniz. – longneck
- 1. En etkili yolu
- 2. En etkili yolu
- 3. En etkili yolu
- 4. Bir JSON dizesini Cassandra sütununda depolamanın etkili yolu?
- 5. DateTime'ı çerezlere depolamanın en iyi yolu nedir?
- 6. Boş ListBuffer oluşturmanın en etkili yolu nedir?
- 7. Aşağıdaki dizeyi biçimlendirmenin en etkili yolu nedir?
- 8. Etiketleri bir sql sunucu tablosunda depolamanın en iyi yolu?
- 9. Greasemonkey tabanlı tarayıcı için veri depolamanın en iyi yolu?
- 10. Çok boyutlu NSMutableArrays'i depolamanın ve almanın en iyi yolu nedir?
- 11. En etkili yol
- 12. daha etkili yolu
- 13. MIPS ifadesini hesaplamanın etkili yolu
- 14. Varlık Çerçevesi. en etkili yolu görünüyor bazı SQL belgeleri okuyarak
- 15. Depolanmış JPG dosyasını ImageView'a yüklemenin en etkili yolu nedir?
- 16. Bu iki foreach döngüsünü yapmanın en etkili yolu nedir?
- 17. SQL bağlantı dizesi kullanılabilirliğini sınamanın en etkili yolu
- 18. Bir kontrolün değerine erişmenin en etkili yolu hangisidir?
- 19. PySpark'ta sıralanmış bir küçülme yapmanın en etkili yolu nedir?
- 20. Opengl'de voksel (küp) çekmenin en etkili yolu nedir?
- 21. Temiz git sanal alanını elde etmenin en etkili yolu nedir?
- 22. Saf javascript kullanarak stili ayarlamanın en etkili yolu?
- 23. Python'da bir ağacı hareket ettirmenin en etkili yolu nedir?
- 24. Gps dosyalarından google haritalarda rota oluşturmanın en etkili yolu nedir?
- 25. En etkili yolu sitemde profillere bir "son etkinlik" sekmesine yapıyorum
- 26. Jquery sayfalama ve geçmiş eklentilerini birlikte kullanmanın en etkili yolu
- 27. Bir zaman (veya zaman aralığı) doldurmanın en etkili yolu nedir?
- 28. Java'da sıralanmamış bir ikili ağaç oluşturmanın en etkili yolu nedir?
- 29. Liste görünümünü doldurmanın etkili yolu
- 30. Symfony'de özel yardımcı programları ve yardımcıları depolamanın simetri yolu 2
Bazı sorgu dizeleri uzun olabilir: http://www.foo.com/index.jsp? A = 1 & b = 2 & c = 3 ..................... .......................... & z = uuuuggggghhhh –
Anlaşıldı. Bir longneck'in bir metin alanı kullanma önerisi yoluna gitmek isteyebilirsiniz. Daha fazla URL'lerin uzunluğuna yardımcı olmanın yan etkisi ile "büyük URL kümelerini yönetmenin daha iyi bir yolu var" şeklinde geliyordum.URL'leri nasıl kullandığınıza bağlı olarak yapmak isteyebileceğiniz bir şey de, DOMAIN tablosuna bir domain_key sahip HOSTS tablosuyla ana bilgisayar adı ve etki alanına bölünmesidir. Bu, bir alan adındaki önemsiz tüm URL'leri bulmayı sağlayabilir. –
URL'leri çok uzun sürebilir - http://www.boutell.com/newfaq/misc/urllength.html – cjroth