metaclass: (Default)
[personal profile] metaclass
http://habrahabr.ru/company/beeline/blog/218669/
В статье вроде все не сильно страшно, но вот вопрос - откуда такая боязнь join-ов?
Если там таблица c размерностями мизерного размера и помещается вместе с индексами в кэш, то join на нее достаточно дешевый, чтобы на него было пофиг совершенно, по сравнению с вычитыванием каких-нибудь сотен миллионов записей из таблицы фактов.

Впрочем, если в реляционную БД попытаться засунуть неструктурированные данные и попытаться их нормализовать, а еще не дай бог попытаться поверх этого сделать иммутабельность, то запросы действительно вырождаются в десятиэтажные джоины (и все равно я особой проблемы в этом не вижу).

Date: 2014-04-09 08:25 pm (UTC)
From: [identity profile] falcrum.livejournal.com
Чё джойны - там ещё юнион на юнионе бывает...

Date: 2014-04-09 09:18 pm (UTC)
From: [identity profile] vissarion.livejournal.com
юнион быстрее ора

Date: 2014-04-10 03:51 am (UTC)
From: [identity profile] maksenov.livejournal.com
А что с юнионом-то не так? Ну даст он доп. сортировку если надо уникальные записи только, а это решается реструктуризацией запроса (например, один DISTINCT с кучей UNION ALL, хотя это должен утрясать оптимизатор). Тащемта, даже в очень сложных стандартных моделях (типа POSC Epicenter или PPDM) юнионы зверь достаточно редкий, и париться из-за этого вообще не стоит.

К статье - дык может просто не осилили? Поди для каких-нибудь редких запросов можно сделать materialized view или что-то в этом духе...

Date: 2014-04-09 09:11 pm (UTC)
From: [identity profile] vit-r.livejournal.com
BigData - это когда продавец втирает менеджерам, что специалисты по базам не нужны, а можно просто купить их чудесные тулы. (А рядом стоятя продавцы железа и радостно кивают головами)

Впрочем, если в реляционную БД попытаться засунуть неструктурированные данные и попытаться их нормализовать

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

Date: 2014-04-09 09:30 pm (UTC)
From: [identity profile] insanegigolo.livejournal.com
а по последнему пункту, что стоит почитать?

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2014-04-09 09:39 pm (UTC) - Expand

Date: 2014-04-10 03:28 am (UTC)
From: [identity profile] avnik.livejournal.com
обычно -- хипстерское bigdata -- это то что вы описали, но втиснутое в бюджет в три раза меньше. И все беды там ровно от этого.

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2014-04-10 05:33 am (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2014-04-10 09:18 am (UTC) - Expand

Date: 2014-04-10 04:16 am (UTC)
From: [identity profile] vp.livejournal.com
"...Нужна другая архитектура базы данных. Если вам нужны гибкие запросы, то проще всего хранить данные неструктурированно — потому что для каждого нового запроса придётся иначе строить новую оптимальную структуру. Обычные базы данных направлены на максимальное быстродействие в рамках ограниченных вычислительных ресурсов...."

Переводим: NoSql, запись всего в кучу и последовательная обработка всего в лоб.
Так получается? :)

Date: 2014-04-10 04:28 am (UTC)
From: [identity profile] kranov.livejournal.com
>Переводим: NoSql, запись всего в кучу и последовательная обработка всего в лоб.
>Так получается? :)
там ничего не сказано, никаких монго хадуп риак, поэтому думаю там либо пачка mysql-й либо тесктовые файлы

Date: 2014-04-10 07:51 am (UTC)
From: [identity profile] bagamut.livejournal.com
параллельная обработка, кластеры же

Date: 2014-04-10 11:12 am (UTC)
From: [identity profile] serbod.livejournal.com
NoSQL для CRUD (через tables API), простые SELECTы на сервере, сорты, джойны, юнионы и прочая групповуха на стороне клиента.

(no subject)

From: [identity profile] maksenov.livejournal.com - Date: 2014-04-10 11:33 am (UTC) - Expand

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2014-04-10 11:58 am (UTC) - Expand

(no subject)

From: [identity profile] maksenov.livejournal.com - Date: 2014-04-10 12:03 pm (UTC) - Expand

(no subject)

From: [identity profile] berezovsky.livejournal.com - Date: 2014-04-10 12:18 pm (UTC) - Expand

(no subject)

From: [identity profile] maksenov.livejournal.com - Date: 2014-04-10 12:23 pm (UTC) - Expand

Date: 2014-04-10 04:53 am (UTC)
vinsent_ru: (вомбат)
From: [personal profile] vinsent_ru
был у меня один могильничек сервер с CouchDB. Документы там были простые, но на каждый документ приезжал еще апдейт, а эта тварь хранила и предыдущую версию. И считался там один отчетик, имено так - жабаскриптом в лоб перебором. Не я делал, в наследство досталось.
Посмотрел я на это дело да и перенес все в Postgres. Итог: отчет считается 2 минуты вместо 30, обьем на диске 1 гиг вместо 14 гиг в коуче за один и тот же период времени.

И я так понимаю, что никакими оптимизаторами запросов в модной бигдате даже и не пахло?

Date: 2014-04-10 06:13 am (UTC)
From: [identity profile] kkirsanov.livejournal.com
--И я так понимаю, что никакими оптимизаторами запросов в модной бигдате даже и не пахло?

Бигдаты на столько биг, что их оптимизировать бессмысленно. :)

Date: 2014-04-10 07:20 am (UTC)
From: [identity profile] fas-tm.livejournal.com
>>И считался там один отчетик, имено так - жабаскриптом в лоб перебором
если дать дураку стеклянный хуй, он обязательно его разобъет.
Носикль это такой молоток который умеет бить только по одному гвоздю. Все остальное - кровавое месиво из пальцев.
В вашем примере CouchDB и Postgres ни при чем :)

Date: 2014-04-10 06:38 am (UTC)
From: [personal profile] alll
> Если там таблица c размерностями мизерного размера и помещается вместе с индексами в кэш

Буквосчетание BigData в сабже какбэ намекает нам...

Date: 2014-04-10 06:59 am (UTC)
From: [identity profile] metaclass.livejournal.com
ну 1 млрд записей в каком-нибудь справочнике это тащемта уже биг, видимо. Впрочем, не сильно понимаю, как тут nosql поможет, скорее надо шардить по обычным реляционным серверам это дело.

(no subject)

From: [identity profile] volodymir-k.livejournal.com - Date: 2014-04-10 07:07 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2014-04-10 07:22 am (UTC) - Expand

(no subject)

From: [identity profile] bagamut.livejournal.com - Date: 2014-04-10 08:03 am (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2014-04-10 08:51 am (UTC) - Expand

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2014-04-11 04:52 pm (UTC) - Expand

(no subject)

From: [personal profile] alll - Date: 2014-04-10 07:25 am (UTC) - Expand

(no subject)

From: [identity profile] thetvv.livejournal.com - Date: 2014-04-10 01:24 pm (UTC) - Expand

(no subject)

From: [identity profile] anonim-legion.livejournal.com - Date: 2014-04-11 09:43 am (UTC) - Expand

(no subject)

From: [identity profile] berezovsky.livejournal.com - Date: 2014-04-11 10:32 am (UTC) - Expand

(no subject)

From: [identity profile] anonim-legion.livejournal.com - Date: 2014-04-11 10:39 am (UTC) - Expand

(no subject)

From: [identity profile] berezovsky.livejournal.com - Date: 2014-04-11 10:46 am (UTC) - Expand

Date: 2014-04-10 07:15 am (UTC)
From: [identity profile] volodymir-k.livejournal.com
собственно и традиционные RDBMS про джойны так и говорят -- если маленький справочничек, то повезло и ок, а в общем случае две биг таблицы связывать -- пипец перформансу, нужен денорм

сейчас всё проекттирование схем вкурило тему разделение таблиц на мелкие и крупные -- см напр. memsql подход к шардированию

неструктурированные данные это конечно глупость и колхоз, я могу понять организационные этому причины, а технические -- нет

Date: 2014-04-10 11:34 am (UTC)
From: [identity profile] serbod.livejournal.com
> неструктурированные данные это конечно глупость и колхоз, я могу понять организационные этому причины, а технические -- нет

Например. Какая-то софтина генерирует гигабайт слабоструктурированного говна (текстовых логов) в сутки. Периодически с говна снимаются сливки - отбираются ключевые события и перекладываются в БД. Далее говно упаковывается в герметичные контейнеры (gzip) и хранится где-то в облаках. Периодически возникает необходимость это говно перетряхивать в разных целях - собрать статистику, поискать подробности по конкретным сессиям, итд..

Можно это говно сразу сортировать и пихать в СУБД. Но это долго, дорого и рискованно. Лучше использовать СУБД как индекс, кэш и стейт для кучи неструктурированного говна.

Date: 2014-04-10 07:37 am (UTC)
From: [identity profile] jakobz.livejournal.com
Я вот не понимаю такой штуки: есть же подход с OLTP и Data Warehouse-базами в SQL-тусе тыщу лет. У тебя задача хорошо ложится на map/reduce? Ну возьми ты этот DWH, вынь с него все справочники в кэш, потом делай select * from facts - и считай на каком-нибудь дотнете в один проход свой map/reduce. Один хер у тебя в диск это упрется, хоть на какой БД.

Зачем тут надо no-sql, если в обычных БД, если нужно, делается тоже самое?

Date: 2014-04-10 12:28 pm (UTC)
From: [identity profile] serbod.livejournal.com
В SQL все относительно прекрасно, когда состав хранимых данных не меняется каждую неделю. =)

А еще в SQL запись в таблицу килобайта данных строки отжирает чуть ли не мегагерц тактов. Даже в prepared statement всякие params mapping, marshalling, блокировки, транзакции, проверки.. Если нужно просто строку байтов сохранить для потомства, то тут SQL сосет.

Date: 2014-04-10 08:00 am (UTC)
From: [identity profile] serguei tarassov [arbinada.com] (from livejournal.com)
"Большие данные" как состояние отрасли (http://www.arbinada.com/main/node/1351)

Date: 2014-04-10 08:47 am (UTC)
From: [identity profile] tzirechnoy.livejournal.com
Пигдата -- это когда фирма покупает два рэйд-массива, с контрактом что если что -- то через сутки производитель притащит ещё, два бэкплэйна к ним, тожэ с контрактом, что если что, то производитель через сутки притащит ещё, два компа для обработки от HP, с контрактом, что если что, то производитель притащит ещё, два свитча для соединения всего этого, с уверениями, что такого за сутки в городе можно купить ещё и двух обезьян от известного HR-агенства, с обещанием, что если что, то через сутки можно нанять ещё.

Date: 2014-04-10 09:05 am (UTC)
From: [identity profile] cghw9.livejournal.com
ух ты, а что за разработчики которые боятся? на метан их надо пустить. или в криматорий.

Date: 2014-04-10 06:33 pm (UTC)
From: [identity profile] ng67.livejournal.com
В славном городе Санкт-Питербурхе, есть не менее славная контора - Вычислительный центр коллективного пользования. Который на весь город печатает квитанции за квартплату, ее собирает и рассылает кому надо.
Так вот стоит там Oracle и MS SQL. С 1С впридачу. Причем 1С играет ключевую роль.
Объем базы 1С около 2 терабайт. Объем базы Oracle боюсь представить. И ничего. Все это крутится, работает. Каждый день перечисляются деньги, строятся отчеты (да, да из 1С!).
Кстати везде Windows, а вовсе не Linux.
Так что вот, дорогие товарищи, как оно все на самом деле...

Date: 2014-04-10 07:10 pm (UTC)
From: [identity profile] sergiej.livejournal.com
2 терабайта это небольшая база. У Билайна в данном случае речь идёт о десятках новых терабайтов в день, а вся база - петабайты. Найти в ней в стиле реляционном можно, но даже простой поиск без джоинов по индексированому полю будет бежать минуты.

Date: 2014-04-10 07:32 pm (UTC)
From: [identity profile] sergiej.livejournal.com
да структурированы они! Проблема как правило в нескольких плоских таблицах с охренилиардами записей с кучей текста в каждой записи.
Вообще в корпоративе БигДата это пока ещё в основном анекдот, бизнес просто не знает что с ним делать.
Основной заказчик БигДаты на сегодня это аналитические отделы спецслужб. Падают к ним данные от сотен больших коммуникационных и околобанковских контор. Естественно для единобразности они денормализуются в плоские "логи" с космическим количеством записей. Ну вот и из этого нужно все записи где встречается конкретный номер/имей телефона/карточки/имя. Получается? Ок, а теперь попробуйте по "похожим" именам... а теперь ещё вот так или вот так...
если реляционка, то это "лайки" + джоины и они работать будут ДНЯМИ а времени - минуты. Общая задача это не найти иголку в стоге сена, а найти соломину ровно 10 сантиметров длиной и конкретно жёлто-зелёного оттенка. Реляционкой не решается эффективно, разложить стог на отдельные соломины в рядочек не помогает ну нифига.
Что скажет в этом месте программист? Ну так не делаете лайки а пишите специальный алгоритм - ну и вот MapReduce для этого и написали. Сначала применяли узко, в гуглах да АНБ всяких, а потом поняли что можно продавать ширше, назвали это для маркетинга "БигДата", чтобы конкретные пацаны заказывали - "ну у меня то БОЛШОЙ ДАТА - Мегабайтов 100!"
Edited Date: 2014-04-10 07:32 pm (UTC)

Date: 2014-04-10 08:25 pm (UTC)
From: [identity profile] sergiej.livejournal.com
Hadoop clusters are growing, and some operations teams are challenged with upgrading as many as 5000 HDFS nodes, storing more than 100 petabytes of data. Rolling Upgrades make this significantly easier to manage.
дайвате господа ораклисты, продемонстрируйте скорость работы like '%Ivanov%' поверх 100 петабайт :)

Date: 2014-04-11 09:45 am (UTC)
From: [identity profile] anonim-legion.livejournal.com
А что, триграммый поиск уже не в моде?

(no subject)

From: [identity profile] sergiej.livejournal.com - Date: 2014-04-11 08:51 pm (UTC) - Expand

(no subject)

From: [identity profile] anonim-legion.livejournal.com - Date: 2014-04-12 03:16 am (UTC) - Expand

(no subject)

From: [identity profile] sergiej.livejournal.com - Date: 2014-04-13 09:34 pm (UTC) - Expand

Date: 2014-04-11 03:41 am (UTC)
From: [identity profile] yuri-yurkevich.livejournal.com
Для чего вообще нужны такие большие массивы данных и их аггрегация?

Для увеличения точности обзора, более эффективного принятия решений?

Дык накладные расходы когда-то начинают превышать пользу.

Date: 2014-04-11 06:40 am (UTC)
From: [identity profile] serbod.livejournal.com
Ежемесячные расходы на сбор и хранение "сырых" данных не превышают расходов на содержание одного не шибко ценного сотрудника. Зато польза от анализа и принятого решения может быть впечатляющей.

Пример. Как-то возникла необходимость посчитать среднее время обслуживания клиента на кассе. Не время между операциями, не время от создания до закрытия чека (чек создают заранее), а время от добавления первой строки до закрытия чека. В БД такой информации нет, а в логах есть. Сделали разбивку по кассирам, добавили счетчик ошибок и отмен - сразу открылась картина, кто на кассе работает, а кто херней страдает.

(no subject)

From: [identity profile] yuri-yurkevich.livejournal.com - Date: 2014-04-11 07:09 am (UTC) - Expand

(no subject)

From: [identity profile] anonim-legion.livejournal.com - Date: 2014-04-11 09:50 am (UTC) - Expand

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2014-04-11 10:17 am (UTC) - Expand

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 27th, 2025 04:07 pm
Powered by Dreamwidth Studios