Uzun dizelerden oluşan bir veritabanı için en iyi yaklaşım


12

Soruları ve cevapları bir veritabanında saklamam gerekiyor. Sorular bir ila iki cümle olacaktır, ancak cevaplar uzun, en azından bir paragraf, muhtemelen daha fazla olacaktır.

Bunu şu anda yapmanın tek yolu bir SQL veritabanı. Ancak, bunun iyi bir çözüm olduğunu düşünmüyorum çünkü gördüğüm kadarıyla bu veritabanları bu tür veya boyuttaki veriler için kullanılmıyor. Bu doğru bir yol mu yoksa bu verileri depolamanın daha iyi bir yolu var mı? Ham dizeleri depolamaktan daha iyi bir yol var mı?



Lütfen "uzun" 1k, 5M, 1GB tanımlayın ??
James Anderson

neden "ham" dizeleri sevmiyorsun? Veriler gerçekte dizeler mi, yoksa yapılandırılmış veriler mi? Bununla birlikte, dizeler için işe yaramayacak bir şey yapmayı planlıyor musunuz? Sorunuzda, bir veritabanının neden uygun olmadığı konusunda açık bir neden yoktur. Aynı dizeleri (veya çok büyükse CLOBS ve kullandığınız veritabanına bağlı olarak).
psr

Onları saklamanın bazı akıllı yollarından bahsediyordum, belki de düz metin dizeleri değil, bir tür sıkıştırma yoluyla. Burada veritabanının büyüklüğünden endişe duyuyorum.
gsingh2011 23:12

1
Hangi RDBMS'yi kullanıyorsunuz? Oracle'ın metin işleme ve arama konusunda mükemmel bir desteği var.
Matthew Flynn

Yanıtlar:


19

Mongodb harika, ama SQL'i biliyorsun. Tarlalarda uzun cevaplar depolamanın yanlış bir yanı yok. Görüntüleri ve hatta dosyaları SQL'de saklayabilirsiniz. Bence maksimum alan boyutu 2GB.

Bu cevabın kendisi bir yerde bir masa alanında saklandığına inanıyorum.

Binlerce varlığına gelince, sorun değil. Milyonlarca insan bile sorun olmamalı. Alanda anahtar kelimeler veya başka bir şey arıyorsanız, tam metin dizine eklemeyi kullanabilirsiniz. Ama bir sorun görene kadar optimizasyon yapmamaya çalışıyorum. Bilgisayarlar ucuzdur, depolama temelde ücretsizdir.


11
Sorunu çözene kadar optimizasyonda +1!
GrandmasterB

4
Maksimum alan boyutu ANSI SQL'de belirtilmez, DBMS'ye bağlıdır (ve genellikle karakter kümesi, sütun veri türü, depolama motoru, işletim sistemi vb. Gibi birkaç faktör).
tdammers

6

Veritabanlarında uzun metin saklamakta sorun yoktur (SQL veya başka türlü). İşte internetteki her blog girişi (Wordpress düşünün), haber makalesi ve forum gönderisi (phpbb düşünün) nasıl saklanır. Yığın değişimi kurulumunun belirli ayrıntılarını bilmiyorum, ancak eminim sorunuz da bir veritabanında saklanıyor. Çoğu SQL veritabanında TEXT, herhangi bir uzunluktaki metin verilerinin depolanması amacıyla bir alan türü veya eşdeğeri bulunur. Birçoğu ayrıca tam metin arama sistemlerine sahiptir.

Duygulara değil, teknik bilgi ve anlayışa dayalı teknik kararlar verin.


5

Evet doğru yol. Dizeleri bir SQL veritabanında depolamak istediğiniz şeydir. DB tablolarımdan birinde düz metin verileri bir konser var ve iyi çalışıyor.

Depolama alanından endişe ediyorsanız, bunun ucuz olduğunu unutmayın!

Performans konusunda endişeliyseniz - endişelenmeyin, iyi bir veritabanı, içine atmak istediğiniz veriye göre ölçeklenebilir (veya büyüyebilir).

Yapmak istediğiniz son şey, aslında bir sorun haline gelmeden önce (dizeleri DB veya başka bir şey içine koymadan önce sıkıştırmak) için şimdi optimize etmeye başlamaktır. Sadece kendine daha fazla iş veriyorsun.


2

Büyük dizeleri veya ikili verileri saklamakta sorun yoktur. Birden fazla terabayt ikili veri içeren bir veritabanı ile çalıştım ve çok iyi çalıştım (postgres) ve tek kötü şey yedekleme süresiydi.

Büyük soru şudur: "Bu metinde sürekli aramalar yapmanız gerekecek mi?"

Metinde dizeler arayacaksanız, tek bir dizin çözümünde düşünebilirsiniz:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.