Coder Social home page Coder Social logo

portal-module's Introduction

Структура моделей

Данный проект – это набор доменных моделей для реализации базовой логики сайта: авторизация, аккаунт, карма пользователя, загрузка картинок, посты, комментарии, чат.

Проект является экспериментом сразу по нескольким направлениям:

  • Разрабатывается на самописном микро-фреймворке DW-Framework
  • ORM не используется. За счет отсутствия большого фреймворка и ORM получается очень высокая производительность

Также для максимальной производительности не используются классические модели/сущности, которые один в один отражают структуру таблиц в таблице. Применяется более оптимизированный вариант: например, когда базовая модель Auth (отвечающая за авторизацию), сразу хранит в себе несколько параметров из таблицы аккаунтов, которые часто используются. И это избавляет от множества дополнительных запросов в базу. А самая большая и навороченная модель Account используется в своем полноценном виде практически только при отображении страницы профиля. Во всех других случаях она слишком тяжелая для использования, и заменяется более легкими решениями.

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

  • Время вывода страницы: 8.06 миллисекунд
  • Расход памяти: 292.07 kb
  • Количество запросов: 15

Этот проект, по сути, глобальный рефакторинг (базовой части) уже существующего проекта где будет лучше ООП, более продуманные интерфейсы и больше unit-тестов.


План основных моделей:

  • Account — Аккаунт пользователя. Единственное место где используется — на странице профиля пользователя.
    • Carma — Информация по карме пользователя
    • ChatStatus — Статус пользователя в чате
    • Energy — Энергия пользователя. Создание постов/комментариев требует энергию. Это с одной стороны ограничивает возможности спама, с другой стороны мотивирует пользователей на более осознанную активность
    • Floor — Пол пользователя
    • Group — Группа пользователя
    • Notice — Уведомления пользователя
    • Status — Статус пользователя
    • Upload — Данные по загруженным файлам и оставшемуся свободному месту, доступного для использования
    • Character — На портале пользователи имеют уровни, на которые завязано много различных механик. Уровни и характеристики, которые можно прокачивать по мере роста уровня вынесены в отдельный объект
      • Level — Отвечает за уровень и опыт персонажа (для пользователя — аккаунта) и механику его увеличения
      • Era — Чтобы добавить интерес новым пользователям, с некоторой периодичностью на проекте будут обнуляться все уровни, и открываться новая эпоха в развитии. Но персонажи не удаляются, а переносятся в архив. Вся эта механика завязана на эпохи и том, что каждый персонаж привязывается к своей эпохе
  • Auth — Объект авторизации. Является урезанным вариантом объекта Account, в котором хранятся только наиболее частые для использования параметры
  • Container — Стандартный паттерн, реализующий «синглотон здорового человека»
  • Post — Единица контента на портале
    • Author — Автор поста. Урезанный объект аккаунта, который содержит только ту информацию, которая нужна для отображения поста
    • ChangeRating — Информация об изменении рейтинга поста (или отсутствии изменений) авторизованным пользователем
    • Comment — Комментарии к посту
    • Rating — Рейтинг поста
    • Status — Статус поста
    • Tag — Теги поста

portal-module's People

Contributors

walkweb avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.