Skip to content

ekudel/vkt

Repository files navigation

Общая информация

База данных

  • Для чего нужна каждая таблица описано в комментариях в create_schema.sql.
  • Предусмотрена возможность разбиения всех основных таблиц на несколько баз данных/хостов для равномерного распределения нагрузки.
  • Код для работы с данными расположен в файлах database.php, storage.php и shards.php.
  • Мэппинг таблиц по базам настраивается в config.php.

Кэширование

  • Предусмотрено кэширование часто используемой информации: блока наиболее новых заказов и лога недавно удаленных и отмененных заказов. Для этого используются MEMORY таблицы.
  • Кэширование можно включить/отключить в config.php. Его лучше отключать, если не планируется высокой нагрузки, т.к. он имеет короткое время жизни и при обновлении забирает большой блок из базы.
  • Можно выделить под кэш произвольное количество хостов. Выбор будет происходить по user_id. Настраивается в config.php
  • Соответствующий код расположен в caches.php.

Сессии

  • Предусмотрено хранение сессий в базе данных. Настроить это можно в config.php. Таблица sessions также может быть распределенной.
  • Соответствующий код расположен в sessions.php.

Заметки TODO

  • Тематически разбить файл database.php - он слишком большой.
  • Оптимизировать кэш. Сейчас при обновлении done_or_canceled-кэша мы удаляем устаревшие заказы из waiting_orders-кэша, расположенного в той же базе, чтобы исключить отдачу юзеру отмененных/выполненных заказов как новых, что влечет лишние операции записи.
  • Более умный кэш. Например, не загружать записи большим блоком и уметь кэшировать не только первые N записей.
  • Возможность гибкого добавление новых шардов (сейчас - hardcoded). Нужен другой алогирм выбора, либо хранить в базе.
  • Отделить "драйвер" БД от запросов (database.php) для легкой поддержки других БД. Нужны свои плейсхолдеры или simple request builder?
  • Кэширование xcache или shm (или memcached) вместо memory таблиц.
  • Веб-сокеты или long-polling для быстрого обновления ленты.
  • Retina-friendly progress-индикаторы.
  • Улучшить логгирование - например опционально логгировать работу с кэшом, чтобы подобрать для него наиболее эффективные параметры.
  • Подумать над workflow-specific UI - сейчас используется один UI ленты везде.
  • Защита от CSRF.
  • Поддержка English и других валют.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published