Как стать автором
Поиск
Написать публикацию
Обновить
210.19

Базы данных *

Все об администрировании БД

Сначала показывать
Период
Уровень сложности

Реализация бизнес-логики на уровне хранимых функций PostgreSQL

Время на прочтение10 мин
Количество просмотров15K
Побудительным мотивом к написанию этюда послужила статья «В карантин нагрузка выросла в 5 раз, но мы были готовы». Как Lingualeo переехал на PostgreSQL с 23 млн юзеров. Так же показалось интересной статья опубликованная 4 года назад — Реализация бизнес-логики в MySQL.

Показалось интересным то, что одна и та же мысль-"реализовать бизнес-логику в БД".



пришла в голову не только мне одному.

Также на будущее хотелось сохранить, для себя в первую очередь, интересные наработки возникшие по ходу реализации. Особенно учитывая то, что относительно недавно было принято стратегическое решение о смене архитектуры и переносе бизнес-логики на уровень backend. Так, что все, что было наработано, скоро никому не понадобится и никому будет не интересно.

Описанные методы не являются каким то открытием и исключительным know how, все по классике и было реализовано неоднократно (я например подобный подход применил 20 лет назад на Oracle).Просто решил собрал все в одном месте. Вдруг кому пригодится. Как показала практика — довольно часто одна и та же идея приходит независимо разным людям. Да и для себя оставить на память, полезно.
Конечно, же ничто в этом мире не совершенно, ошибки и опечатки к сожалению возможны. Критика и замечания всячески приветствуются и ожидаются.И еще одна маленькая деталь — конкретные детали реализации опущены. Все таки всё используется пока в реально работающем проекте. Так, что статья как этюд и описание общей концепции, не более того. Надеюсь для понятия общей картины, деталей достаточно.
Читать дальше →

MVCC как один из способов обеспечения изоляции транзакций

Время на прочтение4 мин
Количество просмотров17K
Привет, хабр. Меня зовут Владислав Родин. В настоящее время я являюсь руководителем курса «Архитектор высоких нагрузок» в OTUS, а также преподаю на курсах, посвященных архитектуре ПО.

Специально к старту нового набора на курс «Архитектор высоких нагрузок» я написал небольшой материал, которым с радостью делюсь с вами.



Введение


В прошлый раз мы поговорили с вами о том, к чему приводит ослабление изоляции транзакций в базах данных. Сегодня мы обсудим более подробно один из способов обеспечения этой самой изоляции и избегания рассмотренных аномалий. Как вы могли заметить, в прошлой статье часто выделялись два подхода: один был основан на том, что у записей есть некоторые версии, а второй на том, что мы будем запись так или иначе блокировать. Таким образом, выделяются два класса баз данных: версионники и блокировочники. Сегодня мы поговорим о том, что из себя представляют версионники, а рассмотрение блокировочников оставим на следующий раз.
Читать дальше →

Эксперимент проверки применимости графовой СУБД JanusGraph для решения задачи поиска подходящих путей

Время на прочтение10 мин
Количество просмотров4K


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


В рамках этой задачи пользователи могут задавать системе запросы следующего вида:


  • сколько посетителей прошло из области "A" в область "Б";
  • сколько посетителей прошло из области "A" в область "Б" через область "C", а затем через область "Д";
  • сколько времени заняло прохождение посетителя определенного типа из области "А" в область "Б".

и еще ряд подобных аналитических запросов.


Движение посетителя по областям представляет собой направленный граф. Почитав интернеты, я обнаружил, что графовые СУБД используются и для аналитических отчетов. У меня появилось желание посмотреть как будут справляться с подобными запросами графовые СУБД (TL;DR; плохо).

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

Создавайте приложения бесплатно с помощью Azure Cosmos DB Free Tier

Время на прочтение3 мин
Количество просмотров2.6K
Хотите создать новое приложение, разработать и протестировать или запустить небольшие производственные рабочие нагрузки с помощью Azure Cosmos DB? Наш новый уровень бесплатного пользования позволяет начать работу без затрат и сэкономить деньги при создании и развитии новых приложений.



При включенном бесплатном уровне Azure Cosmos DB вы получаете первые 400 RU/s пропускной способности и 5 ГБ хранилища в своей учетной записи бесплатно каждый месяц на весь срок действия учетной записи. Это означает, что вы можете начать с малого и уверенно расти, зная, что ваше приложение будет работать в высокопроизводительной службе баз данных. Вы будете платить только если ваша учетная запись превышает 400 RU/s и 5 ГБ. Кроме того, если в вашем приложении много контейнеров, вы можете создать до 25 контейнеров в базе данных с общей пропускной способностью, и все они будут использовать бесплатные 400 RU/s. Вы можете иметь до одной бесплатной учетной записи Azure Cosmos DB для каждой подписки Azure.
Читать дальше →

БД мессенджера (ч.2): секционируем «наживую»

Время на прочтение4 мин
Количество просмотров11K
Мы удачно спроектировали структуру нашей PostgreSQL-базы для хранения переписки, прошел год, пользователи активно ее наполняют, вот в ней уже миллионы записей, и… что-то все начало подтормаживать.



Дело в том, что с ростом объема таблицы растет и «глубина» индексов — хоть и логарифмически. Но со временем это заставляет сервер для выполнения тех же задач чтения/записи обрабатывать в разы больше страниц данных, чем в начале.

Вот тут на помощь и приходит секционирование.
Читать дальше →

Вебинары Hewlett Packard Enterprise в ноябре-январе

Время на прочтение4 мин
Количество просмотров1.8K
image

В новой серии технических выбинаров эксперты Hewlett Packard Enterprise расскажут вам о способах повышения надёжности хранения данных, новостях мира гиперконвергенции, автоматизации ИТ-инфраструктуры, Интернете вещей, новых подходах к построению распределённых сетей.

Зарегистрироваться и узнать подробнее о каждом вебинаре вы можете ниже. Полный список вебинаров доступен по ссылке.
Читать дальше →

Песнь льда (кровавый Enterprise) и пламени (DevOps и IaC)

Время на прочтение2 мин
Количество просмотров5.1K
Тема DevOps и IaC очень популярна и развивается быстро. Однако большинство авторов касаются сугубо технических проблем на этом пути. Я же опишу проблемы, характерные для большой компании. Решения у меня нет — проблемы, в общем, фатальны и лежат в области бюрократии, аудита, и «soft skills».


Раз название статьи такое, то в качестве котика выступит Дайнерис, перешедшая на сторону Enterprise
Читать дальше →

pg_stat_statements + pg_stat_activity + loq_query = pg_ash?

Время на прочтение10 мин
Количество просмотров4.1K
В качестве короткого дополнения к статье Попытка создать аналог ASH для PostgreSQL.

Задача


Необходимо связать историю представлений pg_stat_statemenets, pg_stat_activity. В результате, используя историю планов выполнения из сервисной таблицы log_query, можно получить очень много полезной информации, для использования в процессе решения инцидентов производительности и оптимизации запросов.
Предупреждение.
В связи с новизной темы и незавершением периода тестирования, статья может содержать ошибки. Критика и замечания всячески приветствуются и ожидаются.
Читать дальше →

Выпутываемся из сетей Tarantool. Синхронизация нод при фильтрации трафика

Время на прочтение11 мин
Количество просмотров2.4K
image

Компания Variti специализируется на защите от ботов и DDoS-атак, а также проводит стресс- и нагрузочное тестирование. Поскольку мы работаем как международный сервис, нам крайне важно обеспечить бесперебойный обмен информацией между серверами и кластерами в режиме реального времени. На конференции Saint HighLoad++ 2019 разработчик Variti Антон Барабанов рассказал, как мы используем UDP и Tarantool, почему взяли именно такую связку, и как нам пришлось переписывать модуль Tarantool с Lua на C.

По ссылке можно также почитать тезисы доклада, а ниже под спойлером — посмотреть видео.

Видео доклада


Когда мы начали делать сервис фильтрации трафика, мы сразу решили не заниматься IP-транзитом, а защищать HTTP, API и игровые сервисы. Таким образом, мы терминируем трафик на уровне L7 в протоколе TCP и передаем его дальше. Защита на L3&4 при этом происходит автоматически. На схеме ниже представлена схема сервиса: запросы от людей проходят через кластер, то есть серверы и сетевое оборудование, а боты (показаны в виде привидения) фильтруются.



Для фильтрации необходимо разбивать трафик на отдельные запросы, точно и быстро анализировать сессии и, так как мы не блокируем по IP-адресам, внутри соединения с одного IP-адреса определять ботов и людей.

Между безопасностью и паранойей: тенденции больших корпораций

Время на прочтение4 мин
Количество просмотров6.9K
Наблюдение за бытом больших корпораций вгоняет меня в депрессию. Это дикая паранойя и одновременно жуткие, зияющие дыры в безопасности. Впрочем, возможно эти вещи как раз связаны — ведь параноик сфокусирован на определенных вещах, и легко может проглядеть очевидное. Он может выйти на улицу, отчаянно шурша фольгой, в которую завернулся с ног до головы, и быть сбитым автобусом.


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

Key-value для хранения метаданных в СХД. Тестируем выделенные базы данных

Время на прочтение5 мин
Количество просмотров6.1K


В этой статье мы продолжаем рассказывать о том, как можно хранить метаданные в СХД при помощи баз данных key-value.

На этот раз в центре нашего внимания выделенные БД: Aerospike и RocksDB. Описание значимости метаданных в СХД, а также результаты тестирования встроенных БД можно посмотреть тут.
Читать дальше →

1-я лабораторная работа программы Data Engineer

Время на прочтение7 мин
Количество просмотров14K

Как говорится, никогда такого не было, и вот опять. Мы подумали и решили выложить в свободный доступ первую лабораторную работу нашей новой программы Data Engineer. Бесплатно. Без смс.


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



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


А делать в этой лабе мы будем следующее.


  1. Зарегимся на облачном сервисе.
  2. Поднимем на нем 4 виртуальных машины.
  3. Развернем кластер при помощи Ambari.
  4. Поднимем сайт на nginx на одной из виртуалок.
  5. Добавим специальный javascript на каждую страницу этого сайта.
  6. Соберем кликстрим на HDFS.
  7. Соберем его же в Kafka.
Читать дальше →

1C и ETL

Время на прочтение5 мин
Количество просмотров22K

ETL и 1С. Извлечение данных


Первый взгляд


Если вы, как ETL-специалист столкнулись с необходимостью получать данные из 1С, то это первое, что вы можете увидеть, попытавшись разобраться со структурой БД (это из случае MSSQL, для других СУБД картинка аналогичная):



Бизнес-смысл в наименованиях таблиц и полей отсутствует, внешних ключей нет.

Пару ласковых о самой 1С. Реальные таблицы СУБД в ней скрыты за объектами, которые видит разработчик, который часто не догадывается о реальной структуре базы. Да… И весь код на русском языке. Кроме того, есть перечисления, строковые представления которых с помощью SQL получить практически невозможно. Об этом подробнее здесь.

Есть случаи, когда БД нет (и 1С в файловой версии), но это, разумеется ориентирует вас на интеграцию без использования средств СУБД.
Читать дальше →

Ближайшие события

День сисадмина: зажги на квесте, закрути баклажан

Время на прочтение2 мин
Количество просмотров5.9K


Про вас не снимают фильмов, не пишут песен и часто даже не знают в лицо. Образ сисадмина оброс мифами: небрит, нетрезв и неотёсан.

Знаменитые мистификаторы! Вы создали эти легенды, чтобы нести свой крест в одиночестве. Но раз в году, стряхнув стереотипы, вы выходите к юзерам, чтобы принять благодарности.

Рыцари в сияющих доспехах, повелители офиса и атланты IT-инфраструктуры. На вас все компьютеры, сети, серверы, роутеры, концентраторы, коммутаторы и шлюзы.

Сегодня мы преклоняемся перед вами и приносим дары:

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

Перенос пользователей и их привилегий в MySQL

Время на прочтение3 мин
Количество просмотров10K
Приветствую уважаемое Хабросообщество! Как известно у сервера MySql нет встроенных механизмов для переноса пользователей MySql и их привилегий на другой сервер. В сети готовых решений крайне мало, и в этой небольшой статье мы перенесем наших пользователей MySql и их привилегии, с одного сервера на другой, за несколько минут.

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

Согласованная работа макро и микро базовых станций при создании гетерогенных сетей как ключ развития мобильного ШПД

Время на прочтение6 мин
Количество просмотров3.6K
Развитие мобильного широкополосного доступа выдвигает новые требования к беспроводным сетям. Во-первых, требуется обеспечить стабильное покрытие сетей 3G/4G, особенно в густонаселенных городах с большим трафиком данных, затем – удовлетворить стремительно растущий спрос на интернет-трафик. Однако на пути решения вышеуказанных задач мы сталкиваемся с проблемами, связанными с работой макро базовых станций.
Читать дальше →

Мобильные решения для финансового сектора

Время на прочтение4 мин
Количество просмотров4.1K
Деньги – вопрос необычайно чувствительный для клиентов в любой отрасли, независимо от суммы. Одинаково переживает за свои кровные и бедняк, и олигарх. Но в финансовом секторе лояльность напрямую зависит от технологических решений, которые предлагаются клиенту для управления и контроля счетами. При этом вопросы безопасности и конфиденциальности такой коммуникаций стоит острее, чем в любой другой сфере. Здесь не просто нужно обеспечить клиента своевременной и точной информацией, но и дать гарантию, что эти данные – почти интимное пространство общения между ним и банком.


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

Resource Groups в MySQL

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров816

Привет, Хабр!

Сегодня мы рассмотрим Resource Groups в MySQL — и перестанем жить на одной CPU.

Resource Groups — это контроль над CPU прямо из SQL. Вы создаёте логическую группу, говорите «эта группа может использовать только 2 CPU и работать на низком приоритете», и назначаете туда тяжелые, но второстепенные задачи. Всё. Дальше MySQL сам всё регулирует.

Читать далее

Как работает база данных Firebird, часть 3

Уровень сложностиСложный
Время на прочтение16 мин
Количество просмотров1.1K

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

Читать далее

Сегментация клиентов методом K-Means на стороне БД

Время на прочтение4 мин
Количество просмотров1.5K

Привет, Хабр!

Сегодня мы рассмотрим, как заставить PostgreSQL самостоятельно крутить K-Means для сегментации клиентов, не вытаскивая данные наружу. Пройдемся по циклу: нормализуем фичи в materialized view, напишем функцию PL/PythonU, которая дергает scikit-learn, сохраняем cluster_id обратно в таблицу и закрываем гештальт отчётом «доход по кластеру» чистым SQL.

Читать далее