Задать вопрос
@SemenDemon

Чем жертвовать при шардировании?

mysql таблица объекта недвижимости.
+------------+------------+-----+-------------+
| real_id    | date       | ... | locality_id |
+------------+------------+-----+-------------+
| 1          | 12.12.2012 | ... | 2           |
| 2          | 12.12.2013 | ... | 2           |
| ...        | ...        | ... | ...         |
| 23.000.000 | 12.12.2018 | ... | 5           |
+------------+------------+-----+-------------+

таблица с фото
+-------------+-----------+---------+
|   foto_id   |    url    | real_id |
+-------------+-----------+---------+
|           1 | 1.jpg     |       1 |
|           2 | 2.jpg     |       1 |
|         ... | ...       |     ... |
| 200.000.000 | 98989.jpg |   55555 |
+-------------+-----------+---------+


таблицу с фото хочется порезать на шарды по 5млн. но тогда потеряется простая возможность
select * from foto_table where real_id = 2;

Не будет ли больно если хранить связи с фото через implode в колонке?
+------------+------------+-----+-------------+---------+
| real_id    | date       | ... | locality_id |  foto   |
+------------+------------+-----+-------------+---------+
| 1          | 12.12.2012 | ... | 2           | 1_2     |
| 2          | 12.12.2013 | ... | 2           | 7_4_3   |
| ...        | ...        | ... | ...         | ..._... |
| 23.000.000 | 12.12.2018 | ... | 5           | 5_6_3   |
+------------+------------+-----+-------------+---------+


а таблицу с фото привести к виду
+-------------+-----------+
|   foto_id   |    url    |
+-------------+-----------+
|           1 | 1.jpg     |
|           2 | 2.jpg     |
|         ... | ...       |
| 200.000.000 | 98989.jpg |
+-------------+-----------+


поиск все равно работает на Elasticsearch. Таблица объектов будет резаться по locality_id. Т.е. стараться все данные хранить в записи, что бы не искать их по шардам.
  • Вопрос задан
  • 117 просмотров
Подписаться 2 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
VladimirAndreev
@VladimirAndreev
php web dev
это сколько же, простите, у вас записей в таблице фото, что вы их шардить хотите?
и кстати, а не дешевле будет в memcached / mongodb хранить связку real_id: [{"id": foto_id, "url": url}]?
Ответ написан
Режте объекты как удобно. А фотки ложите в тот же шард где и объект.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы