Допустим, у нас так:
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, про который писал комар, но тогда придётся держать в памяти постгрес. Можно выгружать скриптом на гитхуп и пользоваться его поиском, но там только точное совпадение слова и показывается всего два топ матча.
Какие ещё есть варианты, чтобы поменьше пердолькаться?