2016-01-24 2 views
-1

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

У меня есть следующие варианты:

1.А набор перечислений/объекты файл XML 2.An 3. встроенный SQLite базы данных

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

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

Какой правильный путь дизайна здесь?

+0

Можете ли вы предоставить небольшой фрагмент того, как выглядят ваши данные? – Chase

+0

Тип викторины, который никогда не меняется, у меня есть 4 типа викторины. Типы вопросов, которые также редко меняются, в каком-то вопросе есть текстовый ответ, у некоторых есть более одного ответа и так далее. –

+0

Можете ли вы дать оценку того, сколько данных имеется? – Chase

ответ

0

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

В моем (слишком многолетнем опыте) «Статические данные, которые никогда не изменятся» почти никогда не статичны. Это будет аргументировать сохранение данных в форме, которая не требует изменений исходного кода, что исключает перечисления.

Пример:

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

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

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

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

Я также рассмотрю пути (ы), в которых вы хотите получить доступ к этим данным. Чем больше гибкости вам нужно при поиске, тем лучше аргумент для какой-либо базы данных. Точка @ rbaghbanli также хорошо взламывается; ваше решение может быть основано на платформе, где будет работать ваш код.

+0

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

-1

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

+0

Я должен уважительно проголосовать за это, потому что, на мой взгляд, я думаю, что более важно рассмотреть, как данные используются и что менее важно, какой тип приложение при определении правильного хранения ваших данных. Логика «это корпоративная система, поэтому вы должны использовать корпоративную базу данных» для меня не подходит. Однако я предоставлю вам, что зависящие от платформы соображения, такие как мобильные, важны, поскольку они имеют строгие ограничения на доступную память. – Chase

+0

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

Смежные вопросы