Аналитические данные о продукте в файлах TXT (с использованием YAML) - PullRequest
1 голос
/ 03 февраля 2011

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

  • БД (для получения огромных данных, таких как ПРОДУКТЫ, КАТЕГОРИИ, ЗАКАЗЫ и т. Д.)
  • TXT (с использованием YAML -для получения аналитических данных и некоторых опций)

Например, когда пользователь переходит на страницу с информацией о продукте, мне нужно получить эти файлы TXT:

  • Файл сводки продукта (product_hitколичество продано и т. д.)90 КБ
  • Файл языка и настроек (например, название компании, переводы для шаблона) - приблизительно макс.300KB
  • Может быть, еще один файл (я не знаю, точно знаю) - предположим, что 100KB.

Я хочу использовать этот способ, потому что данные легко читаются человеком иПереносим между языками программирования.Кроме того, если я использую БД, мне нужно подключить пару таблиц.Но эти файлы ПОЛУЧАЮТ ИХ ВМЕСТЕ.

Мой текстовый файл выглядит так (YAML):

 product_id: 1281
 quantity_sold: 12 #item(s)
 hit: 1105
 hit_avarage: 92 #quantity_sold/hit
 vote: 2
 ...

Но, тем не менее, я не уверен в скорости и производительности.Использование файлов TXT - хорошая идея?Должен ли я действительно использовать этот способ вместо БД?

Ответы [ 4 ]

2 голосов
/ 03 февраля 2011

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

Пожалуйста, ознакомьтесь с базами данных на основе документов, однако вам не обязательно иметь для использования реляционной базы данных. Фактически, при рассмотрении примера файла YAML я думаю, что использование базы данных " no SQL " было бы лучшей альтернативой.

Приветствие.

1 голос
/ 03 февраля 2011

YAML - это «читаемый человеком формат сериализации данных».

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

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

  • безопасность
  • масштабируемость
  • параллелизм
  • целостность данных (атомарность, согласованность, изоляция и долговечность)
  • производительность
  • доступность

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

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

1 голос
/ 03 февраля 2011

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

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

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

1 голос
/ 03 февраля 2011

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

...