Допустим, у нас так:
Album                      Photo
+----+-----------------+   +----+-------------------+
| id | name            |   | id | album_id | number |
+----+-----------------+   +----+----------+--------+
| 1  | outsession'16   |   | 1  | 2        | 1      |
| 2  | new year'17     |   | 2  | 2        | 2      |
| 3  | man'ka's deanon |   | 3  | 1        | 1      |
+----+-----------------+   | 4  | 3        | 1      |
  ^                        | 5  | 1        | 2      |
  |                        | 6  | 3        | 2      |
  |                        | 7  | 2        | 3      |
  |                        +----+-------------------+
  |                               |
  +-------------------------------+Зачем Photo.number? Например, хотим урлы /albums/:album_id/:photo_number (/albums/1/1, /albums/1/2, /albums/2/1, /albums/2/2, …, ну ты понел)
Внимание, вопрос: как нам обеспечить вставку записей в Photo со строго последовательными и неизменяемыми (фотки можно удалять) number?
Да, у нас «хуйлоад», тыща бнвачеров ломится заливать фоточки в альбом с деаноном маньки. Без использования очередей. Только наш любимый язычок и постгрес. Триггеры можно, но нежелательно — хуёво поддерживаются, неочевидные, нет интеграции в ORM, и т.д.
Только давайте для начала предоставим слово маньке. Он тут рассказывал, какой он специалист по RDBMS и постгресу в частности. Ну а когда манька соснёт и нелепо сольётся, выслушаем комарика.
```
Текстовых данных мало (порядка 300Mb за два года), нужен полнотекстовый поиск. Востребованы редко, поэтому в памяти держать не хочется, по этой причине не подходит еластик. Идеально подошёл бы sqlite, но, как я понял, без переконпеляции с доп. модулями там проблемы со стеммингом русского языка. Ещё вариант опробовать постгресовский rum, про который писал комар, но тогда придётся держать в памяти постгрес. Можно выгружать скриптом на гитхуп и пользоваться его поиском, но там только точное совпадение слова и показывается всего два топ матча.
Какие ещё есть варианты, чтобы поменьше пердолькаться?