Pendekatan terbaik untuk database string panjang

12

Saya perlu menyimpan pertanyaan dan jawaban dalam database. Pertanyaannya adalah satu atau dua kalimat, tetapi jawabannya akan panjang, setidaknya satu paragraf, mungkin lebih.

Satu-satunya cara saya tahu tentang melakukan ini sekarang adalah database SQL. Namun, saya tidak merasa ini adalah solusi yang baik karena sejauh yang saya lihat, basis data ini tidak digunakan untuk data jenis atau ukuran ini. Apakah ini cara yang benar untuk pergi atau apakah ada cara yang lebih baik untuk menyimpan data ini? Apakah ada cara yang lebih baik daripada menyimpan string mentah?

gsingh2011
sumber
Sudahkah Anda melihat ke pencarian teks lengkap? en.wikipedia.org/wiki/Full_text_search
FrustratedWithFormsDesigner
Silakan tentukan "long" 1k, 5M, 1GB ??
James Anderson
mengapa Anda tidak menyukai string "mentah"? Apakah data sebenarnya berupa string, atau apakah itu data terstruktur? Apakah Anda berencana untuk melakukan sesuatu dengan itu yang tidak akan berhasil untuk string? Tidak ada alasan yang jelas dalam pertanyaan Anda mengapa database tidak sesuai. Sama dengan string (atau mungkin CLOBS jika terlalu besar dan tergantung pada database apa yang Anda gunakan).
psr
Saya merujuk pada beberapa cara cerdas untuk menyimpannya, mungkin melalui beberapa jenis kompresi, bukan string plaintext. Saya khawatir pada dasarnya ukuran database di sini.
gsingh2011
1
RDBMS mana yang Anda gunakan? Oracle memiliki beberapa dukungan yang sangat baik untuk penanganan dan pencarian teks.
Matius Flynn

Jawaban:

19

Mongodb itu hebat, tapi Anda tahu SQL. Tidak ada yang salah dengan menyimpan jawaban panjang di bidang. Anda dapat menyimpan gambar atau bahkan file dalam SQL. Saya pikir ukuran bidang maks adalah 2GB.

Saya hampir positif jawaban ini sendiri disimpan di bidang tabel di suatu tempat.

Adapun ribuan mereka, tidak ada masalah. Bahkan jutaan seharusnya tidak menjadi masalah. Anda dapat mempertimbangkan menggunakan pengindeksan teks lengkap jika Anda mencari kata kunci atau sesuatu di bidang itu. Tetapi saya mencoba untuk tidak mengoptimalkan sampai saya melihat masalah. Komputer murah, penyimpanan pada dasarnya gratis.

DanielEli
sumber
11
+1 untuk tidak mengoptimalkan sampai Anda benar-benar memiliki masalah!
GrandmasterB
4
Ukuran bidang maks tidak ditentukan dalam ANSI SQL, itu tergantung pada DBMS (dan biasanya beberapa faktor lain, seperti charset, tipe data kolom, mesin penyimpanan, OS, dll.).
tdammers
6

Tidak ada masalah menyimpan teks panjang di database (SQL atau yang lain). Itulah bagaimana sebenarnya setiap entri blog (pikirkan Wordpress), artikel berita, dan posting forum (pikirkan phpbb) di internet disimpan. Saya tidak tahu detail spesifik pengaturan pertukaran stack, tapi saya yakin pertanyaan Anda juga disimpan dalam database. Sebagian besar database SQL memiliki TEXTtipe bidang atau yang setara hanya untuk tujuan menyimpan data tekstual dengan panjang apa pun. Banyak juga yang memiliki sistem pencarian teks lengkap.

Buat keputusan teknis berdasarkan pengetahuan dan pemahaman teknis, bukan perasaan.

GrandmasterB
sumber
5

Ya itu cara yang benar untuk pergi. Menyimpan string dalam database SQL adalah apa yang ingin Anda lakukan. Salah satu tabel saya di DB memiliki lebih dari satu pertunjukan data plaintext dan berkinerja baik.

Jika Anda khawatir tentang ruang penyimpanan - ingat bahwa itu murah!

Jika Anda khawatir tentang kinerja - maka jangan khawatir, database yang baik dapat meningkatkan (atau memperkecil) seberapa banyak data yang ingin Anda masukkan ke dalamnya.

Hal terakhir yang ingin Anda lakukan adalah mulai mengoptimalkan sekarang untuk kepentingan itu (mengompresi string sebelum Anda memasukkannya ke dalam DB atau sesuatu yang gila) sebelum itu benar-benar menjadi masalah. Anda hanya memberi diri Anda lebih banyak pekerjaan.

Rocklan
sumber
2

Tidak ada masalah menyimpan string besar atau data biner. Saya bekerja dengan database dengan lebih dari satu terabyte data biner dan bekerja dengan sangat baik (postgres) dan satu-satunya hal yang buruk adalah waktu cadangan.

Pertanyaan besarnya adalah: "Apakah Anda perlu melakukan pencarian konstan dalam teks ini?"

Jika Anda akan mencari string dalam teks, Anda dapat berpikir dalam satu solusi indeks:

Rodrigo Menezes
sumber