Архив рубрики: Разработка

Про гибкость

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

 

https://habrahabr.ru/post/327746/

Про дублирование кода в контроллерах

Перестаньте выносить повторяющийся код. Дублирование кода — это нормально. Особенно в контроллерах. Когда мы говорим про DRY многие забывают про Try. Далеко не все дублирование нужно устранять. В целом мотивация этого действа весьма простая — если в коде будут баги и этот код дублируется — то надо править в нескольких местах. Однако с другой стороны, когда речь идет про такие вещи как контроллеры, которые декларируют последовательность действий, очень удобно когда весь флоу прописан последовательно и прочитать его можно без прыжков между файлами. А еще веселее становится после того, как через месяц после устранения дублирования вдруг оказывается что «некоторые штуки то оказывается были просто похожи но не являлись дублированием». И разворачивать всю эту штуку уже не так приятно. Та же история и с «поведениями» для Yii. Они конечно здорово и весело, но при определенном масштабе создают сложности для понимания кода.

 

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

  • А не вытекла ли у меня логика случайно из какого-то объекта? Может она должна быть где-то инкапсулирована?
  • А не проще ли мне вынести эту логику в какой-то отдельный объект, который будет медиатором между той и этой штукой (например между контроллером и моделью данных, или мидлвари, или еще чего).
  • А как много дублирования? одно и то же в двух местах? не, пока рано что-то с этим делать. Добавлю пометку на будущее а если надо будет править буду уже думать.

https://habrahabr.ru/post/326960/#comment_10200012

Конвертируем MyISAM в InnoDB

Очень старая (2005 год) статья от Петра Зайцева (Percona) о конвертировании  MyISAM таблиц в InnoDB

http://peter-zaitsev.livejournal.com/6154.html

Are there any performance benefits with Innodb tables when ? Yes there are, even if you forget about support
of transactions, row level locking and consistent reads. Innodb tables are clustered by PRIMARY KEY. This
means a lot of overhead for writes but PRIMARY KEY reads could be twice as fast compared to MyISAM tables for
disk bound loads. To retrieve the row by PRIMARY KEY MyISAM normally needs 2 reads, while Innodb only one.
If you have table small enough to fit in memory there are more benefits — Innodb caches both data and index
in memory, while MyISAM caches only index, using OS cache for caching data, which means Innodb can have much
better performance especially for Random IO (joins), moreover Innodb builds hash indexes in the buffer pool based on
BTREE indexes, which speeds up lookups even further. This all makes Innodb up to 3 times faster for some heavy join
queries, when data is in memory. Even if tables do not fit in memory you get asynchronous read-ahead and asynchronous
dirty buffers flush which is helpful in some cases.

 

СУБД-шечка #1

Репликация из MySQL в Tarantool

Интересный кейс использования Tarantool вместо MySQL-сервера. Репликатор имеет свои ограничения и особенности, надеемся он продолжит развиваться. Видео

Запомнилось: в MySQL 5.7 нет и не будет режима handler socket

MySQL на стеройдах

Кратко описана история создания и развития MySQL-сревера. Покупка SUN-ом, далее покупка Oracle.

Рассматриваются актуальные на тот момент (2011 год) форки MySQL. Более полное описание форков

Uber Причины перехода с Postgres на MySQL

Перевод довольно нашумевшей статьи.

Запомнилось: MySQL в индексе хранит ссылку на pk таблички (id), postgres в индексе хранит адрес на диске

Про MySQL 5.7

Небольшая выжимка от нашей команды об изменениях в версии 5.7 на основе двух докладов.

Обязательно посмотрите сами доклады!