Как стать автором
Обновить
22.5

Oracle *

Система управления базами данных

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

Как мы переехали с Oracle на PostgreSQL в нагруженном сервисе без даунтайма

Уровень сложностиСредний
Время на прочтение30 мин
Количество просмотров21K

Всем привет! Я Сергей, работаю в B2B-команде Яндекс Маркета последние 3,5 года. Как уже понятно из заголовка, сейчас я вам расскажу про yet-another-миграцию с базы на базу, которая началась в середине 2021 года и заняла почти год. Получается, мемуары.

Вас ждёт рассказ о том, как мы:

- несколько месяцев чинили тесты и делали трансформер;

- десятки раз переливали данные;

- чинили баги незаметно для пользователей;

- заставили сервис работать на PostgreSQL быстрее, чем он работал на Oracle.

Читать далее
Всего голосов 87: ↑88.5 и ↓-1.5+90
Комментарии15

Новости

«Надо переехать с Oracle на PostgreSQL. Ты только не волнуйся!»

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

С этого сообщения в мессенджере началось мое масштабное расследование вопроса, который давно не дает спать многим айтишникам — можно ли вот так взять и переехать с Oracle на «свободную» СУБД PostgreSQL?

Этот вопрос сначала бередил умы только тех, кто был в курсе стоимости закупок лицензий. В крупных компаниях бюджет на это мог составлять несколько десятков миллионов долларов. А потом каждый год поддержка вендора «съедала» ещё 22% от стоимости лицензий. Теперь та финансовая боль сменилась другой, и у компаний поменялся запрос: а можно ли заменить? И главное, можно ли организовать это в разумные сроки и по адекватной стоимости? 

Скажу сразу, что в этом посте не будет технических аспектов миграции с СУБД Oracle на PostgreSQL. Как это делать и как обходить сложности — разберем в следующий раз. Тут же больше поговорим о целесообразности и возможности миграции. С этим мы разбирались в ходе одного проекта, а заодно развенчали строй существующих иллюзий. 

Красная таблетка
Всего голосов 57: ↑56 и ↓1+55
Комментарии73

Базы данных. Тенденции общемировые и в России

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

Эта статья не является ответом на множество вопросов по базам данных (БД) и системам управлениям базами данных (СУБД). Я как автор выражаю своё собственное мнение о  трендах, стараясь опираться на беспристрастные показатели, статистики и т.д., но для примера приводя собственный опыт. Я не являюсь ангажированным представителем какой-либо компании и выражаю точку зрения опираясь на опыт более 25 лет работы с разными СУБД, в том числе, которую создавал своими руками. Не так много даже опытных программистов и архитекторов, которые знают все термины, технологии, какие подводные камни и куда идёт движение. Тема поистине огромная, поэтому в рамках одной статьи не раскрыть даже верхний уровень информации. Если кто-то не встретит свою любимую СУБД или её невероятный плюс, который стоит упомянуть, то прошу в комментариях указать и этим дополнить общую картину, что поможет другим разобраться и понять лучше предметную область. Поехали!

Open Source DBMS vs Commercial DBMS

 Для начала приведён график с сайта, db-engines.com, по моим ощущениям, неплохо отслеживающим тренды БД. Именно этот график добавил желания написать статью о текущем положении дел.

Читать далее (в конце краткие итоги)
Всего голосов 69: ↑65 и ↓4+61
Комментарии106

Почему нужна инструментальная поддержка пагинации на ключах

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

Всем привет! Я бэкэнд-разработчик, пишу микросервисы на Java + Spring. Работаю в одной из команд разработки внутренних продуктов в компании Тинькофф.



У нас в команде часто встает вопрос оптимизации запросов в СУБД. Всегда хочется еще чуть-чуть быстрее, но не всегда можно обойтись продуманно выстроенными индексами — приходится искать какие-то обходные пути. Во время одного из таких скитаний по сети в поисках разумных оптимизаций при работе с БД я нашел бесконечно полезный блог Маркуса Винанда, автора книги SQL Performance Explained. Это тот самый редкий вид блогов, в котором можно читать все статьи подряд.


Хочу перевести для вас небольшую статью Маркуса. Ее можно назвать в какой-то степени манифестом, который стремится привлечь внимание к старой, но до сих пор актуальной проблеме производительности операции offset по стандарту SQL.

Читать дальше →
Всего голосов 58: ↑57 и ↓1+56
Комментарии87

Истории

Почему не SQL?

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


Без преувеличения можно сказать, что SQL — один из самых распространенных в мире языков. Информационные системы могут быть написаны на Java, Python, JavaScript, C#, PHP и десятке других языков, но SQL база в том или ином виде будет в абсолютном большинстве таких систем. Среди бизнес-приложений процент систем, использующих SQL, вообще стремится к 100%.

При этом большинство существующих материалов о SQL на хабре и других ресурсах сводятся к простым вопросам, вроде: «какие типы соединений бывают», «чем левое соединение отличается от правого», «что такое триггеры» и так далее. Более того, в этих материалах практически ничего не говорится о проблемах SQL (и его реализациях), которых на самом деле очень и очень немало. Поэтому мы решили восполнить оба этих пробела: с одной стороны рассказать, как многие вещи в SQL работают изнутри, а с другой стороны — почему они работают не так как нужно / хотелось бы.

При этом речь в статье пойдет не о «вкусах и цветах фломастеров». Все затрагиваемые проблемы носят фундаментальный характер: присутствуют при разработке практически любой информационной системы и не ограничиваются «красотой кода», а в той или иной степени приводят либо к критическому падению производительности, либо к существенному росту порога вхождения, либо к значительным трудозатратам со стороны разработчика.
Читать дальше →
Всего голосов 92: ↑87 и ↓5+82
Комментарии179

Безумие и успех кода Oracle Database

Время на прочтение4 мин
Количество просмотров79K
На этой неделе пользователи Hacker News решили обсудить вопрос «Каков максимальный объем плохого — но при этом работающего — кода вам доводилось видеть?» (позже к ним присоединились и пользователи Reddit). В комментариях было рассказано немало «веселых» историй про то, с чем мы все время от времени сталкиваемся; но больше всего внимания привлек рассказ про код «передовой СУБД, которую используют большинство компаний, входящих в список Fortune 100».

Победителем в номинации «лавкрафтовские ужасы» заслуженно стал рассказ бывшего разработчика Oracle, который работал над Oracle Database в период разработки версии 12.2. Объем кодовой базы СУБД на тот момент составлял 25 миллионов строк на языке C — и стоило вам изменить лишь одну из этих строк, как ломались тысячи написанных ранее тестов.

За прошедшие годы над кодом успело потрудиться несколько поколений программистов, которых регулярно преследовали жесткие дедлайны — и благодаря этому код смог превратиться в настоящий кошмар. Сегодня он состоит из сложных «кусков» кода, отвечающих за логику, управление памятью, переключение контекстов и многое другое; они связаны друг с другом при помощи тысяч различных флагов. Весь код связан между собой загадочным макросом, который невозможно расшифровать, не прибегая к помощи тетради, в которую приходится записывать, чем занимаются релевантные части макроса. В итоге, у разработчика может уйти день или два только на то, чтобы разобраться, чем же в действительности занимается макрос.
Читать дальше →
Всего голосов 82: ↑81 и ↓1+80
Комментарии160

История успеха «Яндекс.Почты» с PostgreSQL

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


Владимир Бородин (на «Хабре» dev1ant), системный администратор группы эксплуатации систем хранения данных в «Яндекс.Почте», знакомит со сложностями миграции крупного проекта с Oracle Database на PostgreSQL. Это — расшифровка доклада с конференции HighLoad++ 2016.

Всем привет! Меня зовут Вова, сегодня я буду рассказывать про базы данных «Яндекс.Почты».

Сначала несколько фактов, которые будут иметь значение в будущем. «Яндекс.Почта» — сервис достаточно старый: он был запущен в 2000 году, и потому мы накопили много legacy. У нас — как это принято и модно говорить — вполне себе highload-сервис, больше 10 миллионов пользователей в сутки, какие-то сотни миллионов всего. В бэкенд нам прилетает более 200 тысяч запросов в секунду в пике. Мы складываем более 150 миллионов писем в сутки, прошедших проверки на спам и вирусы. Суммарный объём писем за все 16 лет — больше 20 петабайт.

О чем пойдет речь? О том, как мы перевезли метаданные из Oracle в PostgreSQL. Метаданных там не петабайты — их чуть больше трехсот терабайт. В базы влетает более 250 тысяч запросов в секунду. Надо иметь в виду, что это маленькие OLTP-запросы, по большей части чтение (80%).

Это — не первая наша попытка избавиться от Oracle. В начале нулевых была попытка переехать на MySQL, она провалилась. В 2007 или 2008 была попытка написать что-то своё, она тоже провалилась. В обоих случаях был провал не столько по технически причинам, сколько по организационным.
Всего голосов 113: ↑111 и ↓2+109
Комментарии119

Из Oracle да в Postgres

Время на прочтение10 мин
Количество просмотров70K
Так уж случилось, что с Oracle организация наша работает давно и плотно. Сам я познакомился с Oracle Database ещё во времена 6-ой версии и, с тех пор, какого либо дискомфорта не испытывал. Всё испортили рыночные отношения. С недавних пор, мы начали замечать, что Заказчик гораздо благосклоннее смотрит на наши проекты если в них используются бесплатные СУБД. О портации одного из таких проектов и будет мой рассказ... 
Читать дальше →
Всего голосов 60: ↑57 и ↓3+54
Комментарии45

Хранимые функции. За и против

Время на прочтение6 мин
Количество просмотров90K
Использование хранимых функций СУБД для реализации бизнес-логики или её части, всегда было камнем преткновения. С одной стороны баррикад DBA и программисты БД, с другой — разработчики backend.
Рискну навлечь на себя гнев из обоих лагерей, но всё же просуммирую плюсы и минусы и изложу свои соображения о том, когда стоит писать код в хранимых функциях, а когда следует выносить наружу.


Читать дальше →
Всего голосов 82: ↑68 и ↓14+54
Комментарии191

Решение японских кроссвордов одним запросом SQL

Время на прочтение4 мин
Количество просмотров59K
Привет хабр! Приближается день программиста, и я спешу поделиться своими ненормальными наработками.

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

укусить себя за пятку
Всего голосов 172: ↑165 и ↓7+158
Комментарии26

Oracle, как религия

Время на прочтение6 мин
Количество просмотров15K
Всё, что написано ниже, относится к Oracle Database и Oracle Exadata.

Преамбула



Полная луна освещала пыльную, петляющую дорогу, исчезающую среди холмов впереди. Я стоял в раздумье в начале своего пути, размышляя о том, куда может привести эта дорога. Отбросив сомнения прочь, я начал свой путь к виднеющейся вдалеке пирамиде, вершина которой терялась среди облаков. По дороге мне никто не встретился, кроме памятника, больше похожего на надгробие с изображением человека и надписью огромными буквами “In Codd we trust”. Подойдя к пирамиде на достаточно близкое расстояние, я сумел разглядеть, что она состоит из DB_BLOCK-ов, большей частью размером 8Kb, но можно было найти и больше. На каждом блоке был изображен логотип компании, которая использовала блок для хранения своих данных. Заметив небольшую толпу около входа в пирамиду, я заинтересовался, и решил узнать, что это такое. Подойдя совсем близко, толпа приобрела очертания – большой частью она состояла из студентов, но встречались и бизнес-аналитики, тестеры, программисты, можно было даже заметить пару менеджеров по продажам – все они рвались внутрь.
Читать дальше →
Всего голосов 64: ↑57 и ↓7+50
Комментарии116

Oracle закручивает гайки

Время на прочтение3 мин
Количество просмотров4.2K
Это перевод заметки Исчезновение набора тестов или очередная часть MySQL стала закрытой? (Disappearing test cases or did another part of MySQL just become closed source?)

Около недели назад я изучал MySQL 5.5.27 и заметил любопытную деталь. Несмотря на то, что новый релиз MySQL содержал обычный набор исправлений, ни один из них не сопровождался тестом.
Читать дальше →
Всего голосов 82: ↑79 и ↓3+76
Комментарии28

PostgreSQL vs Oracle

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

Сравнение с точки зрения разработчика




Сразу оговорюсь — я не имею ничего против размещения части бизнес логики в хранимых функциях, если это предусмотрено в архитектуре системы и оправдано по ряду практических соображений, которые выходят за рамки этой статьи.
Читать дальше →
Всего голосов 80: ↑73 и ↓7+66
Комментарии201

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

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн

Так что же случилось со Сбербанком?

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

Итак,

— Что же произошло с процессингом Сбербанка?
— Произошла ошибка СУБД Oracle, приведшая к остановке экземпляра.

— Что за странные вещи написал вице-президент банка? Какое ещё удаление событий из журналов?
— Обратите внимание, комментарий написан далеко заполночь, и не на специализированном ресурсе типа sql.ru, и не администратором Oracle, а вице-президентом. Странно в такой ситуации ожидать глубокого технического описания. Тем не менее, описание достаточно точное. Чуть ниже будут технические подробности — попробуйте сформулировать «для простого народа» понятнее, чем это получилось у Орловского.

— Ну, давай уже технические подробности!
Читать дальше →
Всего голосов 270: ↑246 и ↓24+222
Комментарии126

Сбербанк ищет добровольцев

Время на прочтение1 мин
Количество просмотров10K
Вчера на официальном сайте Сбербанка была опубликована замечательная новость. Вкратце — никто из штатных специалистов не понимает, почему неделю назад весь вечер валялся процессинг. Поэтому всем желающим будут предоставлены системные логи, а также подробнейшее описание ситуации — вдруг кто-нибудь догадается.

Забавно, что в пресс-релизе нет ни слова относительно оплаты данной работы.
Всего голосов 133: ↑128 и ↓5+123
Комментарии300

Google требует от Oracle компенсации издержек $4 млн

Время на прочтение1 мин
Количество просмотров813
Компания Google предъявила в суд расходную ведомость с указанием затрат, понесённых во время процесса против Oracle. Поскольку поисковый гигант выиграл дело почти по всем пунктам, он требует от Oracle компенсации.

GOOGLE INC.’S BILL OF COSTS (pdf)

Производство копий документов: $2 900 349
Печать и расшифровка записей: $143 341
Компенсация эксперту, назначенному судом: $986 978 (50%)
Итого: $4 030 669
Читать дальше →
Всего голосов 87: ↑78 и ↓9+69
Комментарии42

Решение суда: Google не нарушает патентов Oracle

Время на прочтение1 мин
Количество просмотров1.9K
Итак, тяжба по патентам завершена — суд вынес вердикт по делу Google и Oracle, в котором поставлена точка по вопросу о нарушении патентов Oracle при разработке ОС Android. Таким образом, претензии Oracle на $1 млрд. + отчисления не удовлетворены.
После оглашения решения акции Google поползли вверх.
Текст решения
Читать дальше →
Всего голосов 181: ↑166 и ↓15+151
Комментарии78

Программирование, как мы его знаем, подходит к концу

Время на прочтение4 мин
Количество просмотров4.2K
Все прогрессивное человечество с замиранием сердца следит за процессом Oracle против Google. Уже очень скоро присяжные вынесут вердикт по делу. Под катом перевод статьи Andrew Binstock, главного редактора сайта www.drdobbs.com о том, что будет, если выиграет Oracle.
Читать дальше →
Всего голосов 153: ↑120 и ↓33+87
Комментарии191

Заметка про NULL

Время на прочтение10 мин
Количество просмотров183K
Всем привет!
Долго думал, что бы написать полезного про Оракл, перепробовал кучу тем. Каждый раз получалось слишком длинно, потому что уносило глубоко в дебри. Поэтому решил начать с максимально простой темы, чтобы оценить интерес аудитории и её отношение к моему стилю изложения материала (имхо, писатель из меня не очень). Несколько замечаний:
  • заметка относится к СУБД Oracle, но большинство написанного касается и других СУБД;
  • не получилось симпатично оформть код: тег source lang=«sql» подсвечивает слишком мало, как сделать по другому не в курсе. Если кто покажет, быстро всё приведу в более читабельный вид.
Итак.

Основные положения

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

Основная особенность NULLа заключается в том, что он не равен ничему, даже другому NULLу. С ним нельзя сравнить какое-либо значение с помощью любых операторов: =, <, >, like… Даже выражение NULL != NULL не будет истинным, ведь нельзя однозначно сравнить одну неизвестность с другой. Кстати, ложным это выражение тоже не будет, потому что при вычислении условий Oracle не ограничивается состояниями ИСТИНА и ЛОЖЬ. Из-за наличия элемента неопределённости в виде NULLа существует ещё одно состояние — НЕИЗВЕСТНО.
Читать дальше →
Всего голосов 75: ↑73 и ↓2+71
Комментарии46

OpenOffice.org отдадут в руки сообщества

Время на прочтение1 мин
Количество просмотров800
image

Корпорация Oracle намерена отдать офисный пакет OpenOffice.org в руки сообщества, а также больше не поставлять коммерческую версию продукта.
Читать дальше →
Всего голосов 94: ↑89 и ↓5+84
Комментарии125
1
Изменить настройки темы

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

Работа