Рекомендации против Json против SQL

1

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

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

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

data = {
  'Toronto, Canada': {
    '2011-05-04': {
      '00:30': [
        { ... },
        { ... },
        ...
      ],
      '02:00': [
        ...
      ],
      ...
    },
    '2011-05-05': {
    },
    ...
  },
  'Tokyo, Japan': {
    ...
  },
  ...
}

Я начинаю преподавать сам SQL, но что бы кто-нибудь рекомендовал? Должен ли я создать структуру json, описанную выше (или какую-то измененную версию, я готов к любым предложениям), или мне нужно создать базу данных через SQL?

Также я буду анализировать данные с различными функциями python, поэтому я не знаю, влияет ли это на любые предложения.

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

1 ответ

4

JSON предназначен для обмена небольшими объемами данных между процессами на одной машине или через Интернет. Вам нужна база данных.

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

Несколько предложений:

(1) Использовать SQLite (поставляется с Python)

(2) Учитывайте, что город и страна являются отдельными колоннами. Подумайте о добавлении столбца "состояние/провинция".

(3) Учитывайте, должна ли дата и время быть одним столбцом "timestamp".

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

  • 0
    Разве SQLite не записывает на диск так же, как simplejson? И производительность simplejson для приложения Шона не должна быть проблемой, она довольно быстрая даже без ускорений на C - она может считывать и записывать дерево JSON с миллионами объектов (5 МБ +) за считанные секунды. Тем не менее, я согласен, что анализ будет гораздо проще с запросами SQL.
  • 0
    @brianpeiris: SQLite, в отличие от подхода, основанного на JSON, не считывает всю базу данных в память и не записывает ее снова.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню