среда, 9 сентября 2015 г.

Не стоит возвращаться в реляционные базы после nosql

Немножко копался сегодня с движком одного интернет магазина.

Обычно, я думаю, что удивления мне уже не испытать, разное видел, в цирк ходил, всякое такое.

Но, жизнь как известно богаче любых придумок.

Увидел в схеме базы данных в таблице товаров интересное поле с именем :

items_same_price

Странное название.
same? price?

Непонятно.
Особенно изумило что значение этого поля огромные списки чисел через запятую.

Неужели это самое ?!

Да не, быть не может такого анекдота.

Пруф скрин:


Да, это действительно id тех товаров цена которых совпадает.

Казалось бы, как человек, который может такое сделать, одевает штаны? Руки то куда ему девать.

Ведь пока это поле считаешь, разобьешь по атомарным значениям (привет нормализация), засунешь в запрос, выполнишь его, к тому времени можно уж пару
select .... where price = ? 
запросто выполнить, и сразу получить рекордсет нужный, без выкрутасов.

Зацепила меня это архитектурное решение, долго с разных сторон я его обдумывал.

Искал плюсы, искал мотивы.

Единственное что смог придумать, это то, что автор шедевра, только только из монги.
И привык к концепции документов, отсутствию реляций и вот так вот хранит всё свое с собой.

Наверное там это даже к месту. Но нести это обратно в реляционные базы. ну уж нафиг такое.

А у вас есть какие то предположения - как могло такое решение появиться?