Как стать автором
Обновить
97.82
Рейтинг

Администрирование баз данных *

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

Сначала показывать
Порог рейтинга

Лучший технический вопрос, который мне задавали на собеседовании

Занимательные задачки Программирование *C++ *Алгоритмы *Администрирование баз данных *
Перевод

Много воды утекло с тех пор, как я в последний раз участвовал в собеседовании по программированию как соискатель. Но до сих пор помню особенно полюбившийся мне вопрос с такого собеседования. Дело было в MemSQL, году так в 2013. (Они даже успели переименоваться, поэтому, полагаю, конкретно этот вопрос они на собеседовании уже не задают. Не чувствую вины за то, что выдаю его. Это отличная история, которая также кажется мне поучительной; просто раньше я о ней никогда не писал).

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

Поскольку компания MemSQL разрабатывала базу данных, этот челлендж из той же оперы.

Читать далее
Всего голосов 21: ↑18 и ↓3 +15
Просмотры 8.6K
Комментарии 14

Новости

Авторизация в PostgreSQL. Часть 2. Безопасность на уровне строк

Блог компании Timeweb Cloud Системное администрирование *PostgreSQL *Администрирование баз данных *
Перевод
image
Приветствую вас в очередном разборе инструментов авторизации PostgreSQL. В первых двух разделах предыдущей статьи мы обсуждали, чем интересна авторизация в PostgreSQL. Вот содержание этой серии материалов:

  • Роли и привилегии;
  • Безопасность на уровне строк (мы сейчас здесь);
  • Производительность безопасности на уровне строк (coming soon!);

В первой статье мы рассмотрели, как роли и предоставленные привилегии влияют на действия (запросы SELECT, INSERT, UPDATE и DELETE) в отношении объектов БД (таблиц, представлений и функций). Та статья закончилась небольшим клиффхэнгером: если вы создадите многопользовательское приложение, используя только роли и привилегии для авторизации, то ваши пользователи смогут удалять данные друг друга, а может и вообще друг друга. Необходим другой механизм, позволяющий ограничить пользователей чтением и изменением только собственных данных — механизм безопасности на уровне строк (RLS).
Читать дальше →
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 908
Комментарии 1

Как работает оптимизатор PostgreSQL при большом количестве соединений

Блог компании Postgres Professional PostgreSQL *SQL *Администрирование баз данных *
SQL — это декларативный язык программирования, используемый для создания и манипулирования объектами в реляционных СУБД. Этот язык описывает что должно быть получено, но не описывает как это получить. Программист пишет запрос и (чаще всего) хочет получить результат от СУБД максимально быстро.

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

Поэтому оптимизатор — это ключевая часть СУБД, один из самых сложных элементов всей системы.

Для демонстрации работы оптимизатора практически во всех наших (и чужих) примерах на эту тему используются довольно скромные параметры: две-три таблицы, пара JOIN-ов, миллисекунды на выполнение запросов. А что будет, если загрузить оптимизатор десятками таблиц за раз? Как разные конфигурационные параметры влияют на производительность запросов с сотней JOIN-ов? И переживет ли это среднестатистический рабочий ноутбук? Ответы на эти вопросы — со схемами и графиками — вы найдете под катом!
Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 4.5K
Комментарии 2

Авторизация в PostgreSQL. Часть 1 — Роли и Привилегии

Блог компании Timeweb Cloud Системное администрирование *PostgreSQL *Администрирование баз данных *
Перевод
image

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

Несмотря на важность темы, авторизация в базе данных являлась моим слабым местом в начале карьеры. NoSQL был самым крутым парнем на районе, а мир веб-разработки соблазняли фреймворки (например Rails), которые давали более приятный опыт разработки, нежели сложные SQL-скрипты. Но мир меняется. SQL и реляционные базы данных снова оказались в центре внимания, поэтому важно научиться пользоваться ими безопасно и эффективно. В этой серии статей я раскрою основные области авторизации в базах данных с акцентом на PostgreSQL, поскольку это одна из самых зрелых и функциональных СУБД с открытым исходным кодом.
Читать дальше →
Всего голосов 12: ↑9 и ↓3 +6
Просмотры 4.1K
Комментарии 1

Яндекс выложил в опенсорс YDB

Блог компании Яндекс Высокая производительность *Open source *Администрирование баз данных *GitHub
Сегодня мы выложили в опенсорс систему управления базами данных YDB — плод многолетнего опыта Яндекса в разработке систем хранения и обработки данных. Исходный код, документация, SDK и все инструменты для работы с базой опубликованы на GitHub под лицензией Apache 2.0. Развернуть базу можно как на собственных, так и на сторонних серверах — в том числе в любых облачных сервисах.



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

В посте я расскажу об истории развития технологий баз данных, о том, зачем использовать YDB, как её применяют текущие пользователи и какие плюсы для всех несёт выход в опенсорс. А во второй половине поста поговорим о разных вариантах развёртывания.
Читать дальше →
Всего голосов 279: ↑276 и ↓3 +273
Просмотры 68K
Комментарии 107

«Импортозамещаем» анализ планов PostgreSQL

Блог компании Тензор PostgreSQL *SQL *Администрирование баз данных *Визуализация данных

Вчера Hubert 'depesz' Lubaczewski закрыл доступ с российских IP ко всем своим сайтам, включая широко известный визуализатор планов PostgreSQL-запросов explain.depesz.com.

Но это не беда, потому что в компании "Тензор" мы разработали сервис explain.tensor.ru, функционал которого гораздо обширнее, и которым можете воспользоваться и вы.

Читать далее
Всего голосов 38: ↑37 и ↓1 +36
Просмотры 5K
Комментарии 3

Как мы ускорили выполнение запросов PostgreSQL в 100 раз

Блог компании CloudMTS Высокая производительность *Open source *PostgreSQL *Администрирование баз данных *
Перевод

Существует великое множество статей об оптимизации PostgreSQL — эта «кроличья нора» весьма глубока. Когда несколько лет назад я начал разрабатывать бэкэнд аналитического сервиса, у меня уже был опыт работы с другими СУБД, такими как MySQL и SQL Server. Тем не менее, раньше мне не приходилось так фокусироваться на производительности. В прошлых проектах, над которыми я работал, либо не было жестких требований к времени обработки (DS/ML), либо не требовалось обрабатывать много строк одновременно (обыкновенные веб-приложения). Однако в этот раз мои запросы:

состояли из 3-10 JOIN-ов по коррелирующим запросам;

уielded от 10 до 1,000,000 строк;

должны были выполняться в течение времени, определенного UX-ом;

не могли быть hinted — пока Cloud SQL, управляемый PostgreSQL в Google Cloud, не стал поддерживать pg_hint_plan в конце 2021 года;

запрещали прямой доступ к серверному процессу, чтобы, например, хакнуть некоторые perf — потому что PostgreSQL был managed.

Получение целого миллиона строк в одном API endpoint сигнализирует о проблеме в алгоритме или архитектуре. Конечно, все можно переписать и перепроектировать, но за это нужно платить.

У нас не нашлось «заклинания», которое решило бы все проблемы с производительностью SQL. Тем не менее, я упомяну здесь несколько дельных предложений, которые помогли нам и, надеюсь, смогут помочь читателю. Разумеется, это не какие-то сакральные знания. Но когда мы начинали оптимизацию, я был бы рад их прочитать или услышать.

Читать далее
Всего голосов 29: ↑26 и ↓3 +23
Просмотры 17K
Комментарии 2

Как упростить работу с базами данных в Node.js с помощью Objection.js

Блог компании Хекслет Разработка веб-сайтов *JavaScript *Node.JS *Администрирование баз данных *

Objection.js — минималистичная ORM-библиотека для Node.js, которая сильно упрощает взаимодействие с базами данных и не перегружена дополнительными функциями, как Sequelize или TypeORM. Разбираемся, в чем ее специфика и как строить запросы с ее помощью.

Недавно я увидел на StackOverflow историю разработчика, который столкнулся с проблемой использования ORM . Этот кейс натолкнул меня на мысль написать статью о альтернативе Sequelize — Objection.js, библиотеке, которая решает множество проблем ORM.

Читать далее
Всего голосов 11: ↑10 и ↓1 +9
Просмотры 2.3K
Комментарии 11

Анонс стрима 07.04.22: Сжать данные в SQL Server в десятки раз, а ускорить запросы в сотни

.NET *SQL *Microsoft SQL Server *Администрирование баз данных *

У меня в планах на этот год на Хабре было опубликовать пару статей по колумсторам и XML. Материала за годы накопилось предостаточно и выходило на 30..40 страниц текста - фактически мини-книга. Но когда за окном Градами и прочей дичью херячили месяц... оно как-то не складывалось настроиться на конструктив. Вначале агрессия на виновников этой дичи, потом паника за близких... печаль что все планы порушились и непонятно что ждать. А сейчас прям совсем ровно на все жизненные трудности ибо как-то получается разруливать все и помогать людям.

Так вот... со знакомым решили вернуться к прежней теме и постримить сегодня о колумсторах. Без политики, срача и прочего. Очень много шутеек о том как живеться в условиях спецоперации и немного полезной инфы о колумсторах на SQL Server.

Кто хочет из коллег послушать: https://www.youtube.com/watch?v=wXH3fUN0PsM

You are welcome!

...
Всего голосов 17: ↑12 и ↓5 +7
Просмотры 2.2K
Комментарии 7

Межкластерная репликация Apache Kafka между тремя дата-центрами

Блог компании Авито Администрирование баз данных *Apache *Хранилища данных *Микросервисы *

Я Роман Ананьев, NoSQL/Kafka-инженер в Авито. В этом материале расскажу, как мы попробовали использовать брокер сообщений Apache Kafka в трёх дата-центрах и что из этого получилось.

Сначала пробегусь по архитектуре Kafka, потому что она играет роль в репликации между кластерами. Затем коснусь самих способов репликации и расскажу о двух инструментах для неё: MirrorMaker и uReplicator. Основная часть статьи — про нашу реализацию Kafka cluster federation и то, как Kafka размазана на несколько дата-центров.

Читать далее
Всего голосов 22: ↑22 и ↓0 +22
Просмотры 3.7K
Комментарии 7

Что нового в плане мониторинга в PostgreSQL (Алексей Лесовский)

PostgreSQL *Администрирование баз данных *


Доклад Алексея Лесовского про то, что нового есть в PostgreSQL в плане мониторинга.


Охватывать Алексей будет 13 и 14 версии. Далее от его лица.

Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Просмотры 3.1K
Комментарии 5

Альтернатива MapReduce при поиске в распределенной БД

Блог компании VK Администрирование баз данных *Tarantool *

Привет, меня зовут Сатбек, я работаю в команде Tarantool. Расскажу, как реализовать в шардированном кластере поиск, скорость которого не зависит от количества мастеров и объёма хранимых данных. Условно назову этот способ индексным слоем:

- Опишу общую схему построения поиска.

- Приведу пример реализации.

- Дам рекомендации по разработке.

В статье я последовательно реализую простой CRUD-сервис с шардированным хранилищем, а также поиск по данным. Это поможет вам лучше понять, когда возникают проблемы с поиском по распределённым данным и как их решает индексный слой.

Использовать будем БД Tarantool (версия ≥ 1.10), а также фреймворк для построения кластеров Tarantool-Cartridge (версия 2.7.0).

Для лучшего понимания желательно познакомиться с фреймворком Tarantool-Cartidge, модулем vshard, а также языком Lua, так как пример написан на нём.

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Просмотры 3.2K
Комментарии 3

SQL HowTo: разные варианты работы с EAV

Блог компании Тензор PostgreSQL *SQL *Администрирование баз данных *ERP-системы *

Соблазн использовать модель EAV (Entity-Attribute-Value) при организации структуры БД весьма велик, особенно когда предметная область заранее плохо известна (или разработчик просто не хочет в нее углубляться). Это ведь так удобно - создать "универсальный" способ описания характеристик объектов, который больше не потребует доработок базы ни при появлении новых типов объектов, ни при возникновении новых атрибутов...

Однако, за любую универсальность приходится платить сложностью и производительностью запросов - так что json[b] может оказаться более эффективной заменой. Но если уж такая модификация невозможна - давайте попробуем выжать максимум производительности из доставшегося нам legacy на самом простом примере.

Читать далее
Всего голосов 24: ↑23 и ↓1 +22
Просмотры 3.8K
Комментарии 7

Когда помогает партиционирование, пример в PostgreSQL

Блог компании OTUS PostgreSQL *Администрирование баз данных *
Recovery mode
Разберем внедрение партиционирования на практическом примере, обсудим выбор реализации, альтернативы. Учтем ограничения, проистекающие из самих обрабатываемых данных.

Подробнее
Всего голосов 16: ↑15 и ↓1 +14
Просмотры 6.9K
Комментарии 19

Сохранение данных для ESP32/Arduino в удаленной базе MySQL и не только

Блог компании FirstVDS MySQL *Администрирование баз данных *Разработка под Arduino *


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

Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 2.9K
Комментарии 0

Отчёт с митапа: PostgreSQL-as-Service — можем, умеем, практикуем

Блог компании Ozon Tech PostgreSQL *Программирование *Администрирование баз данных *Конференции

Выкладываем запись с Ozon Tech PostgreSQL Meetup. Ранее я уже описывал нашу инфраструктуру: весь PostgreSQL основан на виртуальных машинах — 2К в тестовой среде и ~8К в проде. Это около 2К кластеров баз данных. Так как у нас микросервисная архитектура, мы придерживаемся принципа 1 сервис = 1 база. Нагрузка на базы может быть приличная: 2-2,5 млн транзакций в секунду, а WAL-трафик порядка 1.5 ГБ/c. 

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

Видео и слайды под катом
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 3.2K
Комментарии 10

Чем Linux HugePages важны для серверов баз данных?

Блог компании Конференции Олега Бунина (Онтико) Тестирование IT-систем *PostgreSQL *Администрирование баз данных *
Перевод

Часто пользователи рассказывают о сбое базы данных по вине Out Of Memory Killer. Он завершает процессы PostgreSQL и остается причиной большинства отказов этой БД. Память на хост-компьютере может закончиться по нескольким причинам. Наиболее распространены из них четыре. Во-первых, может быть плохо настроена память на хост-компьютере. Во-вторых, могут быть ограничения глобальной переменной work_mem. Например, если у вас 32Гб RAM и work_mem=1Гб, то больше 32 соединений вы никогда не запустите. Каждое соединение PostgreSQL будет выделять этот размер памяти.

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

Представляем вам перевод статьи от Jobin Augustine, который работает в Percona старшим инженером службы поддержки. Более 20-лет он был консультантом, архитектором, администратором и инструктором по PostgreSQL, Oracle и другим технологиям баз данных. Сегодня поговорим о том, как можно защититься от OOM с помощью HugePages и разберем насколько они важны и почему нужны.

Читать далее
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 4.3K
Комментарии 7

Что в глубинах Data Lake? Строим архитектуру, укладываем слои, распределяем ответственность

Блог компании МТС Администрирование баз данных *Big Data *Хранение данных *Хранилища данных *
Привет, Хабр! Меня зовут Григорий Коваль, я технический руководитель Core Data Lake центра Big Data МТС. Сегодня я расскажу о том, какие слои находятся внутри Data Lake, как построить архитектуру базы данных и чем распределенный Data Mesh-подход отличается от монолитного хранения данных.



Для создания Data Lake нужен итерационный подход – agile и все, что с этим связано. Еще необходимо правильно организовать работу команд, синхронизировать их распределить ответственность между участниками. Тогда получится прямая связь между пользователями и людьми, которые развивают витрины данных или домены. В этой статье поговорим о задачах, архитектуре и проблемах развития Data lake, а также обсудим способы решения возникающих проблем, специфику процессов и перспективы развития.
Читать дальше →
Всего голосов 19: ↑18 и ↓1 +17
Просмотры 3.5K
Комментарии 0

Особенности проекта Debezium для решения задачи миграции баз данных

Блог компании ГК ЛАНИТ Тестирование IT-систем *Программирование *Администрирование баз данных *

С 2014 года в России реализуется программа импортозамещения, которая распространяется в том числе на программное обеспечение и системы управления базами данных, поднимая вопросы оптимальной миграции. В этой статье мы, специалисты департамента разработки «Консист Бизнес Групп», расскажем про особенности проекта Debezium для обеспечения миграции баз данных с разбором нагрузочного тестирования миграции.

Читать далее
Всего голосов 34: ↑34 и ↓0 +34
Просмотры 2.8K
Комментарии 1

Databaser. Возвращение легкости стартапа

Блог компании БАРС Груп Python *PostgreSQL *Программирование *Администрирование баз данных *

Всем привет, меня зовут Александр Даниленко, я – ведущий разработчик отдела «Бюджет-Online». В компании «БАРС Груп» работаю уже 5 лет. За это время нам удалось успешно исправить некоторые сложности процесса разработки. Первая проблема, с который мы столкнулись – развороты больших баз данных (БД) у разработчиков на локальных машинах. Сегодня мы расскажем об инструменте «Databaser», который на 100% позволяет ее решить.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 2.8K
Комментарии 3

Вклад авторов

Работа