Search
Write a publication
Pull to refresh
1
0
Виталий Ф. @FuN_ViT

программист, синьор-помидор :)

Send message

HP Vertica, проектирование хранилища данных, больших данных

Reading time8 min
Views33K
UPD: Продолжение статьи по ссылке — habrahabr.ru/company/avito/blog/322510

О чем статья

Незаметно пролетел год, как начались работы по разработке и внедрению хранилища данных на платформе Вертика.
На хабре уже есть статьи про саму СУБД Вертика, особенно рекомендую эту: HP Vertica, первый запущенный проект в РФ, ведь ее автор очень помог нам на начальном этапе. Алексей, спасибо еще раз.
Хотелось бы рассказать о том, какая методология применялась для проектирования физической структуры хранилища, чтобы наиболее полно использовать возможности HP Vertica.
Эту статью хотел бы посветить обоснованию оптимальности выбранной методологии, а в следующей — рассказать о том, какие техники позволяют анализировать данные, содержащие десятки млрд.

Постановка задачи

Рассмотрим высоконагруженный сайт крупной российской интернет-компании (теперь можно — это Авито ;)).
Деятельность компании описывается следующими цифрами: ~ 10 млн. активных пользователей, ~100 млн. просмотров страниц в день, около 1 тыс. новых объектов, размещенных пользователями на сайте в течение 1 минуты, ~10 тыс. поисковых запросов пользователей в минуту.
Грубая оценка количества действий, подлежащих сохранению в хранилище, составляет 100 млн. новых записей в сутки (~100 GB новых данных в сутки).
Т.е. при построении классического хранилища данных с отказом от стирания поступивших ранее данных, объем хранилища через 3 месяца эксплуатации составит 10TB сырых данных. Big Data как она есть.
Нужно построить хранилище, которое хранило бы не меньше 6 месяцев данных, позволяло их анализировать, визуализировать, и отставало бы от реальной жизни настолько мало, насколько это возможно (в худшем случае — отставало бы на день, в лучшем — на минуты).
Вынося сразу за скобки вопрос выбора платформы — хранилище должно работать на HP Vertica, MPP базе колоночного хранения, см. вводную статью в заголовке.
Читать дальше →

Применение инфраструктуры кеширования в ASP.NET

Reading time5 min
Views15K
Полтора года назад я написал статью про кеширование в ASP.NET MVC, в которой описал как повысить производительность ASP.NET MVC приложения за счет кеширования как на сервере, так и на клиенте. В комментариях к статье было упомянто много дополнительных способов для управления кешированием в ASP.NET.

В том посте я расскажу как использовать возможности инфраструктуры ASP.NET для управления кешированием.

Читать дальше →

Разработка для Microsoft SQL Server: Unix way

Reading time5 min
Views13K
Привет, Хабр!

Средние и крупные проекты, в которых целиком, либо значительная часть бизнес-логики реализована в хранимых процедурах СУБД, имеют ряд неудобств по управлению кодом модулей. А именно:
  • Отсутствие управления версиями и отслеживание изменений кода;
  • Сложности при синхронизация тестовой и рабочей инфраструктуры;
  • Скудность средств по поиску, навигации и обзору кода.

Да, есть коммерческие продукты, решающие эти проблемы полностью или частично, однако, на взгляд автора, делают это не эффективно и не элегантно. В виду этого, реализовано отображение модулей и структуры БД на файловую систему, с помощью FUSE (Filesystem in Userspace), в проекте SQLFuse. Теперь последователи Unix way смогут пройти и здесь.

Рассмотрим последовательность действий для монтирования опытной БД.
Читать дальше →

Безопасность магазина в рознице: основные атаки

Reading time7 min
Views113K


Вынос товара


Тащат всё, даже ненужное. Кажется, из спортивного интереса, по привычке или просто потому, что получилось. Но есть и настоящие профи. В простом случае товар банально кладётся в карман, в более сложных — избавляется от меток для противокражных ворот либо экранируется специальной сумкой с аналогом решетки Фарадея в стенках (от этого страдают магазины одежды). Крутые дорогие противокражные ворота умеют отличать редкоземельные магниты и сумки с экранирующими камерами на входе — поэтому новым витком стали аналоги средств РЭБ, в частности, разные китайские глушилки. Но куда чаще несут в кармане, рукаве, штанах, за голенищем или в коробке другого товара.

DDoS-атака на магазин с воровством


Представьте, в магазин внезапно заходит человек 15. Например, цыганский табор. Уследить за товаром просто физически невозможно. Мера — сначала напоказ нажимается тревожная кнопка (ещё на момент входа). Иногда такую атаку пытаются предпринять школьники, заваливаясь целым классом, но их-то найти по школам довольно просто (лица есть на видеонаблюдении).
Читать дальше →

Как мы боролись с проблемами производительности в «Redmine». Кто виноват и как помочь?

Reading time3 min
Views17K

Конечно, статья не совсем верно названа. В чистом Redmine особо больших проблем с производительностью нет. Но мы, в процессе разработки большого количества плагинов, эти проблемы с легкостью вносили.

Поэтому, статья расскажет о том, как разобраться в чем причина медленной работы той или иной функции плагина Redmine и какие инструменты могут помочь в этом. Многие советы, естественно, могут касаться не только самого Redmine, но и Rails-приложений в целом.

Симптом у проблем с производительностью всегда один – это разгневанный пользователь, кричащий, клянущий твое ПО и возможно тебя лично.
Читать дальше →

В Apportable SDK добавлена поддержка х86

Reading time1 min
Views3.4K
Неделю назад вышла очередная версия платформы Apportable SDK с примечательным номером 1.1.11. Но еще более примечательно в нем другое. Для тех, кто не в курсе, Apportable SDK — довольно интересный инструмент, позволяющий собирать приложения под Android из кода на С++ или Objective-C, изначально написанного для iOS. Очевидно, что наиболее востребован Apportable SDK для создания кросс-платформенных игр. В SDK поддерживаются разнообразные игровые движки, а получаемое приложение является 100% нативным, не требующим никаких дополнительных сред или эмуляций.
Так вот, начиная с версии 1.1.11 с помощью Apportable SDK можно создавать приложения под архитектуру х86. Для генерации х86 версии приложения при сборке необходимо использовать флаг TARGET_ARCH_ABI=x86.

Exponential Backoff или как «не завалить сервер»

Reading time7 min
Views42K
При любом взаимодействии клиента и сервера мы сталкиваемся с необходимостью повторять запросы. Сетевое соединение может быть ненадежно, могут быть проблемы на сервере или любые другие причины, из-за которых необходимо повторить запрос. То же самое касается и взаимодействия backend-сервера с базой данных или любым другим хранилищем данных (другим сервисом).

Мы сегодня поговорим об интервале повторов запроса. Через какой период времени после неудачного запроса можно его повторить? Давайте рассмотрим две стратегии: повтор через фиксированный интервал времени и экспоненциальное откладывание (exponential backoff). Мы увидим на симуляции, что при условии наличия большого числа клиентов повтор через фиксированный интервал может не дать серверу «подняться», а использование exponential backoff позволяет избежать этой проблемы.

Вопрос интервала повторов становится важным при проблемах на сервере. Очень часто сервер способен выдержать нагрузку от клиентов, которые отправляют запросы в некотором «текущем» режиме, распределяя свои запросы во времени случайным образом. Если на сервере происходит отказ, все клиенты обнаруживают его и начинают повторять запросы через некоторый интервал. Может оказаться, что частота таких запросов превышает тот предел, который сервер может обрабатывать.

Еще одним важным моментом является то, что клиент часто не может отличить проблемы на сервере от проблем с сетевым соединением на стороне клиента: если ответ на запрос не приходит в заданный интервал времени, клиент не может сделать заключение о том, в чем именно проблема. И поведение клиента (повтор запроса, интервал повтора) будут одинаковыми в обоих ситуациях.
Читать дальше →

Google Web Starter Kit: конструктор мобильных сайтов

Reading time1 min
Views51K


Google Web Starter Kit — конструктор и шаблоны для быстрой разработки отзывчивых мобильных сайтов, которые хорошо работают на любой платформе и почти в любом браузере (кроме самых старых). Такие сайты везде выглядят, как нативные приложения.

Основные особенности:
  • HTML-шаблоны, оптимизированные для мобильного применения;
  • отзывчивый макет для разных мобильных устройств
  • руководство по стилю визуальных компонентов;
  • поддержка Guilp.js (по умолчанию), Node.js, Ruby и Sass.
Читать дальше →

Обзор iconBIT NetTAB SKY HD 3G: бюджетный планшет по версии 2014 года

Reading time9 min
Views20K
В далеком по меркам мобильной индустрии 2011 году я обзавелся своим первым планшетом, решив поначалу особо не тратиться и приобрести приемлемый б/у вариант за $150. Насколько я помню, по тем временам обзавестись недорогим «приличным» планшетом было нереально. Например, предел моих мечтаний в лице Samsung Galaxy Tab 7.0 GT-P1000 стоил на старте баснословные порядка 20 000 рублей (~$571), не самый доступный вариант для студента. Вот и приходилось копаться в прошивках, стараясь повысить производительность, искать версии игр для ARMv6 – одним словом «гаражной» романтики хватало. На эти воспоминания меня натолкнул протестированный iconBIT NetTAB SKY HD 3G. Модель стоит 3 990 рублей (~$114) – эдакая «таблетка за сотку». Она в очередной раз подтверждает, насколько выросли возможности планшетов начального уровня в короткий срок.

Читать дальше →

64 миллисекунды после нажатия

Reading time3 min
Views30K
Если ваше приложение загружает данные из интернета, отображает в ListView и обрабатывает нажатия на ячейки, то можете продолжать читать. Это рассказ о том как можно закрашиться в течение 64 мс после клика на ячейку списка.
Читать дальше →

Еще один способ перехвата трафика через ARP Spoofing

Reading time6 min
Views87K
На Хабре было уже много статей на тему классического ARP спуфинга, однако все они были похожи тем, что для полноценного перехвата трафика надо было подменять ARP записи у двух машин. Как правило, это жертва и ее шлюз по умолчанию. Однако, идея спуфить шлюз не всегда хороша. Он вполне может иметь на борту детектор атак, который в два счета доложит админу что сеть ломают и халява кончится, не начавшись. В данной статье будет рассмотрен метод перехвата трафика, при котором атака производится только на хост-жертву. Как обычно в таких случаях, статья чисто для ознакомления, использование во вред карается по закону и т.д.
Под катом много букв.

Читать дальше →

Простой способ пагинации в Highcharts

Reading time1 min
Views6.5K

Недавно при создании страницы статистики на сайте, мне потребовалось в очередном графике вывести 450 позиций. В виду того, что данный график был на странице не один, да и выглядел бы очень громоздко на странице было принято решение, добавить нечто вроде разбиения данных на страницы. Для графиков в проекте используется библиотека Highcrarts. Покопавшись в документации была найдена только пагинация для легенды, но не для графиков.
Читать дальше →

ANGULARJS + REQUIREJS

Reading time5 min
Views55K

Во время разработки проектов мы полюбили AngularJs. Но также мы встретили некоторые трудности в борьбе за чистоту модульности, с которой AngularJs справляется хорошо, но все же порой ему чего-то не хватает. RequireJs оказывается полезным там, где AngularJs оставляет желать лучшего, но использование их вместе — не совсем тривиальная задача.

Итак, опишем наш взгляд на решение проблемы.

Для чего?

Работая с AngularJs вы обязательно задумаетесь о правильной организации кода. Конечно уже существуют отличные примеры решения проблемы. Например можно изучить теоретический пост Брайана Форда или практическое руководство Клиффа Мейерса. Я же поделюсь способом организации кода в приложениях AngularJs с использованием RequireJs.

Данный подход будет полезен, если вы хотите:

  • перестать беспокоиться о подключении скриптов в правильном порядке;
  • загружать javascript код асинхронно;
  • иметь возможность скомпилировать код в один минифицированный JS-файл;
Читать дальше →

Уязвимость OpenSSL CCS

Reading time5 min
Views17K


Ингве Петтерсен продолжает изучать проблемы уязвимостей и тестировать веб-серверы на вопрос незакрытых брешей.

На прошлой неделе появились сообщения о новой уязвимости в OpenSSL, которой были подвержены все версии библиотеки. Эта новая уязвимость, часто называемая уязвимостью CCS, относится к типу MITM (Man In The Middle) и позволяет атакующему «подслушать» или изменить данные, пересылаемые между клиентом и сервером, обманывая обе стороны — клиент и сервер, чтобы установить соединение между ними с использованием предсказуемых ключей шифрования.
Читать дальше →

Про колеса

Reading time2 min
Views16K
Многие уже слышали про колеса / wheels; рассказывать про них подробно не буду — на хабре были хорошие статьи. Опишу пошагово один (очевидный) способ использования колес на машине разработчика.

Все, кто устанавливал пакеты вроде numpy или scipy через pip знают, что это долго: компиляция может и десять минут занять, и двадцать, и тридцать. Среду для компиляции-то можно настроить (ну по крайней мере под mac и linux это не так сложно), но устанавливать такие зависимости в каждый virtualenv — то еще удовольствие. Можно, конечно, чай попить. Или виртуаленвы не использовать / использовать один общий.
Читать дальше →

История создания карты мира для игры “C&C Tiberium Alliances”. Постмортем

Reading time4 min
Views26K
Всем привет! В этом посте хотел бы поделиться опытом создания и развития сервиса для одной небезызвестной онлайн игры.

Жизнь в нем еще пока теплится, но, думаю, уже можно подвести окончательные итоги.

Об этой игре мне стало известно задолго до ее выхода, и я смог попасть в число первых бета-тестеров. От браузерной игры много не ждал, но интерес взял свое. Довольно быстро я нашел адекватное русскоязычное комьюнити и вступил в один из кланов.
Читать дальше →

Wi-Fi сети: проникновение и защита. 3) WPA. OpenCL/CUDA. Статистика подбора

Reading time24 min
Views365K


Баста карапузики, кончилися танцы.

В предыдущей части мы детально рассмотрели «читерские» приёмы обхода «защит» (скрытие SSID, MAC-фильтрация) и защит (WPS) беспроводных сетей. И хотя работает это в половине случаев, а иногда и чаще — когда-то игры заканчиваются и приходится браться за тяжёлую артиллерию. Вот тут-то между вашей личной жизнью и взломщиком и оказывается самое слабое звено: пароль от WPA-сети.

В статье будет показан перехват рукопожатия клиент-точка доступа, перебор паролей как с помощью ЦП, так и ГП, а кроме этого — сводная статистика по скоростям на обычных одиночных системах, кластерах EC2 и данные по разным типам современных GPU. Почти все они подкреплены моими собственным опытом.

К концу статьи вы поймёте, почему ленивый 20-значный пароль из букв a-z на пару солнц более стоек, чем зубодробительный 8-значный, даже использующий все 256 значений диапазона.

Оглавление:
1) Матчасть
2) Kali. Скрытие SSID. MAC-фильтрация. WPS
3) WPA. OpenCL/CUDA. Статистика подбора
По традиции, под катом ещё 15 страниц

Как мы первый прототип строили

Reading time5 min
Views23K
Привет Хабр! Это наш второй пост, он открывает серию технических публикаций. Мы решили рассказать подробнее про архитектуру CamIRa, используемые компоненты и технологии, а так же про то, как мы к этому пришли. Настала пора чем-то поделиться с сообществом, тем более уже много всего накопилось, с чем пришлось столкнуться в ходе реализации нашего первого прототипа. В этой статье мы расскажем, как прошли путь от простой программы с одним ИК-изображением, до полноценной облачной системы с личным кабинетом.
Заинтересованных просим под кат!
Читать дальше →

Реализация облачного бэкапа данных на основе Android Backup Service

Reading time3 min
Views17K
В данной статье хочется затронуть такую важную тему для Android разработчика, как облачный бэкап данных на примере использования Android Backup Service. Данный сервис позволяет бесплатно хранить данные приложения на удалённом облачном хранилище. Согласно документации, он позволяет восстанавливать данные при переустановке приложения, обновлении девайса и при заводском сбросе настроек. Всё, что требуется от пользователя, это то, чтобы у него стояли галочки в «Резервирование данных» и «Автовосстановление» в Настройки/Восстановление и сброс.
Читать дальше →

Как SQL Server каждые два-три часа переключался на использование не оптимального плана выполнения запроса

Reading time3 min
Views24K
Последние пару дней работал над интересной задачей и хотел бы поделиться интересным опытом с сообществом.

В чём проявляется проблема:
Запускаю хранимую процедуру (хранимку) по выборке данных для отчета — выполняется три секунды, смотрю профайлером на бою — у пользователей те же результаты. Но проходит три часа и та же хранимка, с теми же параметрами выполняется уже 2 минуты, и аналогично у пользователей. Причём данные в используемые таблицы не вставлялись/удалялись, окружение не меняли и админы не делали настроек.
Читать дальше →

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity