![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
http://habrahabr.ru/company/beeline/blog/218669/
В статье вроде все не сильно страшно, но вот вопрос - откуда такая боязнь join-ов?
Если там таблица c размерностями мизерного размера и помещается вместе с индексами в кэш, то join на нее достаточно дешевый, чтобы на него было пофиг совершенно, по сравнению с вычитыванием каких-нибудь сотен миллионов записей из таблицы фактов.
Впрочем, если в реляционную БД попытаться засунуть неструктурированные данные и попытаться их нормализовать, а еще не дай бог попытаться поверх этого сделать иммутабельность, то запросы действительно вырождаются в десятиэтажные джоины (и все равно я особой проблемы в этом не вижу).
В статье вроде все не сильно страшно, но вот вопрос - откуда такая боязнь join-ов?
Если там таблица c размерностями мизерного размера и помещается вместе с индексами в кэш, то join на нее достаточно дешевый, чтобы на него было пофиг совершенно, по сравнению с вычитыванием каких-нибудь сотен миллионов записей из таблицы фактов.
Впрочем, если в реляционную БД попытаться засунуть неструктурированные данные и попытаться их нормализовать, а еще не дай бог попытаться поверх этого сделать иммутабельность, то запросы действительно вырождаются в десятиэтажные джоины (и все равно я особой проблемы в этом не вижу).
no subject
Date: 2014-04-09 08:25 pm (UTC)no subject
Date: 2014-04-09 09:18 pm (UTC)no subject
Date: 2014-04-10 03:51 am (UTC)К статье - дык может просто не осилили? Поди для каких-нибудь редких запросов можно сделать materialized view или что-то в этом духе...
no subject
Date: 2014-04-09 09:11 pm (UTC)Впрочем, если в реляционную БД попытаться засунуть неструктурированные данные и попытаться их нормализовать
В Data Warehouse уже давно придумали, как данные нормализовать и как потом их в кубы собирать, чтобы джоины без проблем писались бухгалтерами менеджерами.
no subject
Date: 2014-04-09 09:30 pm (UTC)(no subject)
From:no subject
Date: 2014-04-10 03:28 am (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2014-04-10 04:16 am (UTC)Переводим: NoSql, запись всего в кучу и последовательная обработка всего в лоб.
Так получается? :)
no subject
Date: 2014-04-10 04:28 am (UTC)>Так получается? :)
там ничего не сказано, никаких монго хадуп риак, поэтому думаю там либо пачка mysql-й либо тесктовые файлы
no subject
Date: 2014-04-10 07:51 am (UTC)no subject
Date: 2014-04-10 11:12 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-04-10 04:53 am (UTC)один могильничексервер с CouchDB. Документы там были простые, но на каждый документ приезжал еще апдейт, а эта тварь хранила и предыдущую версию. И считался там один отчетик, имено так - жабаскриптом в лоб перебором. Не я делал, в наследство досталось.Посмотрел я на это дело да и перенес все в Postgres. Итог: отчет считается 2 минуты вместо 30, обьем на диске 1 гиг вместо 14 гиг в коуче за один и тот же период времени.
И я так понимаю, что никакими оптимизаторами запросов в модной бигдате даже и не пахло?
no subject
Date: 2014-04-10 06:13 am (UTC)Бигдаты на столько биг, что их оптимизировать бессмысленно. :)
no subject
Date: 2014-04-10 07:20 am (UTC)если дать дураку стеклянный хуй, он обязательно его разобъет.
Носикль это такой молоток который умеет бить только по одному гвоздю. Все остальное - кровавое месиво из пальцев.
В вашем примере CouchDB и Postgres ни при чем :)
no subject
Date: 2014-04-10 06:38 am (UTC)Буквосчетание BigData в сабже какбэ намекает нам...
no subject
Date: 2014-04-10 06:59 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-04-10 07:15 am (UTC)сейчас всё проекттирование схем вкурило тему разделение таблиц на мелкие и крупные -- см напр. memsql подход к шардированию
неструктурированные данные это конечно глупость и колхоз, я могу понять организационные этому причины, а технические -- нет
no subject
Date: 2014-04-10 11:34 am (UTC)Например. Какая-то софтина генерирует гигабайт слабоструктурированного говна (текстовых логов) в сутки. Периодически с говна снимаются сливки - отбираются ключевые события и перекладываются в БД. Далее говно упаковывается в герметичные контейнеры (gzip) и хранится где-то в облаках. Периодически возникает необходимость это говно перетряхивать в разных целях - собрать статистику, поискать подробности по конкретным сессиям, итд..
Можно это говно сразу сортировать и пихать в СУБД. Но это долго, дорого и рискованно. Лучше использовать СУБД как индекс, кэш и стейт для кучи неструктурированного говна.
no subject
Date: 2014-04-10 07:37 am (UTC)Зачем тут надо no-sql, если в обычных БД, если нужно, делается тоже самое?
no subject
Date: 2014-04-10 12:28 pm (UTC)А еще в SQL запись в таблицу килобайта данных строки отжирает чуть ли не мегагерц тактов. Даже в prepared statement всякие params mapping, marshalling, блокировки, транзакции, проверки.. Если нужно просто строку байтов сохранить для потомства, то тут SQL сосет.
no subject
Date: 2014-04-10 08:00 am (UTC)no subject
Date: 2014-04-10 08:47 am (UTC)no subject
Date: 2014-04-10 09:05 am (UTC)no subject
Date: 2014-04-10 06:33 pm (UTC)Так вот стоит там Oracle и MS SQL. С 1С впридачу. Причем 1С играет ключевую роль.
Объем базы 1С около 2 терабайт. Объем базы Oracle боюсь представить. И ничего. Все это крутится, работает. Каждый день перечисляются деньги, строятся отчеты (да, да из 1С!).
Кстати везде Windows, а вовсе не Linux.
Так что вот, дорогие товарищи, как оно все на самом деле...
no subject
Date: 2014-04-10 07:10 pm (UTC)no subject
Date: 2014-04-10 07:32 pm (UTC)Вообще в корпоративе БигДата это пока ещё в основном анекдот, бизнес просто не знает что с ним делать.
Основной заказчик БигДаты на сегодня это аналитические отделы спецслужб. Падают к ним данные от сотен больших коммуникационных и околобанковских контор. Естественно для единобразности они денормализуются в плоские "логи" с космическим количеством записей. Ну вот и из этого нужно все записи где встречается конкретный номер/имей телефона/карточки/имя. Получается? Ок, а теперь попробуйте по "похожим" именам... а теперь ещё вот так или вот так...
если реляционка, то это "лайки" + джоины и они работать будут ДНЯМИ а времени - минуты. Общая задача это не найти иголку в стоге сена, а найти соломину ровно 10 сантиметров длиной и конкретно жёлто-зелёного оттенка. Реляционкой не решается эффективно, разложить стог на отдельные соломины в рядочек не помогает ну нифига.
Что скажет в этом месте программист? Ну так не делаете лайки а пишите специальный алгоритм - ну и вот MapReduce для этого и написали. Сначала применяли узко, в гуглах да АНБ всяких, а потом поняли что можно продавать ширше, назвали это для маркетинга "БигДата", чтобы конкретные пацаны заказывали - "ну у меня то БОЛШОЙ ДАТА - Мегабайтов 100!"
no subject
Date: 2014-04-10 08:25 pm (UTC)дайвате господа ораклисты, продемонстрируйте скорость работы like '%Ivanov%' поверх 100 петабайт :)
no subject
Date: 2014-04-11 09:45 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-04-11 03:41 am (UTC)Для увеличения точности обзора, более эффективного принятия решений?
Дык накладные расходы когда-то начинают превышать пользу.
no subject
Date: 2014-04-11 06:40 am (UTC)Пример. Как-то возникла необходимость посчитать среднее время обслуживания клиента на кассе. Не время между операциями, не время от создания до закрытия чека (чек создают заранее), а время от добавления первой строки до закрытия чека. В БД такой информации нет, а в логах есть. Сделали разбивку по кассирам, добавили счетчик ошибок и отмен - сразу открылась картина, кто на кассе работает, а кто херней страдает.
(no subject)
From:(no subject)
From:(no subject)
From: