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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Date: 2009-03-14 02:36 am (UTC)
From: [identity profile] ex-kashanya.livejournal.com
Он индексирует мой сайт, а Яндекс - нет.

(no subject)

From: [identity profile] pigmeich.livejournal.com - Date: 2009-03-14 12:43 pm (UTC) - Expand

(no subject)

From: [identity profile] ex-kashanya.livejournal.com - Date: 2009-03-14 01:08 pm (UTC) - Expand

(no subject)

From: [identity profile] pigmeich.livejournal.com - Date: 2009-03-14 01:10 pm (UTC) - Expand

(no subject)

From: [identity profile] ivan-gandhi.livejournal.com - Date: 2009-03-14 04:34 pm (UTC) - Expand

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

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

(no subject)

From: [identity profile] itman.livejournal.com - Date: 2009-03-13 06:35 pm (UTC) - Expand

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

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

Date: 2009-03-15 03:22 pm (UTC)
From: [identity profile] ingas.livejournal.com
Под "столбцовыми базами данных" (vertical store, еще как то) обычно имеют в виду реляционки типа Sybase AQ, Monet DB

Бигтейбл - обычно называют key-value store

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

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

(no subject)

From: [identity profile] scolar.livejournal.com - Date: 2009-03-13 08:16 pm (UTC) - Expand

(no subject)

From: [identity profile] pigmeich.livejournal.com - Date: 2009-03-13 09:04 pm (UTC) - Expand

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

(no subject)

From: [identity profile] scolar.livejournal.com - Date: 2009-03-13 08:14 pm (UTC) - Expand

(no subject)

From: [identity profile] ivan-gandhi.livejournal.com - Date: 2009-03-13 09:12 pm (UTC) - Expand

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

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

(no subject)

From: [identity profile] faceted-jacinth.livejournal.com - Date: 2009-03-13 09:46 pm (UTC) - Expand

(no subject)

From: [identity profile] ivan-gandhi.livejournal.com - Date: 2009-03-15 03:21 pm (UTC) - Expand

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

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

(no subject)

From: [identity profile] sab123.livejournal.com - Date: 2009-03-13 09:15 pm (UTC) - Expand

(no subject)

From: [identity profile] illy-drinker.livejournal.com - Date: 2009-03-13 09:40 pm (UTC) - Expand

(no subject)

From: [identity profile] sab123.livejournal.com - Date: 2009-03-13 09:47 pm (UTC) - Expand

(no subject)

From: [identity profile] illy-drinker.livejournal.com - Date: 2009-03-13 10:11 pm (UTC) - Expand

(no subject)

From: [identity profile] illy-drinker.livejournal.com - Date: 2009-03-13 10:14 pm (UTC) - Expand

(no subject)

From: [identity profile] faceted-jacinth.livejournal.com - Date: 2009-03-13 10:00 pm (UTC) - Expand

(no subject)

From: [identity profile] faceted-jacinth.livejournal.com - Date: 2009-03-13 10:01 pm (UTC) - Expand

(no subject)

From: [identity profile] faceted-jacinth.livejournal.com - Date: 2009-03-13 10:03 pm (UTC) - Expand

(no subject)

From: [identity profile] illy-drinker.livejournal.com - Date: 2009-03-13 10:07 pm (UTC) - Expand

(no subject)

From: [identity profile] faceted-jacinth.livejournal.com - Date: 2009-03-13 10:35 pm (UTC) - Expand

(no subject)

From: [identity profile] skavish.livejournal.com - Date: 2009-03-13 11:08 pm (UTC) - Expand

(no subject)

From: [identity profile] illy-drinker.livejournal.com - Date: 2009-03-15 01:01 am (UTC) - Expand

(no subject)

From: [identity profile] skavish.livejournal.com - Date: 2009-03-15 02:03 am (UTC) - Expand

(no subject)

From: [identity profile] skavish.livejournal.com - Date: 2009-03-13 11:08 pm (UTC) - Expand

(no subject)

From: [identity profile] alexclear.livejournal.com - Date: 2009-03-14 12:05 am (UTC) - Expand

(no subject)

From: [identity profile] faceted-jacinth.livejournal.com - Date: 2009-03-16 02:06 pm (UTC) - Expand

(no subject)

From: [identity profile] alexclear.livejournal.com - Date: 2009-03-16 02:31 pm (UTC) - Expand

(no subject)

From: [identity profile] faceted-jacinth.livejournal.com - Date: 2009-03-16 04:01 pm (UTC) - Expand

(no subject)

From: [identity profile] alexclear.livejournal.com - Date: 2009-03-16 04:20 pm (UTC) - Expand

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

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

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

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

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

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

Date: 2009-03-14 12:25 am (UTC)
From: [identity profile] gabaidulin.livejournal.com
Какой вы меркантильный, есть еще люди, для которых это все еще just fo fun.

(no subject)

From: [identity profile] poluzhivago.livejournal.com - Date: 2009-03-14 01:03 am (UTC) - Expand

Date: 2009-03-14 04:27 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Ну, так неинтересно жить. Хочется ж прекрасного. Если я попадаю в такое положение, что надо трубить от и до, то это означает одно: нужно срочно менять работу. (Как и вышло с гуглом.)

(no subject)

From: [identity profile] poluzhivago.livejournal.com - Date: 2009-03-14 10:22 pm (UTC) - Expand

(no subject)

From: [personal profile] recoder - Date: 2009-03-17 03:06 pm (UTC) - Expand

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

Date: 2009-03-13 11:59 pm (UTC)
From: [identity profile] 6pack.livejournal.com
Давайте про GPS теперь :-)

Date: 2009-03-14 10:05 am (UTC)
From: [identity profile] blacklion.livejournal.com
Дело в том, что это особенность джавы - лёгкость, с которой ты пишешь multithread code. В си сдохнуть можно такое написать.
Посмеялся, спасибо.

А история хорошая.

Date: 2009-03-14 10:10 am (UTC)
From: [identity profile] blacklion.livejournal.com
Поясню про Си: там такое или нельзя написать вообще (потому что нет memory model) или пишется так же легко как в Java — Всё зависит от вашей точки зрения на правильность работы :)
В 99.9% случаев — второе.

Java не предоставляет ничего интересного для мультитреда, кроме (это важно, это очень важно, но не всегда) memory model. А так — те же локи, те же треды. Всё. Никакого rocket science вообще, увы.

Да, реализация локов своя, не системная. Но это уже очень десятый вопрос.

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

May 2025

S M T W T F S
    1 2 3
456 7 8 9 10
11 121314151617
181920 21222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 22nd, 2025 03:39 pm
Powered by Dreamwidth Studios