Что послужило причиной или содействовало использованию баз данных вместо плоских файлов
Table of Contents:
Создайте базу данных плоских файлов для хранения простой информации на компьютере. Операционная система UNIX или Linux работает на ряде баз данных с плоскими файлами. Компьютер Windows также использует базы данных плоских файлов для хранения информации, которая используется каждый день. Компьютер Macintosh также делает это. Но база данных плоских файлов не является реляционной и не может удовлетворить тринадцать правил Эдгара Ф. Кодда, которые определяют реляционную природу баз данных. Существуют явные преимущества, а также недостатки в базе данных плоских файлов.
Простые файлы для простого хранения конфигурации
Реестр Windows, хотя и сложный, не является реляционным. Это плоский файл, который расширяется и сжимается по мере добавления и удаления программного и аппаратного обеспечения. Он отслеживает пользовательские данные, хранит журналы и помогает очень быстро находить информацию. UNIX и Linux хранят пароли в базе данных плоских файлов вместе с информацией о конфигурации, которая легко редактируется и которая обеспечивает функционирование системы. Любые изменения в этих файлах конфигурации UNIX вызывают мгновенные эффекты, которые могут быть драматичными. Многое из этого делает UNIX столь популярным из-за простоты настройки.
Преимущества базы данных плоских файлов
Простая файловая база данных представляет собой текстовый файл с одной записью на строку, двоичный файл (или комбинацию как текстового, так и двоичного), который разделяет столбцы с помощью «разделителей», которые разделяют поля стандартным распознаваемым способом. Это помогает в поиске информации в записях. Записи также могут быть разделены фиксированной длиной. Если запись слишком короткая, можно использовать некоторую форму заполнения полей, чтобы длина записи была такой же, как следующая. Это учитывает одинаковую длину байта от одного поля до следующего.
Файлы конфигурации часто хранятся в XML (Extended Markup Language), который представляет собой базу данных плоских файлов с некоторыми довольно определенными разделителями, такими как символы «больше чем» и «меньше чем» (<>). Эти XML-файлы часто используются для создания определенных модулей на веб-сайте, когда стандартная сборка следует очень специфическому шаблону, который конфигурируется одним значением, хранящимся в файле XML, или рядом связанных значений.
Недостатки базы данных плоских файлов
Базы данных, к которым осуществляется доступ к общему сетевому ресурсу, полезны для доступа многих людей, которые ищут информацию. Доступ к базам данных с плоскими файлами обычно не осуществляется таким образом, поскольку они принадлежат автономным объектам и образуют механизм операционных систем и локальных устройств. Кроме того, в базе данных простых файлов нет транзакций, поэтому она ограничена в том, что она может делать в качестве сущности базы данных. Таким образом, база данных с плоскими файлами невыгодна для пользователя сети, который имеет доступ к многозадачной, многозадачной реляционной онлайн-базе данных, которую можно рассматривать с разных сторон.
Эксперт Инсайт
Файлы баз данных с плоскими файлами встречаются не как «базы данных», а скорее как файлы конфигурации и механизмы, управляющие UNIX и Linux. Кроме того, эти файлы являются частью файловой конструкции более чем одного типа мобильного приложения. Эти файлы невероятно полезны, и концепция может использоваться во всех областях программных приложений и при обслуживании сложных небольших устройств, таких как мобильные компьютеры. Даже веб-сайты создаются с этими файлами. Это не области недостатка. Однако есть приложения, которые полагаются на разные конструкции и требуют разного взаимодействия. Эти виды приложений лучше обслуживать с помощью реляционного подхода к хранению файлов. Целые приложения могут быть построены с использованием баз данных Access и баз данных SQL Server. В базе данных плоских файлов здесь нет места.
Значимость
Многие программные приложения создаются с базами данных плоских файлов. Новая операционная система может быть разработана с использованием набора баз данных с плоскими файлами. Они появляются во всех областях информационных технологий. Их значение, вероятно, останется высоким в обозримом будущем.
Преимущества параллельных баз данных
Недостатки онлайн-баз данных
Преимущества и недостатки сетевых баз данных
ВСЁ О ПЛАТФОРМАХ SMART TV (Декабрь 2021).
Файлы или база данных – сравним?
Вопрос в заголовке передо мной не стоял с самого начала карьеры веб программиста. Только свой самый первый проект (городской портал) я начал делать, используя текстовые файлы как аналог базы данных. В дальнейшей работе все мои проекты в интернете использовали только базы данных (Mysql). Но вот последний мой заказчик предупредил о невозможности работать с БД – какие-то там проблемы с 1C. Ну что ж, желание заказчика закон, будем делать так. Итак, попробуем сравнить разработку проекта на файлах и базе данных.
Здесь краткая выжимка, если вам лень читать все. Отличия хранения в файлах от баз данных:
Теперь немного о конкретной задаче (надеюсь, заказчик не будет в претензии – я не раскрою никакой секретной и персональной информации). Необходимо было создать что-то типа веб-интерфейса, более удобной обертки, чем предоставляется компанией по проверке мобильных номеров на доступность. Берем их API и создаем свою админку. Задача несложная, при наличии библиотеки для запросов решается быстро. Но вот тут начались головняки с файлами.
Итак, каким образом лучше хранить информацию в файлах? Самое простое и очевидное решение – это построчно. Отдельная строка – это аналог строки в базе. Слова в строке (отдельные ячейки) разделять специальным символом, предположим точкой с запятой. То есть формат одной строки будет такой:
Первое – название файла, второе – ид, третье – статус работы, четвертое – число номеров, пятое – число проверенных номеров. Первая проблема, с которой вам придется столкнуться – это как читать такие данные. Есть удобная функция, преобразующая файл в массив:
Но попробуйте запустить её, скажем для файла с сотней тысяч строк – будете удивлены. Тут даже увеличение памяти может не помочь. А ведь нам еще надо сделать из этого массива другой массив, то есть разбить каждую строку по разделителю:
Следующая неожиданность – это наличие конца строки. Последний элемент массива task будет содержать спецсимволы, которые надо убрать перед началом работы:
Для того, чтобы осуществить поиск по файлу, надо будет искать в массиве соответствие. И заменить один элемент массива task не получится без ухищрений. А чтобы заменить строку, надо будет располагать всеми предыдущими данными:
Также не стоит забывать флаг LOCK_EX – чтобы никто другой не помешал нам писать в файл.
Переносимость базы и файлов
Перенести проект c SQL несложно – экпортировать-импортировать и подправить строку подключения. В большинстве случаев этого достаточно. А вот с файлами проблемы могут быть как с путями, так и со специальными функциями, которые используются для их парсинга – банально могут не совпадать версии PHP хотя бы.
Конечно, и при работе с MySQL иногда возникают различные сложности, но после многих лет работы, все уже преодолевается на автомате. В общем, все таки мой выбор – это отдельный сервер баз данных, понимающий SQL-запросы. А файлы оставим для логирования, к примеру.
Но все данный проект – это неплохой опыт. Пользуясь случаем, хочу сказать, что и вы можете обратиться ко мне для написания любого веб сервиса – за умеренную плату и в короткие сроки я вам помогу.
статьи IT, личное, базы данных, php, работа с информацией
База данных по сравнению с Плоским Текстовым файлом: Каковы некоторые технические причины того, чтобы предпочесть один другому, когда производительность не является проблемой? [закрытый]
22 ответа
Если вы хотите создавать отчеты по данным или задавать вопросы позже, логичным выбором будет база данных, особенно если вы сохраняете несколько прогонов в одном файле базы данных для поиска тенденций.
Если вы пишете журналы только для отдельных прогонов и не заботитесь о данных после их просмотра, то база данных, вероятно, не имеет смысла.
Look, a lot of the «think of future needs» arguments are blantant over-engineering. KISS.
The only thing you need to do to address future needs in this respect is to simply write your logging routines in such a way that it is easy to totally redirect it later to something else. DIY text, syslog-type services, or a DB. Keep that concept in mind, but DON’T write anything but what you need right now.
From what you described, it absolutely sounds like you should just use a simple text file.
Запись в системный журнал (при работе в системе Unix), перенаправление системного журнала как во вращающийся файл журнала, так и в базу данных.
Файл журнала всегда полезен для мониторинга в реальном времени с использованием стандартных инструментов Unix, таких как tail, который можно комбинировать с grep и т. д.
syslog может перенаправлять сообщения журнала на разные серверы, несколько целей и т. д.
Не всегда разумно встраивать зависимости базы данных в приложение, если БД не работает, что происходит с ведение журнала?
Как вам записывать сбои БД, если ваша единственная запись идет в БД?
Думаю, вы ответили на свой вопрос:
База данных по определению обеспечивает более надежный интерфейс для структурированных данных, обеспечивая для начала именованные столбцы и гарантированный набор данных.
Если ваши потребности действительно просты (небольшое количество абсолютно согласованных полей без проблем с нормализацией), вы, вероятно, не сильно пострадаете от использования текстового файла. Но как вы планируете анализировать файл? Предположительно первым шагом будет считывание его в базу данных или некоторую структуру данных в памяти. Использование базы данных для начала означает, что шаг уже сделан за вас.
Реляционная технология предлагает возможность запрашивать базовые данные любым мыслимым способом без необходимости для пользователя знать о хранилище и материалах физического макета.
Это справедливо даже для систем SQL.
Если вам не нужна возможность запросов, то любой вариант, скорее всего, будет соответствовать вашим целям, а «простейший» (например, плоский файл с обычными байтами), скорее всего, даст вам лучшую производительность.
Еще одно: если у вас есть несколько одновременных операций источников записей журнала, тогда проблемы сериализации становятся важными. При ведении журнала в плоский файл блокировки плоского файла будут длиться в течение времени, необходимого для выполнения записи, при записи в базу данных ведение журнала само становится частью транзакции, а блокировка (в таблице журнала), вероятно, будет длиться в течение времени эта транзакция, возможно, вызывает «переполнение очереди» или «
what about sqlite? It’s a C library that implements a very simple database, recomended for simple projects.
Мне нравится немного планировать на будущее. Если файл плоского типа дает вам именно то, что вам нужно сегодня, что, если ваши спецификации изменятся или клиент захочет больше позже. Вы не хотите объяснять, что реинжиниринг решения займет много времени. Если есть вероятность, что это решение должно сохраняться с течением времени и на него могут повлиять клиенты, решение для базы данных будет обладать необходимой гибкостью.
Уже есть много хороших (приемлемого качества ответов) ответов, я просто добавляю один момент, который следует учитывать:
Если у вас мало места на диске, или вы просто не хотите тратить 16 ГБ на плоский файл после 5 лет записи журналов, не могли бы вы просто выполнить команду «УДАЛИТЬ ИЗ журналов WHERE Date
Это зависит от контекста. Если он очень ограничен, поскольку вы предлагаете просто регистрировать некоторые базовые данные о передаче файлов, обрабатывая журнал один раз и выбрасывая его, меня, как правило, привлекает вариант с плоским файлом. РСУБД будет немного излишним, однако, возможно, в обозримом будущем можно будет добавить решающий фактор.
В качестве компромисса вы можете подумать о встроенном решении, таком как SQL Lite и др., Или об использовании API абстракции базы данных (например, ODBC-драйвер плоского файла). ), который работает с плоскими файлами и впоследствии может быть легко изменен для работы с РСУБД без каких-либо или каких-либо существенных изменений кода в зависимости от условий.
Вы также можете подумать с точки зрения сервера журналов, например, использовать надежный системный журнал с поддержкой базы данных место хранения.
Как правило, сохранение в БД приводит к небольшому снижению производительности по сравнению с плоский текстовый вывод. Это будет более заметно, если основная таблица базы данных имеет много индексов. Иногда допустимым подходом является сохранение в куче базы данных (таблица без индекса или, может быть, только один простой индекс), и чтобы эта куча оставалась небольшой, перемещая ее содержимое в полностью проиндексированную таблицу каждый вечер (или всякий раз, когда ожидается низкая нагрузка SQL).
Единственные журналы, которые я бы рекомендовал оставлять только в формате простого текстового файла, связаны с редкими / случайными ошибками сообщения и другие исключительные случаи. Затем формат текстового файла обеспечивает быстрый доступ к информации (с использованием локального текстового редактора), используемой для диагностических целей, для регистрации событий старше нескольких недель.
Единственные журналы, которые я бы рекомендовал оставить в виде простого текста только формат файла, они связаны с редкими / случайными сообщениями об ошибках и другими исключениями. Затем формат текстового файла обеспечивает быстрый доступ к информации (с использованием локального текстового редактора), используемой для диагностических целей, для регистрации событий старше нескольких недель.
Единственные журналы, которые я бы рекомендовал оставить в виде простого текста только формат файла, они связаны с редкими / случайными сообщениями об ошибках и другими исключениями. Затем формат текстового файла обеспечивает быстрый доступ к информации (с использованием локального текстового редактора), используемой для диагностических целей, для регистрации событий старше нескольких недель.
Две вещи привели меня к использованию базы данных:
(b) Вам необходимо выполнить запрос по этим полям, особенно сложные запросы. Например, «перечислить все переполнения памяти, вызванные модулем xyz по выходным».
Лично я почти всегда записываю журналы в простой текстовый файл. Я могу вспомнить лишь несколько случаев, когда я заходил в базу данных. И в последний раз я сделал это потому, что у меня не было доступа к файловой системе на производственном сервере, но я мог получить доступ к базе данных.
Лично я почти всегда записываю журналы в простой текстовый файл. Я могу вспомнить лишь несколько случаев, когда я заходил в базу данных. И в последний раз я сделал это потому, что у меня не было доступа к файловой системе на производственном сервере, но я мог получить доступ к базе данных.
Лично я почти всегда записываю журналы в простой текстовый файл. Я могу вспомнить лишь несколько случаев, когда я заходил в базу данных. И в последний раз я сделал это потому, что у меня не было доступа к файловой системе на производственном сервере, но я мог получить доступ к базе данных.
Если ваша процедура выявления ошибок и восстановления основана на предположении, что у вас никогда не будет ошибок, то зачем вы вообще это делаете? Это напоминает все глупые шутки о том, что служба поддержки рассылает электронные письма, предупреждающие людей о том, что система электронной почты не работает.
Лично я почти всегда записываю журналы в простой текстовый файл. Я могу вспомнить лишь несколько случаев, когда я заходил в базу данных. И в последний раз я сделал это потому, что у меня не было доступа к файловой системе на производственном сервере, но я мог получить доступ к базе данных.
Если ваша процедура выявления ошибок и восстановления основана на предположении, что у вас никогда не будет ошибок, то зачем вы вообще это делаете? Это напоминает все неубедительные шутки о том, что служба поддержки рассылает электронные письма, предупреждающие людей о том, что система электронной почты не работает.
Лично я почти всегда записываю журналы в простой текстовый файл. Я могу вспомнить лишь несколько случаев, когда я заходил в базу данных. И в последний раз я сделал это потому, что у меня не было доступа к файловой системе на производственном сервере, но я мог получить доступ к базе данных.
Я могу вспомнить лишь несколько случаев, когда я заходил в базу данных. И в последний раз я сделал это потому, что у меня не было доступа к файловой системе на производственном сервере, но я мог получить доступ к базе данных.
Я могу вспомнить лишь несколько случаев, когда я заходил в базу данных. И в последний раз я сделал это потому, что у меня не было доступа к файловой системе на производственном сервере, но я мог получить доступ к базе данных.
база данных против плоских файлов
Компания, в которой я работаю, пытается переключить продукт, который использует формат плоских файлов, на формат базы данных. Мы обрабатываем довольно большие файлы данных (например, 25 ГБ / файл), и они обновляются очень быстро. Нам нужно запускать запросы, которые осуществляют произвольный доступ к данным, а также непрерывно. Я пытаюсь убедить их в преимуществах использования базы данных, но некоторые из моих коллег, похоже, не хотят этого. Поэтому мне было интересно, можете ли вы помочь мне здесь с некоторыми причинами или ссылками на сообщения о том, почему мы должны использовать базы данных, или, по крайней мере, прояснить, почему плоские файлы лучше (если они есть).
10 ответов
Это ответ, который я уже давал некоторое время назад:
Это полностью зависит от потребностей приложения, зависящего от предметной области. Часто прямой доступ к текстовым файлам / двоичным файлам может быть чрезвычайно быстрым, эффективным, а также предоставлять вам все возможности доступа к файлам файловой системы вашей ОС.
Более того, ваш язык программирования, скорее всего, уже имеет встроенный модуль (или его легко сделать) для конкретного синтаксического анализа.
С другой стороны, когда ваши требования к параллелизму, непоследовательному чтению / записи, атомарности, атомарным разрешениям, ваши данные являются реляционными по своей природе и т. Д., Вам будет лучше с реляционной или объектно-ориентированной базой данных.
Если ваши требования куда больше, не будет даже обсуждения, выберите полноценную СУБД.
Не стройте его, если можете его купить.
Они быстрее; если вы не загружаете в память весь плоский файл, база данных обеспечит более быстрый доступ почти во всех случаях.
Они безопаснее; базы данных легче безопасно резервировать; у них есть механизмы проверки файлов на наличие повреждений, которых нет в плоских файлах. Как только повреждение вашего плоского файла переносится в ваши резервные копии, все готово, и вы, возможно, даже не подозреваете об этом.
У них больше возможностей; базы данных могут позволить нескольким пользователям одновременно читать / писать.
После настройки работать с ними намного проще.
Однако, если у вас все еще есть потребность в хранении файлов, у вас нет возможности использовать новую СУБД (например, Oracle, SQLServer и т. Д.), Чем изучать XML.
Я настоятельно рекомендую БД, но если вы не можете пойти по этому пути, XML подойдет вам.
А как насчет нереляционной (NoSQL) базы данных, такой как Amazon SimpleDB, Tokio Cabinet и т. Д.? Я слышал, что Google, Facebook, LinkedIn используют их для хранения своих огромных наборов данных.
Можете ли вы сказать нам, структурированы ли ваши данные, исправлена ли ваша схема, нужна ли вам легкая репликация, важно ли время доступа и т. Д.?
Какие типы файлов не упоминаются. Если это медиафайлы, продолжайте с плоскими файлами. Вероятно, вам просто нужна БД для тегов и какой-то способ связать «внешние большие двоичные объекты» с записями в БД. Но если вам нужен полнотекстовый поиск, нет другого выхода, кроме как перейти на полную БД.
Другое дело, ваша файловая система может обеспечить максимальное количество физических файлов.
Если вы не загружаете файлы в память при каждой загрузке, используйте базу данных. Просто как тот.
Предполагается, что в ваших колледжах уже есть программа для обработки запросов к файлам. Если нет, то используйте базу данных.
Ниже приведены различия между базой данных и плоскими файлами:
База данных обеспечивает большую гибкость, тогда как плоский файл обеспечивает меньшую гибкость.
Система баз данных обеспечивает согласованность данных, тогда как плоский файл не может обеспечить согласованность данных.
База данных поддерживает DML и DDL, тогда как плоские файлы не могут их поддерживать.
Меньше избыточности данных в базе данных, тогда как больше избыточности данных в плоских файлах.
Разница между файловой системой и базой данных
В ключевое отличие между файловой системой и базой данных заключается в том, что файловая система управляет только физическим доступом, тогда как база данных управляет как физическим, так и логическим
Содержание:
В ключевое отличие между файловой системой и базой данных заключается в том, что файловая система управляет только физическим доступом, тогда как база данных управляет как физическим, так и логическим доступом к данным.
Что такое файловая система?
Как упоминалось выше, типичная файловая система хранит электронные данные в наборе файлов. Если файл состоит только из одного файла, то это плоский файл. Они содержат значения в каждой строке, разделенные специальным разделителем, например запятыми. Чтобы запросить некоторые случайные данные, сначала необходимо проанализировать каждую строку и загрузить ее в массив во время выполнения. Для этого файл следует читать последовательно, поскольку в файлах нет механизма управления. Поэтому это довольно неэффективно и требует много времени.
На пользователя возлагается определенная нагрузка, такая как поиск необходимого файла, просмотр записей построчно, проверка наличия определенных данных и запоминание того, какие файлы / записи редактировать. Пользователь либо должен выполнять каждую задачу вручную, либо должен написать сценарий, который выполняет их автоматически с помощью возможностей управления файлами операционной системы. По этим причинам файловые системы легко уязвимы для серьезных проблем, таких как несогласованность, неспособность поддерживать параллелизм, изоляция данных, угрозы целостности и отсутствие безопасности.
Что такое база данных?
Существует несколько типов баз данных, таких как аналитические базы данных, хранилища данных и распределенные базы данных. Базы данных или, если быть более точным, реляционные базы данных содержат таблицы, и они состоят из строк и столбцов, во многом как электронные таблицы в Excel. Каждый столбец соответствует атрибуту, а каждая строка представляет одну запись. Например, в базе данных, в которой хранится информация о сотрудниках компании, столбцы могут содержать имя сотрудника, идентификатор сотрудника и зарплату, а одна строка представляет одного сотрудника. Большинство баз данных поставляется с системой управления базами данных (СУБД), которая упрощает создание, управление и организацию данных.
В чем разница между файловой системой и базой данных?
Структура файловой системы проста, тогда как структура базы данных сложна. Кроме того, избыточность в файловой системе выше, чем в базе данных. Данные в файловой системе могут быть противоречивыми. Когда данные находятся в нескольких местах и необходимо внести изменения, необходимо проверить всю систему на предмет обновления. В базе данных необходимо делать только одноразовые обновления. Остальные данные обновятся автоматически. Таким образом, база данных поддерживает согласованность данных. Хотя большинство операционных систем предоставляют графические пользовательские интерфейсы; файловая система выполняет большинство задач, таких как сохранение, получение и поиск вручную. Но база данных предоставляет автоматизированные методы для выполнения этих задач.
Более того, совместное использование данных в файловой системе затруднено, потому что пользователь должен найти местоположение файла и т. Д., Но это простой процесс при использовании базы данных. Кроме того, файловая система не очень безопасна. Следовательно, это может привести к повреждению файлов. С другой стороны, использование базы данных более безопасно. В отличие от файловой системы, база данных обеспечивает резервное копирование и восстановление при необходимости.