Каковы преимущества хранения вашей схемы в виде массивов или хеш-полей?

Это относится к переосмыслению БД. Лучше ли иметь схему со встроенными массивами или хэш-полями в качестве массивов? Сохраняя свои намерения простыми... Я пытаюсь отслеживать ежедневную статистику. Но я между делом решаю, какая структура схемы лучше. Позвольте мне уточнить..

Схема чистого массива:

schema = [
  {
    title: 'foobar',
    dates: [
      {
        date: 20130926,
        views_count: 10,
        click_count: 10
      },
      {
        date: 20130927,
        views_count: 20,
        click_count: 20
      },
      {
        date: 20130928,
        views_count: 30,
        click_count: 30
      }
    ]
  }
]

Схема массива хеш-полей:

schema = [
  {
    title: 'foobar',
    dates: [
      '20130926' => {
        views_count: 10,
        click_count: 10
      },
      '20130927' => {
        views_count: 20,
        click_count: 20
      },
      '20130928' => {
        views_count: 30,
        click_count: 30
      }
    ]
  }
]

Я могу думать о том, что с последними легче предотвратить двойственность дат. Есть ли другие преимущества? Или есть общее соглашение, которое предпочитают разработчики?

1 ответ

ИМХО, ваше приложение превосходит любую СУБД. Вместо того чтобы сосредоточиться на выборе хранилища БД, сфокусируйтесь на потребностях своего приложения, программировании и производительности. Сохраняйте данные своей программы, затем итеративно оценивайте и оптимизируйте для доминирующих случаев с изменениями схемы только при необходимости. Ваша заявка ответит на ваши вопросы хранения. Например, в общем:

(1) если вам нужен преимущественно упорядоченный доступ к датам, тогда используйте array (2), если вам нужен быстрый произвольный доступ ко многим датам, тогда используйте хеш

И язык программирования и семантика СУБД имеют значение. Даже если в БД есть упорядоченные хэши, ваш язык может потерять это, например, хэши в Ruby 1.9 и более новые упорядочены, но ранее не были упорядочены.

Конечно, ваш выбор схемы ОЧЕНЬ важен. Но, IMHO, основной сильной стороной СУБД, относящихся к документам (не столбчатым объектным данным NoSQL), является способность сопоставлять естественные структуры данных в языках программирования. Поэтому я мягко призываю вас вернуться к вашей заявке / программе в качестве фокуса как для вопросов, так и для ответов.

Другие вопросы по тегам