Найкращий підхід для бази даних довгих рядків


12

Мені потрібно зберігати питання та відповіді в базі даних. Питання будуть від одного до двох речень, але відповіді будуть довгими, принаймні абзацом, ймовірно, і більше.

Єдиний спосіб, про який я зараз це роблю, - це база даних SQL. Однак я не вважаю, що це гарне рішення, оскільки, наскільки я бачив, ці бази даних не використовуються для даних такого типу чи розміру. Це правильний шлях чи є кращий спосіб зберігання цих даних? Чи є кращий спосіб, ніж зберігати сирі рядки?


Ви заглянули в повнотекстовий пошук? en.wikipedia.org/wiki/Full_text_search
FrustratedWithFormsDesigner

Будь ласка, визначте "довгі" 1k, 5M, 1GB ??
Джеймс Андерсон

чому ти не любиш "сирі" струни? Дані насправді є рядками або це структуровані дані? Ви плануєте зробити з ним щось, що не спрацювало б для рядків? У вашому запитанні немає жодної чіткої причини, чому база даних не підходить. Те саме з рядками (або, можливо, CLOBS, якщо вони занадто великі і залежно від того, яку базу даних ви використовуєте).
psr

Я мав на увазі якийсь розумний спосіб їх зберігання, можливо, через якийсь тип стиснення, а не рядки в простому тексті. Мене хвилює істотний розмір бази даних тут.
gsingh2011

1
Які RDBMS ви використовуєте? Oracle має чудову підтримку для обробки та пошуку тексту.
Меттью Флінн

Відповіді:


19

Mongodb чудовий, але ви знаєте SQL. Немає нічого поганого в тому, щоб зберігати довгі відповіді в полях. Ви можете зберігати зображення або навіть файли в SQL. Я думаю, що максимальний розмір поля - 2 Гб.

Я майже впевнений, сама відповідь зберігається десь у полі таблиці.

Щодо їх тисячі, то жодних проблем. Навіть мільйони не повинні бути проблемою. Ви можете розглянути можливість індексації повного тексту, якщо ви шукаєте в полі ключові слова чи щось. Але я намагаюся не оптимізувати, поки не побачу проблеми. Комп'ютери дешеві, зберігання в основному безкоштовне.


11
Позначайте +1, щоб не оптимізувати, поки у вас справді не виникне проблема!
GrandmasterB

4
Максимальний розмір поля не визначений у ANSI SQL, він залежить від СУБД (і зазвичай від кількох інших факторів, таких як діаграма, тип даних стовпців, механізм зберігання даних, ОС тощо).
tdammers

6

Зберігання довгого тексту в базах даних (SQL чи іншим способом) не виникає. Ось як зберігається практично кожен запис у блозі (думаю Wordpress), статті новин та повідомлення на форумі (думаю, phpbb) в Інтернеті. Я не знаю конкретних деталей налаштування обміну стеками, але я впевнений, що ваше питання також зберігається в базі даних. Більшість баз даних SQL мають TEXTтип поля або еквівалент лише для зберігання текстових даних будь-якої довжини. У багатьох також є повноцінні системи пошуку тексту.

Приймайте технічні рішення на основі технічних знань та розуміння, а не почуттів.


5

Так, це правильний шлях. Збереження рядків у базі даних SQL - це те, що ви хочете зробити. В одній з моїх таблиць у БД є надмір даних простий текст, і він працює чудово.

Якщо ви турбуєтесь про місце для зберігання - пам’ятайте, що це дешево!

Якщо ви турбуєтесь про ефективність роботи - тоді не хвилюйтеся, хороша база даних може збільшити масштаб (або зменшити) скільки завгодно даних, які ви хочете вкинути.

Останнє, що ви хочете зробити, - це почати оптимізувати саме заради цього (стискання рядків перед тим, як вставити їх у БД або щось горіхове), перш ніж це насправді стане проблемою. Ви просто даєте собі більше роботи.


2

Немає проблем із збереженням великих рядків або двійкових даних. Я працював з базою даних з більш ніж одним терабайт бінарних даних і працював дуже добре (постгреси), і єдиним поганим було час резервного копіювання.

Головне питання: "Чи потрібно вам постійно шукати в цьому тексті?"

Якщо ви збираєтеся шукати рядки в тексті, ви можете продумати одне рішення щодо індексу:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.