Как вы обрабатываете небольшие наборы данных?

StackOverflow https://stackoverflow.com/questions/133420

  •  02-07-2019
  •  | 
  •  

Вопрос

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

Иногда для действительно небольших наборов данных я просто сохраняю их во внутренней структуре данных в коде (например, в хэше Perl), но затем, когда требуется изменение, оно находится в руках разработчика.

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

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

Редактировать: Для контекста:

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

ИТАК, я могу либо добавить столбец в таблицу с миллионами строк, который будет использоваться, буквально, около 20 раз, ЛИБО создать новую таблицу, которая будет содержать не более 20 строк.Обычно мы справлялись с этим в прошлом, просто создавая неприятный текстовый файл и считывая его оттуда.Но это создает проблемы с обслуживанием, и эти текстовые файлы часто просматриваются при изменении данных, от которых они зависят.Возможно, это ошибка в процессе, но мне просто интересно услышать мнения по этому поводу.

Это было полезно?

Решение

Если это небольшие данные, похожие на конфигурацию, я использую какой-нибудь простой и распространенный формат.ini, json и yaml обычно в порядке.Поклонникам Java и .NET также нравится XML.короче говоря, используйте что-то, что вы можете легко прочитать в объект в памяти, и забудьте об этом.

Другие советы

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

Пример, который сразу приходит на ум, - это то, что уместно сохранить в виде перечисления, и то, что уместно сохранить в таблице базы данных "подстановки".

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

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

Возможно, они просто знают Excel, поэтому вашему инструменту придется проанализировать csv-файл, который они создают.

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

У нас есть стандартный формат конфигурационного файла (ключ: значение) и класс для его обработки.Мы просто используем это во всех проектах.В основном мы просто устанавливаем постоянные свойства для наших приложений (разработка мобильных телефонов), так что это вполне уместно.YMMV

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

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

В любом случае, я стараюсь хранить все данные в одном месте.Обычно это база данных.

Вы подумывали об этом sqlite - файл ?Она основана на файлах, что устраняет ваше ощущение, что "может подойти только файл" (нулевая конфигурация), но это отличная база данных и она замечательно масштабируется.Он поддерживает ряд API, и есть многочисленные передние концы за то, что ввел его.

Я бы добавил его в базу данных в основной таблице:

  1. Резервное копирование и восстановление (вы ведь хотите восстановить этот текстовый файл, верно?)
  2. Выполнение запроса Adhoc (поскольку вы можете сделать это с помощью инструмента SQL и присоединить его к другим данным базы данных)
  3. Если столбец базы данных пуст, требования к хранилищу для него должны быть минимальными (ничего, если это НУЛЕВОЙ столбец в конце таблицы в Oracle)
  4. Это будет проще, если вы захотите иметь несколько серверов приложений, так как вам не нужно будет хранить несколько копий какого-либо дополнительного конфигурационного файла
  5. Помещение его в маленькую дочернюю таблицу только усложняет дизайн, не давая никаких реальных преимуществ

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top