Лучший способ отслеживать историю продаж / запасов для POS-системы?

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

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

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

Я знаю, что есть более простые способы сделать это для таких вещей, как заказы и история заказов с покупателями, но как насчет самого магазина, если они хотят отслеживать, сколько продуктов они продали в течение недели, месяца, года? , и т.д? Это аналогичный подход? Разные? Я не могу найти ничего, что бы касалось этой конкретной проблемы.


person David Mordigal    schedule 15.12.2015    source источник


Ответы (2)


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

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

person andreamc    schedule 15.12.2015
comment
Да, думаю, я попробую этот подход и посмотрю, как он пойдет. - person David Mordigal; 15.12.2015

Будет ли это система, в которой владельцы магазинов работают автономно, или это будет система с множеством POS-терминалов, которые отчитываются перед центральным узлом?

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

С другой стороны, общий шаблон дизайна для крупных предприятий, который я видел, выглядит следующим образом:

  1. На ваших POS-терминалах хранятся минимально необходимые данные, которые необходимы в POS-терминале. На терминале требуется минимальная отчетность.

  2. Реплицируйте все данные POS на центральный сервер базы данных, который хранит и объединяет все различные POS-терминалы. Это ваш подробный оперативный отчет. Как только данные будут реплицированы сюда, их можно будет удалить с терминала.

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

Теперь вы можете запускать отчет по месяцам или годам с центрального сервера базы данных (как и владельцы магазинов) и просто подводить итоги за месяц / год на месте. На этом этапе нет необходимости создавать сводные таблицы.

Со временем вы столкнетесь с проблемами производительности по мере увеличения размера данных.

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

Ответ заключается в применении стандартных методов настройки производительности, таких как:

  • Улучшение серверного оборудования (простое добавление ОЗУ часто является наиболее экономичным)
  • Добавление индексов (включая индексированные представления)
  • Реализация разметки
  • Рассмотрите возможность использования кубов для отчетов

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

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

person Nick.McDermaid    schedule 15.12.2015
comment
Да, я больше думаю о небольших предприятиях, таких как семейные магазины или что-то в этом роде. Так что это не должно быть так сложно (пока). Со временем приложение будет развиваться, и я, вероятно, добавлю к нему больше функций. Но на данный момент я больше ищу подход автономного владельца магазина. - person David Mordigal; 15.12.2015
comment
Возможно, вы обнаружите, что для этого уже существуют облачные решения. Я набрал POS в облаке, и там уже много игроков. В настоящее время облако - это универсальное решение, потому что оно очень простое. - person Nick.McDermaid; 15.12.2015