базы данных и плоские файлы


компания, в которой я работаю, пытается переключить продукт, который использует формат плоского файла в формат базы данных. Мы обрабатываем довольно большие файлы данных (т. е.: 25 ГБ/файл), и они обновляются очень быстро. Нам нужно запускать запросы, которые случайным образом обращаются к данным, а также непрерывным способом. Я пытаюсь убедить их в преимуществах использования базы данных, но некоторые из моих коллег опасаются этого. Поэтому мне было интересно, можете ли вы, ребята, помочь мне здесь с некоторыми причинами или ссылками на сообщения почему мы должны использовать базы данных, или, по крайней мере, выяснить, почему плоские файлы лучше (если они есть).

10 65

10 ответов:

  1. базы данных могут обрабатывать запросы задачи, так что вам не придется ходить над файлами вручную. Базы данных могут обрабатывать очень сложные запросы.
  2. базы данных могут обрабатывать задачи индексирования, так что если задачи, как получить запись с идентификатором = x может быть очень быстрым
  3. базы данных могут обрабатывать многопроцессорный / многопоточный доступ.
  4. базы данных могут обрабатывать доступ из сеть
  5. базы данных могут следить за данными целостность
  6. базы данных могут легко обновлять данные (видеть 1) )
  7. базы данных являются надежными
  8. базы данных могут обрабатывать транзакции и параллельный доступ
  9. базы данных + ORMs позволяют манипулировать данные в очень программисте содружественном путе.

Это ответ я уже дал некоторое время назад:

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

кроме того, ваш язык программирования скорее всего уже есть встроенный модуль (или просто сделать) для специфический разбор.

Если вам нужно много добавляет (Вставляет?) и последовательный / мало доступа мало/нет параллелизма, файлы так держать.

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

там много что может быть выполненный с SQLite3, которым весьма светл (под 300кб), кислота уступчивый, написанных на C/C++ и очень вездесущий (если это еще не так включено в ваш язык программирования -например Python -, наверняка есть один доступный). Это может быть полезно даже на файлы БД размером 140 терабайт, или 128 тебибайт (ссылка на размер базы данных), возможно больше.

Если ваши требования куда больше, там даже не будет обсуждения, перейти к полномасштабной СУРБД.

Как вы сказали в комментарии, что "система" - это просто куча скриптов, то вы должны взглянуть на pgbash.

не строить его, если вы можете купить его.

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

базы данных всю дорогу.

однако, если у вас все еще есть потребность в хранении файлов, у вас нет возможности взять на себя новую СУБД (например, Oracle, SQLServer и т. д.), Чем заглянуть в XML.

XML-это формат файла структуры, который предлагает вам возможность хранить вещи в виде файла, но дает вам возможность запрашивать власть над файлом и данными в нем. XML-файлы легче читать, чем плоские файлы и могут быть легко преобразованы с помощью XSLT для еще лучшего человек-читаемость. XML также является отличным способом для транспортировки данных вокруг, если вы должны.

Я настоятельно рекомендую БД, но если вы не можете пойти по этому маршруту, XML-это нормально второй.

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

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

Они имеют больше возможностей; базы данных могут позволить многим пользователям читать / писать одновременно время.

Они гораздо менее сложны для работы, как только они настроены.

Как насчет нереляционной базы данных (NoSQL), такой как SimpleDB Amazon, Tokio Cabinet и т. д.? Я слышал, что Google, Facebook, LinkedIn используют их для хранения своих огромных наборов данных.

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

какие типы файлов не упоминается. Если это медиафайлы, продолжайте с плоскими файлами. возможно, Вам просто нужна БД для тегов и какой-то способ связать "внешние капли" с записями в БД. но если полнотекстовый поиск-это то, что вам нужно, нет другого пути, кроме перехода на полную БД.

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

среда SQL специальных способностей запроса являются достаточной причиной для меня. При хорошей схеме и индексации на таблицах это быстро и эффективно и будет иметь хорошую производительность.

Если вы не загружаете файлы в память при каждой загрузке, используйте базу данных. Просто.

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

разница между базой данных и плоскими файлами приведены ниже:

  • база данных обеспечивает большую гибкость, тогда как плоский файл обеспечивает меньшую гибкость.

  • система баз данных обеспечивает согласованность данных, тогда как плоский файл не может обеспечить согласованность данных.

  • база данных более безопасна по сравнению с плоскими файлами.
  • база данных поддерживает DML и DDL, тогда как плоские файлы не могут поддерживать эти.

  • меньше избыточности данных в базе данных, тогда как больше избыточности данных в плоских файлах.