- PVSM.RU - https://www.pvsm.ru -
Здравствуй Хабр! Хочу рассказать как мы делали свою собственную Big Data.
Каждый стартап хочет собрать что-то дешевое, качественное и гибкое. Обычно так не бывает, но у нас, похоже, получилось! Ниже идёт описание нашего решения и много моего сугубо субъективного мнения по этому поводу.
И да, секрет в том, что используется 6 сервисов гугла и собственного кода почти не писалось.
Работаю в весёлом сингапурском стартапе – Bubbly, который делает голосовую социальную сеть. Фишка в том, что можно пользоваться без смартфона, достаточно старой доброй нокии. Пользователь звонит на специальный номер и может прослушивать сообщения, записывать свои сообщения и т.п. Всё голосом, даже не нужно уметь читать, чтобы пользоваться.
В Юго-Восточной Азии у нас десятки миллионов пользователей. Но так как работает это через операторов сотовой связи, в других странах про нас никто ничего не знает. Эти пользователи генерят огромное количество активности, которую хочется регистрировать и всячески анализировать:
В общем, задачи, которые нужны всем и всегда практически.
Казалось бы – зачем что-то строить, если есть уже готовые решения? Руководили мной такие мотивы:
Потому что кишка тонка. Это реально сложно!
MySQL под задачу понятно не подходит, так как данных у нас для него слишком много.
Улучшения:
Очень хотелось Big Query сделать schemaless, просто чтобы добавлять события в систему и ни о чем не думать. Поэтому к загрузчику прикрутили кусочек кода, который проверяет текущую схему таблицы в Big Query и сравнивает с тем, что он хочет загрузить. Если есть новые колонки, то они добавляются в таблицу через Big Query API.
Лучше электронных таблиц для анализа данных нет ничего. Это моя аксиома. Для данной задачи Spreadsheets подходит лучше MS Excel (как бы я его не любил). Причины такие:
Улучшения:
Cкрипт из туториала был немного доработан. Теперь он проверяет каждый лист в электронных таблицах. Если в клетке A1 написано «SQL», то значит в А2 лежит запрос к Big Query. Результаты запроса скрипт положит на этом же листе.
Это нужно, чтобы при использовании не касаться кода вообще. Создал новый лист, написал запрос, получил результат.
Рекурсия! У нашего Dash Board порядка 30 юзеров. Достаточно для того, чтобы анализировать статистику использования ресурса. Google Sites, что не удивительно, с Google Analytics интегрируются в пару кликов. Посещаемость страниц объективно показывает, какие данные наиболее интересны, чтобы в этом направлении улучшать систему.
Считаю, что в любой системе самое дорогое это время необходимое на разработку и человеко-дни потраченные на разработку и поддержку. В этом смысле данное решение идеально, так как своего кода почти не писалось. Весь проект делал один человек, в параллель с другими задачами, и первая версия была сделана за месяц.
Есть, конечно, подозрения, что интеграция между сервисами гуглов может ломаться (по их туториалу видно, что это уже случалось) и потребуются усилия на поддержку. Но не ожидаю ничего страшного.
Что касается прямых расходов, то во всей системе только Big Query стоит денег. Оплачивается хранение данных и запросы к данным. Но это просто копейки! Мы пишем по 60 млн событий в день и ни разу более 200 USD в месяц не платили.
Big Query по умолчанию сканирует всю таблицу. Если события за всё время хранить в одном месте, то запросы становятся медленнее и дороже со временем.
Наиболее интересны всегда данные за последнее время, поэтому мы пришли к месячному ротиванию этих таблиц. Каждый месяц таблица events бэкапится в events_201401Jan, events_201402Feb и так далее.
Чтобы к такой структуре удобно было делать запросы, расширили немного язык SQL. Благо всё контролирует собственный скрипт из Spreadsheets, и он может наши запросы парсить и обрабатывать как нужно. Добавил такие команды:
Как это всё работает можно посмотреть на примере здесь [3].
Очень хочется, чтобы знающие люди сказали своё мнение. Для того эта статья и писалась.
PS Прошу об ошибках по тексту и моих англицизмах писать в личку, всё поправлю.
PPS Я совсем не программист, поэтому мой код может быть страшен (но он работает!). Буду рад конструктивной критике.
Автор: NNikolay
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/google/65272
Ссылки в тексте:
[1] туториал от Goolge: https://developers.google.com/apps-script/articles/bigquery_tutorial
[2] туториал от Google: https://developers.google.com/chart/interactive/docs/spreadsheets
[3] посмотреть на примере здесь: https://sites.google.com/site/leanbigdatawith6tools/
[4] Источник: http://habrahabr.ru/post/230243/
Нажмите здесь для печати.