juan_gandhi: (Default)
Juan-Carlos Gandhi ([personal profile] juan_gandhi) wrote2009-03-13 10:43 am

студент и основоположник (басня в прозе)

Широко известна в народе так называемая бигтейбл, внедрённая в дискурс гуглом. Что за бигтейбл такой? Это пакеты данных, индексированные ключом; ключ - строка неограниченной длины. Пакет не обязательно читать-писать целиком, он состоит из групп колонок, так что целиком читается-пишется только группа; группа состоит из колонок. В каждой ячеечке (ключ + колонка) хранится какое-то данное; можно по желанию хранить и историю, т.к. к данному приложена отметка времени; юзер сам выбирает, хранить последнюю или всё что есть.

Удобно, быстро, дёшево; да ещё и распределять данные легко: фактически таблица состоит из таблеток, содержащих определённую часть ключей (смежную); таблетки ж разбросаны по серверам. Репликация тоже делается без участия человека.

Одно неудобство - всё это на си, и работает через арписи. Сишникам раздолье, у них есть соответствующие классы; а джавщики страдали. Наконец выдающийся основоположник Ф.Е. осчастливил население, написав джавный интерфейс; программист судьбу благословил.

В это время в Сингапуре учился студент Маниш, родом из индийской деревни. В Сингапуре учёба, как в СССР, халявная, только потом надо три года отработать как молодому специалисту. А работа в Сингапуре одна: в банке потеть над банковским софтвером.

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

В Гугле с практикантами порядок такой: все эти левые резюме сваливаются в базу; их там десятки тысяч; желающие инженера копаются в этой базе и иной раз лениво выдёргивают какой-нибудь пёрл (всё та же Пирамида Лебедева), и отправляют на доследование, т.е. в кадры. Кадры организуют телефонные интервью, ну и т.д. Обычно на этом и кончается: спросишь у будущего практиканта, может ли он запрограммировать Фибоначчи на каком-либо языке, он и вянет. Маниш не отвял, а браво ответил на все вопросы и осенью явился в Маунтин Вью.

Как это осенью? А так: кроме летней, бывает ещё зимняя практика, на два семестра. Ну там сначала-то он записался на один семестр, но вскоре это переиграл. Да и то; зарплаты в гугле практикантам плотят больше иной раз, чем инженерам в стартапах в Пало Альто. Так что у меня завёлся весёлый умный практикант. Быстренько освоил язык питон, а также гугловский стиль джавы.

А нам как раз об это время шибко надоел майсиквел, на котором вся трансляция держится. Надо было бы, конечно, просто добавив серверов, но кто же даст компьютер (один!) на такое пустяковое дело как перевод сотни с лишним проектов на сотню с лишним языков! Растрата одна... этак на кофейную машину ценой в 11 штук денег не останется.

А бигтейбл можно деплоить на бигтейбловых серверах, и им, бигтейбловцам, типа не жалко (им же рапортовать, мол, ещё сто гигабайт добавили, ура). Так что, с двойной репликацией, мы получили практически шесть машин под наши таблицы. Маниш стал, естественно, портировать данные с майсиквела, и рисовать джавный доступ.

Ну вы ж понимаете, в майсиквеле работает такая программа хитрая, она запросы оптимизирует, данные читает параллельно, поддерживает транзакции... ничего этого в бигтейбле нету. Это есть в других инфраструктурах, но они ещё не существовали на тот момент.

И что Маниш? А Маниш обнаруживает такую простую вещь: если у нас таблица разбита на 20 таблеток, и вся информация, где какие ключи, известна, то почему бы нам в 20 threadов не читать эту самую таблицу, со всех таблеток параллельно. И пишет Маниш такую параллельную читалку.

Дело в том, что это особенность джавы - лёгкость, с которой ты пишешь multithread code. В си сдохнуть можно такое написать.

Ну и, после непродолжительного вылизывания стиля и рисования грамотных юниттестов, сабмитит он это дело; я аплодирую. Теперь следующий этап, впарить этот код Выдающемуся Основоположнику.

Пишем ченджлист, посылаем ему на ревью.

Тишина. Две недели - ни слова.

Пишем Вежливое Письмо.

Тишина. Две недели, тишина.

Пишем ещё письмо. В ответ нам сообщают, что а) надо ещё разобраться; б) есть недоработки; в) мы сами над аналогичным вопросом думаем.

И так мы провели оставшиеся полгода. Пока Маниш не уехал обратно в Сингапур.

Потом я ещё три месяца надоедал основоположнику. Потом я пошел в другую команду. В той, предыдущей, все эксперименты с бигтейблом выкинули на помойку. Включая, очевидно, и код Маниша.

Так что воз и ныне там.

А Маниш нормально; полученной в Гугле зарплатой он расчитался с Сингапуром и поехал в Цюрихское отделение Гугла, на постоянку. И ныне там; катается на лыжах, сделал себе модную татуировку. Думаю, у него всё хорошо.

Но Гугл так и не умеет читать бигтейблы параллельно.

[identity profile] ex-kashanya.livejournal.com 2009-03-13 06:13 pm (UTC)(link)
Гугл всё равно лучше.

[identity profile] itman.livejournal.com 2009-03-13 06:17 pm (UTC)(link)
Я все-таки справедливости ради замечу, что
а) не гугл придумал "индексацию ключом"
б) это не совсем индексация ключом, это столбцовые базы данных (column-oriented databases).
Вместо кортежа (n-tuple) (f1, f2, ... ,fn) хранятся различные проекции этого кортежа (в том числе с переставленными атрибутами). Фишка в том, что эти проекции проще индексировать, сжимать и быстро находить.

[identity profile] ivan-gandhi.livejournal.com 2009-03-13 06:30 pm (UTC)(link)
Кортежи, конечно, чисто мысленное построение.

[identity profile] itman.livejournal.com 2009-03-13 06:35 pm (UTC)(link)
Как и вся математические абстракции.

[identity profile] dkfl.livejournal.com 2009-03-13 06:44 pm (UTC)(link)
как-то сложно у вас в гугле бегтейбл объясняется..
обычно пишут "столбцовые базы данных". куда понятней :)

[identity profile] ivan-gandhi.livejournal.com 2009-03-13 06:55 pm (UTC)(link)
Я про "столбцовые базы данных" ничего до сегодняшнего дня не слышал. :)

[identity profile] ivan-gandhi.livejournal.com 2009-03-13 07:00 pm (UTC)(link)
Чем лучше?

[identity profile] scolar.livejournal.com 2009-03-13 07:40 pm (UTC)(link)
Сдаётся мне, что для человека, так не любящего совок, Вы слишком наплевательски относитесь к NDA.

[identity profile] ktotam.livejournal.com 2009-03-13 07:44 pm (UTC)(link)
чем армян.

[identity profile] pigmeich.livejournal.com 2009-03-13 07:52 pm (UTC)(link)
А он разве в Гугле работает?

[identity profile] simonff.livejournal.com 2009-03-13 07:58 pm (UTC)(link)
To be fair, это скорее нехарактерный случай. Я с основоположниками особо не сталкивался (а когда сталкивался, получал быстрые ответы), но я могу себе представить, какое количество code reviews им приходит. Если человек через день-два не отвечает, обычно или толкаешь его коллег, или идешь к нему вживую или в чат, и там все быстро решается - или он понимает, зачем тебе это нужно, или ты понимаешь, почему это никому не нужно. Конечно, если целенаправленно ни с кем больше не говорить, а ждать формального ответа, у code review есть шанс протухнуть.

[identity profile] mikkim08.livejournal.com 2009-03-13 08:04 pm (UTC)(link)
Так бигтейбл же это открытая информация.

[identity profile] scolar.livejournal.com 2009-03-13 08:14 pm (UTC)(link)
Закрытой информацией может быть кто кого и как нанял, и кто кого куда и с чем послал.

[identity profile] scolar.livejournal.com 2009-03-13 08:16 pm (UTC)(link)
А Гугл это вообще что?

[identity profile] sab123.livejournal.com 2009-03-13 08:17 pm (UTC)(link)
Про "убиться можно" - наглая ложь.

[identity profile] brumka.livejournal.com 2009-03-13 08:55 pm (UTC)(link)
Вполне типичная история. Студент полез поперёд батьки, который вдобавок ещё и "Основоположник".

А сами разве не можете пользоваться кодом? Почему на это требуется соизволение верховного Основоположника?

[identity profile] poluzhivago.livejournal.com 2009-03-13 09:03 pm (UTC)(link)
В жизни не пойму, почему вопросы эффективности должны интересовать наемного работника больше, чем они интересуют владельцев (совладельцев, держателей акций и т.п.) этого бизнеса.

Я, когда имею дело с новой фирмой, запускаю несколько пробных шаров, вроде маняшиного кода, и жду. Если вижу, что "идет", сделаю все, что могу, и даже больше. Но если моя инициатива никому не нужна (или хуже - наказуема), строю свои дальнейшие отношения с работодателем по принципу "сделаю все, что скажешь, но не более того". Надо сказать никогда никаких конфликтов или непонимания с "их" стороны не было.

[identity profile] pigmeich.livejournal.com 2009-03-13 09:04 pm (UTC)(link)
Это такое слово с разноцветными буквами и желтыми «о».

[identity profile] ivan-gandhi.livejournal.com 2009-03-13 09:11 pm (UTC)(link)
Сами, конечно, пользовались - пока все не разбежались. После чего было предано забвению.

Я, на самом деле, пару раз смог добиться благосклонного одобрения моего кода основоположником - но в моём коде не было такой наглой эффективности, как у Маниша.

[identity profile] illy-drinker.livejournal.com 2009-03-13 09:12 pm (UTC)(link)
Вы про многопоточность?
ДУмаете библиотеки заменяют родную поддержку в языке (со всей оптимизацией и пр)?

[identity profile] ivan-gandhi.livejournal.com 2009-03-13 09:12 pm (UTC)(link)
Если будут претензии, я переведу этот пост в режим для френдов.

[identity profile] sab123.livejournal.com 2009-03-13 09:15 pm (UTC)(link)
А что там можно особо оптимизировать? Вот разве что стек сделать в виде списка.

[identity profile] ivan-gandhi.livejournal.com 2009-03-13 09:15 pm (UTC)(link)
Полухарактерный. Бывало так, бывало и так. Однажды от Джоша Блока, вполне интеллигентного и покладистого человека, я так и не дождался ревью, но не больно и надо было. А так - все люди разные, конечно. И, несмотря на все эти глюки, я этих основоположников очень уважаю, даже если у нас взгляды радикально расходятся.

[identity profile] besisland.livejournal.com 2009-03-13 09:38 pm (UTC)(link)
Ох уж этот «Гугл».

[identity profile] illy-drinker.livejournal.com 2009-03-13 09:40 pm (UTC)(link)
так в Яве сообществе они этим занимаются с 90х
лок стратегии или общение процессора с локальными кешами на многоядерных архитектурах

Page 1 of 3