Рекомендации против Json против SQL - PullRequest
1 голос
/ 08 мая 2011

У меня не так много опыта программирования за пределами 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, поэтому я не знаю, влияет ли это на какие-либо предложения.

1 Ответ

4 голосов
/ 09 мая 2011

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

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

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

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

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

(3) Подумайте, должны ли дата и время быть одним столбцом «отметки времени».

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...