Подтвердить что ты не робот

В какой момент стоит использовать базу данных?

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

Мы находимся в нечетном месте, где у нас достаточно данных, что было бы возможно реализовать базу данных (около 700 предметов и увеличиваться) для управления всем, но я не уверен, что сейчас стоит иметь дело с, У меня нет проблем с реализацией графического интерфейса с файлами, созданными из excel и проанализированными, но он утомительно и сложно отслеживать даже с помощью скриптов VBA. Я играл с конвертированием наших данных в нечто более управляемое для приложения с Microsoft Access и, похоже, работает хорошо. Если это сработает, я всего лишь шаг (или несколько) от использования базы данных SQL и использование библиотеки Qt для доступа и ее изменения.

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

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


Я решил пойти с SQLite. Вы можете сделать очень интересные вещи с данными, которые я действительно не рассматривал при первом запуске этого проекта.

4b9b3361

Ответ 1

База данных стоит, когда:

  • Ваше приложение развивается форма выполнения данных.
  • Ваше время на проектирование и разработка внешнего хранилища данных структуры.
  • Обмен данными между приложениями или организаций (включая люди)
  • Данные больше не короткие и простой.
  • Дублирование данных

Эволюция в управляемом данными
Когда данные изменяются, но выполнение не выполняется, это признак программы, управляемой данными, или части программы управляются данными. Набор параметров конфигурации является признаком функции, управляемой данными, но все приложение может не управляться данными. В любом случае база данных может помочь управлять данными. (Библиотека или приложение базы данных не должно быть огромным, как Oracle, но может быть скудным и средним, как SQLite).

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

Обмен данными
Независимо от того, использует ли ваше приложение данные с другим приложением, другой организацией или другим лицом, база данных может помочь. С помощью базы данных легче достичь согласованности данных. Одна из больших проблем в исследовании проблем заключается в том, что команды не используют одни и те же данные. Клиент может использовать один набор данных; команда проверки еще и разработка с использованием другого набора данных. База данных упрощает управление версиями данных и позволяет сущностям использовать одни и те же данные.

Комплексные данные
Программы начинаются с использования небольших таблиц жестко закодированных данных. Это превращается в использование динамических данных с картами, деревьями и списками. Иногда данные расширяются от простых двух столбцов до 8 или более. Теория базы данных и базы данных могут облегчить сложность организации данных. Позвольте базе данных беспокоиться об управлении данными и освободить ваше приложение и время разработки. В конце концов, управление данными не так важно, как качество данных и доступность данных.

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

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

Ответ 2

То, что вы описываете, не похоже на типичное бизнес-приложение, и многие ответы, уже опубликованные здесь, предполагают, что это то приложение, о котором вы говорите, поэтому позвольте мне предложить другую перспективу.

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

Я бы сказал, что примерно в 90% случаев в этом масштабе вы получите легкую базу данных, такую ​​как SQLite, при условии, что:

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

Другие 10% времени, ваши данные будут сильно структурированы, иерархичны, основаны на объектах и ​​не будут вписываться в таблицу таблицы базы данных или таблицы Excel. Если это так, рассмотрите возможность использования XML файлов.

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

XML-синтаксические анализаторы и связывание данных для С++ легко найти.

Ответ 3

Я рекомендую вам представить базу данных в вашем приложении, ваше приложение получит гибкость и будет легче поддерживать и улучшать новые функции в будущем.
Я бы начал с легкого файла на основе db, такого как Sqlite.
С хорошо продуманным db вы будете иметь:

  • Сокращение избыточности данных
  • Большая целостность данных
  • Улучшена защита данных

И последнее, но не менее важное: использование базы данных спасет вас от импорта/обновления/экспорта Excel Ад!

Ответ 4

Я вижу довольно много требований, которые хорошо соответствуют базам данных:

1). Специальные запросы. Найдите все {X}, соответствующие критерию Y

2). Данные со структурой, которые могут извлечь выгоду из нормализации - разложение общих значений на отдельные "таблицы". Вы можете сэкономить место и уменьшить возможность несогласованности таким образом. Как только вы это сделаете, эти специальные запросы станут действительно полезными.

3). Большие объемы данных. Профессиональная база данных очень хороша в том, чтобы эффективно использовать резорбции, умные выборки запросов и стратегии поискового вызова. Попытка написать этот материал сама по себе - настоящая проблема.

Вам явно не нужен последний, но два других, возможно, относятся к вам.

Ответ 5

Причины использования базы данных:

  • Параллельные записи. Легко достичь concurrency в базах данных
  • Простой запрос. SQL-запросы, как правило, являются более краткими, чем процедурный код для поиска данных. UPDATE, INSERT INTO также могут делать много вещей с очень маленьким кодом.
  • Integrity. Ограничения очень просты в определении и применяются без написания кода. Если у вас есть ненулевое ограничение, вы можете быть уверены, что значение не будет равно нулю, нет необходимости записывать проверки в любом месте. Если у вас есть ограничение внешнего ключа, у вас не будет "оборванных ссылок".
  • Производительность по большим наборам данных. Индексирование очень просто добавить в базу данных SQL.

Причины отказа от использования базы данных:

  • Он имеет тенденцию быть дополнительной зависимостью (хотя существуют очень легкие базы данных - например, для H2 для Java)
  • Данные не очень хорошо подходят для реляционной схемы. Вещи, которые являются в основном картами ключ/значение. XML (хотя базы данных часто поддерживают XPath и т.д.).
  • Иногда файлы более удобны. Они могут быть разграничены, объединены, отредактированы с помощью обычного текстового редактора и т.д. Иногда таблицы могут быть более практичными (вам не нужно создавать редактор - вы можете использовать программу для работы с электронными таблицами)
  • Ваши данные уже находятся в другом месте

Ответ 6

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

Например, вы можете добавить базу данных SQLite во встроенное приложение, которое должно зарегистрировать статистику, в которой вы не уверены, как будет использоваться. Позже вы отправляете полную базу данных для инъекций в большую, запущенную на центральном сервере, и эти данные могут быть легко использованы с использованием запросов.

Фактически, если целью вашего приложения является "сбор данных", то наличие базы данных должно быть.

Ответ 7

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

  • количество записей
  • размер элементов данных
  • Нужно ли делиться базой данных с другими устройствами? Одновременно с этим?
  • насколько сложны отношения между различными частями данных
  • - это только чтение базы данных (созданное во время сборки и не измененное, например)?
  • нужно ли одновременно обновлять базу данных несколькими объектами?
  • Вам нужно поддерживать сложные запросы?

Для базы данных с 700 записями может быть уместным сортированный массив в памяти, загруженный из текстового файла. Но я также мог видеть необходимость в встроенной базе данных SQL или, возможно, иметь данные запроса контроллера из базы данных по сетевому соединению в зависимости от того, каковы различные требования (и ограничения ресурсов).

Ответ 8

Нет конкретной точки, в которой база данных стоит. Вместо этого я обычно задаю следующие вопросы:

  • Является ли объем данных, которые приложение использует/создает, растет?
  • Является ли верхний предел этого роста данных неизвестным (или неясным)?
  • Будет ли приложение агрегировать или фильтровать эти данные?
  • Может ли быть будущее использование данных, которые могут быть не очевидны прямо сейчас?
  • Насколько важна производительность поиска и/или хранения данных?
  • Есть ли (или могут быть) несколько пользователей приложения, которые делят данные?

Если я отвечу "Да" на большинство этих вопросов, я почти всегда выбираю базу данных (в отличие от других параметров, таких как XML/ini/CSV/Excel/текстовые файлы или файловая система).

Кроме того, если в приложении будет много пользователей, которые могли бы одновременно обращаться к данным, я склоняюсь к полному серверу базы данных (MySQL, SQl Server, Oracle и т.д.).

Но часто в ситуации одиночного пользователя (или небольшого concurrency) локальную базу данных, такую ​​как SQLite, нельзя бить за переносимость и простоту развертывания.

Ответ 9

Добавить негатив: не подходит для обработки в реальном времени из-за недетерминированной задержки. Однако было бы достаточно поиска и настройки рабочих параметров, например, во время запуска. Я бы не поставил обращения к базам данных на критические временные пути.

Ответ 10

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

Если это для нескольких пользователей (одновременный доступ, блокировка) или необходимость транзакций, которые вы определенно должны рассматривать базу данных. Обращение с комплексными структурами данных в нормализованных таблицах и сохранение integrety или огромный объем данных станут еще одним признаком использования базы данных.

Ответ 11

Похоже, ваше приложение работает на настольном компьютере и просто общается со встроенным устройством.

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

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

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

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

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

Ответ 12

Мы также сталкиваемся с аналогичной ситуацией. У нас есть набор данных, поступающих из разных тестовых установок, и в настоящее время он сбрасывается в листы Excel, обрабатываемые с использованием Perl или VBA.

Мы выяснили, что у этого метода было много проблем:

я. Управление данными с использованием листов excel довольно громоздко. Через некоторое время у вас будет много листов Excel, и нет простого способа получить от него требуемые данные.

II. Люди начинают отправлять листы Excel взад и вперед для комментариев и просмотра по электронной почте. E-Mail становится основным способом управления комментариями, связанными с данными. Эти комментарии теряются в более поздний момент времени, и нет способа вернуть их.

III. Несколько копий файлов создаются, а изменения в одной копии не отражаются в другом - нет версии.

Это по тем же причинам мы решили перейти к решению на базе базы данных и в настоящее время работаем над этим. Позвольте мне изложить то, что мы пытаемся сделать:

я. База данных находится на центральном сервере, доступном для ПК во всех тестовых установках.

II. Все данные поступают во временное место (локальный жесткий диск в файлах) сразу же после его создания. Из файлов он помещается в базу данных процессом, выполняющимся в фоновом режиме (поэтому, даже если есть сетевая проблема, данные будут присутствовать в локальной файловой системе).

III. У нас есть веб-приложение, которое позволяет пользователям регистрироваться и получать доступ к данным в нужном формате. Портал позволит им добавлять комментарии, генерировать разные отчеты, делиться ими с другими пользователями после просмотра и т.д. Он также будет иметь возможность экспортировать данные в листы excel, на всякий случай, если вам нужно взять их с собой.

Знайте, можно ли это лучше реализовать.

Ответ 13

"В какой момент стоит использовать базу данных?"

Если и когда у вас есть данные для управления?