Более эффективно хранить текст в виде файла или в БД? - PullRequest
1 голос
/ 03 декабря 2009

Представьте, что вы имеете дело со многими строками текста длиной около 10 000 символов, введенных пользователями. Было бы более эффективно записывать их автоматически на страницы или вводить их в таблицу базы данных? Надеюсь, этот вопрос достаточно ясен ...

Ответы [ 6 ]

3 голосов
/ 03 декабря 2009

Это зависит от того, какую «эффективность» вы нацеливаете.

Вот что я имею в виду:

  • будете ли вы изменять содержимое ваших текстовых строк?
  • какие поиски вы будете делать?
  • когда вы извлекаете текст, что вы с ним делаете?

Мое мнение таково, что при условии, что вы не собираетесь сильно менять контент или проводить большой анализ, вам лучше работать с базой данных.

2 голосов
/ 03 декабря 2009

10К не особо большой, так что либо в порядке. Я бы лично использовал базу данных, поскольку она позволит вам легко выполнять поиск.

1 голос
/ 03 декабря 2009

Зависит от того, как вы к ним обращаетесь, но обычно использование FS приведет к повышению производительности. Это по очевидной причине, что БД - это еще один слой, построенный поверх ФС и использующий ФС напрямую, не требующий дополнительной тяжелой обработки (например, иметь 100 с именованных файлов вместо одного большого раздутого файла, упорядоченного в специальном порядке, который вам необходим разобрать), сэкономит вам операции СУБД.

0 голосов
/ 04 декабря 2009

Есть много соображений. Как говорили другие - любой подход будет работать нормально для небольшого числа строк по 10 тысяч (тысяч).

Но что делает остальная часть вашего приложения? Если он все сделает в базе данных, то я бы тоже хотел это поместить; верно и обратное.

И как вы будете выбирать это? Вам нужно сделать сложный текстовый поиск? Если это так, база данных может быть не самой лучшей. Или вы будете добавлять новые атрибуты, искать по этим атрибутам или сопоставлять их с данными в других таблицах? В этом обычном случае база данных будет лучше.

И если ваши данные действительно обширны (многие миллионы строк по 10 тыс.) И ваши требования к производительности не слишком высоки - вы можете сжать их и сохранить в файловой системе.

Наконец, насколько важно качество данных? Учитывая возможности хорошей базы данных, гораздо проще гарантировать хорошее качество данных с помощью базы данных.

0 голосов
/ 03 декабря 2009

Реальный ответ ей - что вы собираетесь делать с этими строками.

Базы данных предназначены для возможности быстрого возврата определенных записей. Если вы просто собираетесь выбрать SELECT * FROM Table, а затем объединить все вместе, нет смысла использовать базу данных.

Однако, если между вашими данными есть связь, которую вы хотите искать, база данных, вероятно, будет более эффективной.

Е.Г., хотите ли вы получить все текстовые записи от группы пользователей за определенную дату? Найти все записи пользователей, которые соответствуют некоторым записям?

Эти типы нагрузок, вероятно, будут более эффективными, чем наивная реализация, и, вероятно, быстрее, чем приличная, даже если они избегают некоторых уровней доступа.

0 голосов
/ 03 декабря 2009

Мне интересно, будет ли SQLite лучшим из двух миров или, по крайней мере, лучшей базой данных для такого размера работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...