Forwarded from Diasoft о технологиях по-настоящему
Диасофт проведет первый в своей истории День СУБД 🐬
21 апреля 2026 года состоится конференция по промышленной эксплуатации СУБД и архитектуре корпоративных данных!
Приглашаем ИТ-директоров из разных отраслей экономики, разработчиков, архитекторов и администраторов баз данных обсудить:
🗣 изменение подхода к импортозамещению СУБД;
🗣 Digital Q.DataBase от Диасофт – настоящий "полиглот" в мире СУБД;
🗣 СУБД для обеспечения технологического суверенитета;
🗣 импортозамещение СУБД в высоконагруженных системах;
🗣 истории успеха перехода на Digital Q.DataBase клиентов и партнеров Диасофт.
Регистрируйтесь на мероприятие по ссылке 🔗
До встречи!
21 апреля 2026 года состоится конференция по промышленной эксплуатации СУБД и архитектуре корпоративных данных!
Приглашаем ИТ-директоров из разных отраслей экономики, разработчиков, архитекторов и администраторов баз данных обсудить:
Регистрируйтесь на мероприятие по ссылке 🔗
До встречи!
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики!
Сегодня — без сложных технических деталей, команд и скриптов. В честь выходного дня предлагаю немного отвлечься и посмотреть на СУБД с неожиданной стороны.
⬇️ Пять фактов о базах данных, которые вы могли не знать
🟣 1. Первые СУБД появились еще до эры персональных компьютеров
В 1960-х годах компания General Electric разработала систему Integrated Data Store (IDS) — одну из первых в мире систем управления базами данных. Она работала на мейнфреймах, занимавших целые комнаты, и использовалась преимущественно в военных и космических проектах. А в СССР примерно в то же самое время велись работы над СУБД "Автодиректор", о которой я Вам расскажу завтра.
🟣 2. Ошибки в базах данных могут стоить миллиарды
В 2012 году крупный инвестиционный банк Knight Capital потерял 440 миллионов долларов за 45 минут из-за ошибки при развертывании обновления торговой системы. Причиной стал сбой в работе с базой данных: новый код использовал устаревшие настройки, что привело к миллионам ошибочных транзакций. Этот случай оказался настолько "болезненным", что до сих пор приводится в учебниках как пример того, почему тестирование миграций данных критически важно.
🟣 3. Самая большая база данных в мире — это… небо
Астрономический проект Large Synoptic Survey Telescope (ныне — Обсерватория Веры Рубин) генерирует около 20 терабайт данных каждую ночь. За десять лет работы объем накопленной информации достигнет 500 петабайт. Уже сейчас это одна из самых больших научных баз данных в мире. Для сравнения: все тексты, когда-либо написанные человечеством, оцениваются примерно в 50 петабайт.
🟣 4. СУБД в космосе и на земле
История развития систем управления базами данных тесно связана с космической отраслью. В 1960-х годах, когда NASA готовила высадку на Луну, потребовалась система для управления колоссальными объемами данных — от параметров полета до результатов испытаний оборудования. Именно тогда были заложены принципы надежности и отказоустойчивости, которые сегодня считаются стандартом для любой промышленной СУБД. Технологии, разработанные для космических программ, позже легли в основу многих коммерческих баз данных, с которыми мы работаем сейчас.
🟣 5. Почему базы данных называют «холодными»?
В сфере IT данные принято делить на «горячие» (активно используемые, хранящиеся в оперативной памяти) и «холодные» (редко запрашиваемые, хранящиеся на более медленных носителях). Но есть и термин «ледяные данные» — это информация, которая хранится исключительно для выполнения законодательных требований и никогда не запрашивается в рабочем процессе. По некоторым оценкам, до 60% корпоративных данных со временем становятся «ледяными».
🟣 Бонус: что общего у СУБД и космических кораблей?
Обе системы должны быть надежными, предсказуемыми и не допускать потери данных. Именно поэтому в космической отрасли до сих пор используются сертифицированные версии баз данных, чей код проверен десятилетиями эксплуатации. Аппараты, работающие на Марсе, управляются программным обеспечением, чья архитектура во многом схожа с той, что использовалась в СУБД 1990-х годов.
Хороших выходных и пусть ваши базы данных всегда остаются в целостности и сохранности!
Сегодня — без сложных технических деталей, команд и скриптов. В честь выходного дня предлагаю немного отвлечься и посмотреть на СУБД с неожиданной стороны.
В 1960-х годах компания General Electric разработала систему Integrated Data Store (IDS) — одну из первых в мире систем управления базами данных. Она работала на мейнфреймах, занимавших целые комнаты, и использовалась преимущественно в военных и космических проектах. А в СССР примерно в то же самое время велись работы над СУБД "Автодиректор", о которой я Вам расскажу завтра.
В 2012 году крупный инвестиционный банк Knight Capital потерял 440 миллионов долларов за 45 минут из-за ошибки при развертывании обновления торговой системы. Причиной стал сбой в работе с базой данных: новый код использовал устаревшие настройки, что привело к миллионам ошибочных транзакций. Этот случай оказался настолько "болезненным", что до сих пор приводится в учебниках как пример того, почему тестирование миграций данных критически важно.
Астрономический проект Large Synoptic Survey Telescope (ныне — Обсерватория Веры Рубин) генерирует около 20 терабайт данных каждую ночь. За десять лет работы объем накопленной информации достигнет 500 петабайт. Уже сейчас это одна из самых больших научных баз данных в мире. Для сравнения: все тексты, когда-либо написанные человечеством, оцениваются примерно в 50 петабайт.
История развития систем управления базами данных тесно связана с космической отраслью. В 1960-х годах, когда NASA готовила высадку на Луну, потребовалась система для управления колоссальными объемами данных — от параметров полета до результатов испытаний оборудования. Именно тогда были заложены принципы надежности и отказоустойчивости, которые сегодня считаются стандартом для любой промышленной СУБД. Технологии, разработанные для космических программ, позже легли в основу многих коммерческих баз данных, с которыми мы работаем сейчас.
В сфере IT данные принято делить на «горячие» (активно используемые, хранящиеся в оперативной памяти) и «холодные» (редко запрашиваемые, хранящиеся на более медленных носителях). Но есть и термин «ледяные данные» — это информация, которая хранится исключительно для выполнения законодательных требований и никогда не запрашивается в рабочем процессе. По некоторым оценкам, до 60% корпоративных данных со временем становятся «ледяными».
Обе системы должны быть надежными, предсказуемыми и не допускать потери данных. Именно поэтому в космической отрасли до сих пор используются сертифицированные версии баз данных, чей код проверен десятилетиями эксплуатации. Аппараты, работающие на Марсе, управляются программным обеспечением, чья архитектура во многом схожа с той, что использовалась в СУБД 1990-х годов.
Хороших выходных и пусть ваши базы данных всегда остаются в целостности и сохранности!
Please open Telegram to view this post
VIEW IN TELEGRAM
Уважаемые подписчики!
Продолжаю делиться с Вами интересными фактами из мира СУБД:
✅ Первая в мире реляционная СУБД сделана в СССР?
В 1961 году, за 9 лет до знаменитой работы Эдгара Кодда, в СССР заработала СУБД «Автодиректор».
✅ Первое промышленное применение СУБД «Автодиректор» состоялось в составе того, что позднее назовут АСУ ТП, на одном из металлургических комбинатов СССР. Еще раз: 1961 год - начало промышленной эксплуатации, на 13 лет раньше появления IBM System R и за 18 лет до появления СУБД Oracle (которая стала первой коммерчески применяемой СУБД в мире).
СУБД "Автодиректор" была реляционной, хотя тогда такого термина ещё не существовало. И она действительно работала!
Но сколь-либо массовой эта СУБД не стала, так как работала она только на ЭВМ «Киев», а таких машин в СССР было выпущено всего несколько штук.
✅ Самая массовая СУБД в СССР
А вот самой массовой по числу применений советской СУБД стала иерархическая СУБД «Инес». Её появление пришлось на самый конец 1979 года, но уже в 1980‑х у неё было около 2000 внедрений — это, между прочим, 60% от всех внедрений СУБД в СССР.
В 1990 году разработчики СУБД «Инес» даже получили Премию Совета Министров СССР за эту выдающуюся разработку.
✅ Уже после распада СССР на основе СУБД «Инес» создали СУБД «Ника», права на которую перешли к Cognitive Technologies. Авторы СУБД "Инес", ставшие сотрудниками этой компании, адаптировали свои предыдущие наработки к актуальным на тот момент времени операционным системам и "железу".
Эта система жива до сих пор: она включена в Реестр российского ПО, используется в ряде государственных организаций и поддерживается разработчиком. В частности, её эксплуатируют Государственный исторический музей и Музей имени Андрея Рублева. В ней хранится описание коллекций этих музеев.
🇷🇺 СУБД Digital Q.DataBase.
Подпишись на МАХ канал!
Продолжаю делиться с Вами интересными фактами из мира СУБД:
В 1961 году, за 9 лет до знаменитой работы Эдгара Кодда, в СССР заработала СУБД «Автодиректор».
СУБД "Автодиректор" была реляционной, хотя тогда такого термина ещё не существовало. И она действительно работала!
Но сколь-либо массовой эта СУБД не стала, так как работала она только на ЭВМ «Киев», а таких машин в СССР было выпущено всего несколько штук.
А вот самой массовой по числу применений советской СУБД стала иерархическая СУБД «Инес». Её появление пришлось на самый конец 1979 года, но уже в 1980‑х у неё было около 2000 внедрений — это, между прочим, 60% от всех внедрений СУБД в СССР.
В 1990 году разработчики СУБД «Инес» даже получили Премию Совета Министров СССР за эту выдающуюся разработку.
Эта система жива до сих пор: она включена в Реестр российского ПО, используется в ряде государственных организаций и поддерживается разработчиком. В частности, её эксплуатируют Государственный исторический музей и Музей имени Андрея Рублева. В ней хранится описание коллекций этих музеев.
Подпишись на МАХ канал!
Please open Telegram to view this post
VIEW IN TELEGRAM
Небольшая, но полезная заметка.
✅ В этом видео покажу, как развернуть тестовую среду из 3 нод с etcd, Patroni, СУБД Digital Q.DataBase и vip-manager.
Все компоненты входят в бесплатный дистрибутив Digital Q.DataBase (до 8 ядер).
Скачать можно на сайте:
https://database.diasoft.ru/?utm_source=andrei
✅ qdb-vip-manager: компонент системы управления сетевой инфраструктурой, отвечающий за управление виртуальным IP-адресом;
обеспечивает автоматическое переключение виртуального IP-адреса; поддерживает динамическое назначение адреса и интеграцию с кластерными решениями.
Q.DataBase vip-manager назначает виртуальный IP-адрес активному узлу кластера в зависимости от состояния, хранящегося в ETCD, Consul или через REST API Patroni.
➡️ Rutube видео:
https://rutube.ru/video/5ec9fbcf8ee040fab397aedc69a217d6/?r=wd
Все компоненты входят в бесплатный дистрибутив Digital Q.DataBase (до 8 ядер).
Скачать можно на сайте:
https://database.diasoft.ru/?utm_source=andrei
обеспечивает автоматическое переключение виртуального IP-адреса; поддерживает динамическое назначение адреса и интеграцию с кластерными решениями.
Q.DataBase vip-manager назначает виртуальный IP-адрес активному узлу кластера в зависимости от состояния, хранящегося в ETCD, Consul или через REST API Patroni.
https://rutube.ru/video/5ec9fbcf8ee040fab397aedc69a217d6/?r=wd
Please open Telegram to view this post
VIEW IN TELEGRAM
Это ваш шанс.
T-SQL-кода с MS SQL Server на российскую СУБД из Реестра.
Да, это реально.
Мы поддерживаем Alt Linux 11, Astra Linux 1.7, 1.8, Red OS 7,8 и Ubuntu 22.04, 24.04 LTS, Docker-контейнер.
Разбираю ключевые возможности платформы и показываю живые примеры в действии / вебинары.
🎥 Запись на Rutube
🎥 VK video
🎥 Yandex dzen
🎥 YouTube
Также, читайте нас на Habr
— в нашу тех. поддержку
— в личку
— на почту
— через форму
https://database.diasoft.ru/?utm_source=tgdqdatabase#contacts
✓ dbms-пакеты работают
✓ плавный переход
✓ экономия времени и денег
Подписывайтесь, чтобы узнать подробности и записаться на показ демо!
Подпишись на МАХ канал!
Please open Telegram to view this post
VIEW IN TELEGRAM
СУБД Digital Q.DataBase pinned «🐘 Изучите возможности СУБД Digital Q.DataBase уже сейчас🔥 ➡️ Хотите увидеть в деле российскую СУБД-полиглот на базе PostgreSQL, которая исполняет T-SQL и PL/SQL без переписывания? Это ваш шанс. ➡️ Мы уже перевели систему с 92 000 таблиц и 6,5 млн строк T…»
Дорогие подписчики!
🟣 Сегодня — необычный праздник. 31 марта отмечается Всемирный день резервного копирования, или Всемирный день бэкапа (World Backup Day).
✅ Дата выбрана не случайно: накануне апреля, когда многие шутят и разыгрывают друг друга, организаторы решили напомнить о серьёзных вещах. По статистике, каждый третий пользователь никогда не делал резервную копию своих данных, а 29% катастроф с потерей информации происходят по чистой случайности.
✅ В Digital Q.DataBase мы относимся к сохранности данных со всей серьёзностью. В честь праздника — краткий обзор инструментов резервного копирования и несколько полезных команд.
✅ Основные инструменты бэкапа в Digital Q.DataBase
Для создания резервных копий используется утилита pg_dump. Она создает согласованную копию базы данных даже при одновременной работе пользователей, не блокируя доступ на чтение и запись.
Так же, составе нашей СУБД есть Центр управления — графическая утилита, которая предоставляет удобный интерфейс для выполнения административных задач, включая создание и восстановление резервных копий.
✅ Центр управления позволяет:
· Подключаться к серверу Digital Q.DataBase через удобный графический интерфейс;
· Просматривать список баз данных;
· Создавать резервные копии в несколько кликов;
· Восстанавливать базы данных из ранее созданных бэкапов;
· Настраивать параметры резервного копирования без необходимости писать скрипты.
⬇️ Как создать бэкап через Центр управления
1. Запустите Центр управления Digital Q.DataBase;
2. Подключитесь к нужному серверу;
3. В списке баз данных выберите ту, которую необходимо зарезервировать;
4. Нажмите кнопку «Резервное копирование»;
5. Укажите параметры:
· Каталог для сохранения копии;
· Формат (текстовый SQL-файл, сжатый архив, каталог для параллельного бэкапа);
· Количество параллельных потоков (для больших баз);
· Необходимость включить в копию глобальные объекты (роли, табличные пространства);
6. Нажмите «Выполнить».
Прогресс выполнения отображается в реальном времени. По завершении вы получаете готовую резервную копию, которую можно хранить на локальном диске или переместить в защищенное хранилище.
⬇️ Восстановление из бэкапа
Восстановление выполняется так же просто:
1. В Центре управления выберите базу данных (или создайте новую);
2. Нажмите кнопку «Восстановление»;
3. Укажите путь к файлу или каталогу с резервной копией;
4. При необходимости настройте параметры восстановления;
5. Запустите процесс.
✅ Кому подойдет Центр управления
· Администраторам, которые предпочитают графический интерфейс командной строке;
· Разработчикам, которым нужно быстро создать локальную копию базы для тестирования;
· При переходе с других СУБД — многие администраторы Oracle и MS SQL Server привыкли к визуальным инструментам (Oracle Enterprise Manager, SQL Server Management Studio), и Центр управления Digital Q.DataBase обеспечивает схожий пользовательский опыт.
🟣 Важное напоминание
Резервная копия ценна только тогда, когда проверена ее восстановление. Рекомендуется периодически тестировать восстановление из бэкапов на тестовом окружении — это единственный способ убедиться, что в критический момент всё пройдёт штатно.
Всемирный день бэкапа — хороший повод проверить, настроено ли у вас регулярное резервное копирование. Если нет — сегодня отличный день, чтобы это исправить!
🇷🇺 СУБД Digital Q.DataBase.
Подпишись на МАХ канал!
Для создания резервных копий используется утилита pg_dump. Она создает согласованную копию базы данных даже при одновременной работе пользователей, не блокируя доступ на чтение и запись.
Так же, составе нашей СУБД есть Центр управления — графическая утилита, которая предоставляет удобный интерфейс для выполнения административных задач, включая создание и восстановление резервных копий.
· Подключаться к серверу Digital Q.DataBase через удобный графический интерфейс;
· Просматривать список баз данных;
· Создавать резервные копии в несколько кликов;
· Восстанавливать базы данных из ранее созданных бэкапов;
· Настраивать параметры резервного копирования без необходимости писать скрипты.
1. Запустите Центр управления Digital Q.DataBase;
2. Подключитесь к нужному серверу;
3. В списке баз данных выберите ту, которую необходимо зарезервировать;
4. Нажмите кнопку «Резервное копирование»;
5. Укажите параметры:
· Каталог для сохранения копии;
· Формат (текстовый SQL-файл, сжатый архив, каталог для параллельного бэкапа);
· Количество параллельных потоков (для больших баз);
· Необходимость включить в копию глобальные объекты (роли, табличные пространства);
6. Нажмите «Выполнить».
Прогресс выполнения отображается в реальном времени. По завершении вы получаете готовую резервную копию, которую можно хранить на локальном диске или переместить в защищенное хранилище.
Восстановление выполняется так же просто:
1. В Центре управления выберите базу данных (или создайте новую);
2. Нажмите кнопку «Восстановление»;
3. Укажите путь к файлу или каталогу с резервной копией;
4. При необходимости настройте параметры восстановления;
5. Запустите процесс.
· Администраторам, которые предпочитают графический интерфейс командной строке;
· Разработчикам, которым нужно быстро создать локальную копию базы для тестирования;
· При переходе с других СУБД — многие администраторы Oracle и MS SQL Server привыкли к визуальным инструментам (Oracle Enterprise Manager, SQL Server Management Studio), и Центр управления Digital Q.DataBase обеспечивает схожий пользовательский опыт.
Резервная копия ценна только тогда, когда проверена ее восстановление. Рекомендуется периодически тестировать восстановление из бэкапов на тестовом окружении — это единственный способ убедиться, что в критический момент всё пройдёт штатно.
Всемирный день бэкапа — хороший повод проверить, настроено ли у вас регулярное резервное копирование. Если нет — сегодня отличный день, чтобы это исправить!
Подпишись на МАХ канал!
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики!
✅ В Digital Q.DataBase мы последовательно расширяем набор встроенных пакетов, обеспечивающих совместимость с PL/SQL-окружением Oracle.
Сегодня я расскажу Вам о двух важных пакетах, которые были добавлены (в числе прочих) в последнюю вышедшую версию Digital Q.DataBase.
DBMS_ALERT — уведомления между сеансами
✅ Пакет DBMS_ALERT предоставляет механизм асинхронной передачи уведомлений между различными сеансами работы с базой данных. Это позволяет одному сеансу отправить сигнал о наступлении определенного события, а другим сеансам — ожидать его и реагировать.
Основные возможности:
· Регистрация на получение уведомлений с указанием имени сигнала;
· Отправка уведомлений с возможностью передачи короткого текстового сообщения;
· Ожидание уведомления с настройкой таймаута;
· Возможность одного сеанса подписаться на несколько сигналов одновременно.
Пример использования:
Области применения:
· Оповещение прикладных модулей об изменении справочных данных;
· Координация работы параллельных процессов;
· Информирование администраторов о наступлении пороговых событий.
DBMS_APPLICATION_INFO — мониторинг выполнения операций
✅ Пакет DBMS_APPLICATION_INFO позволяет приложению передавать в СУБД информацию о текущей выполняемой операции. Эти данные становятся доступными через системные представления и могут использоваться для мониторинга, отладки и аудита.
Основные возможности:
· Установка имени модуля (MODULE), который в данный момент выполняется;
· Установка имени действия (ACTION) внутри модуля;
· Передача дополнительной клиентской информации (CLIENT_INFO);
· Отслеживание прогресса выполнения длительных операций.
Пример использования:
Области применения:
· Отслеживание длительных операций в системах мониторинга;
· Идентификация источника нагрузки в представлениях сессий;
· Аудит действий прикладного кода;
· Отладка сложных хранимых процедур.
✅ В ближайшее время расскажем Вам и о других DBMS пакетах, добавленных в вышедшую 21 марта версию.
Сегодня я расскажу Вам о двух важных пакетах, которые были добавлены (в числе прочих) в последнюю вышедшую версию Digital Q.DataBase.
DBMS_ALERT — уведомления между сеансами
Основные возможности:
· Регистрация на получение уведомлений с указанием имени сигнала;
· Отправка уведомлений с возможностью передачи короткого текстового сообщения;
· Ожидание уведомления с настройкой таймаута;
· Возможность одного сеанса подписаться на несколько сигналов одновременно.
Пример использования:
-- Сеанс 1: регистрируется на получение уведомления
EXEC DBMS_ALERT.REGISTER('my_alert');
-- Сеанс 2: отправляет уведомление
EXEC DBMS_ALERT.SIGNAL('my_alert', 'Данные обновлены');
-- Сеанс 1: ожидает уведомление
DECLARE
v_name VARCHAR2(100);
v_msg VARCHAR2(1000);
v_status INTEGER;
BEGIN
DBMS_ALERT.WAITONE('my_alert', v_name, v_msg, v_status, 30);
IF v_status = 0 THEN
DBMS_OUTPUT.PUT_LINE('Получено: ' || v_msg);
END IF;
END;
Области применения:
· Оповещение прикладных модулей об изменении справочных данных;
· Координация работы параллельных процессов;
· Информирование администраторов о наступлении пороговых событий.
DBMS_APPLICATION_INFO — мониторинг выполнения операций
Основные возможности:
· Установка имени модуля (MODULE), который в данный момент выполняется;
· Установка имени действия (ACTION) внутри модуля;
· Передача дополнительной клиентской информации (CLIENT_INFO);
· Отслеживание прогресса выполнения длительных операций.
Пример использования:
-- Начало выполнения отчета
EXEC DBMS_APPLICATION_INFO.SET_MODULE('Отчетность', 'Формирование годового отчета');
-- Уточнение действия внутри модуля
EXEC DBMS_APPLICATION_INFO.SET_ACTION('Загрузка данных');
-- Выполнение длительной операции
INSERT INTO annual_report SELECT * FROM operations WHERE period = 2025;
-- Обновление прогресса
EXEC DBMS_APPLICATION_INFO.SET_ACTION('Агрегация данных');
-- Дальнейшие операции...
-- Завершение
EXEC DBMS_APPLICATION_INFO.SET_MODULE(NULL, NULL);
Области применения:
· Отслеживание длительных операций в системах мониторинга;
· Идентификация источника нагрузки в представлениях сессий;
· Аудит действий прикладного кода;
· Отладка сложных хранимых процедур.
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики!
✅ Продолжаем рассказывать о встроенных пакетах Digital Q.DataBase, обеспечивающих совместимость с PL/SQL-окружением Oracle. Сегодня разберём ещё два пакета из тех, что попали в последний выпуск (версия от 21 марта), — DBMS_LOCK и DBMS_ODCI.
DBMS_LOCK — пользовательские блокировки
✅ Пакет DBMS_LOCK предоставляет механизм создания блокировок, управляемых непосредственно прикладным кодом. Это позволяет синхронизировать выполнение нескольких сеансов при работе с общими ресурсами, не затрагивая стандартные механизмы блокировок строк и таблиц.
Основные возможности:
· Запрос и освобождение блокировки с указанием имени и режима;
· Преобразование режима уже полученной блокировки;
· Проверка идентификатора блокировки по имени;
· Ожидание освобождения блокировки с настройкой таймаута.
Пример использования:
Области применения:
· Ограничение одновременного выполнения одной и той же процедуры;
· Синхронизация доступа к внешним системам (файловая система, API);
· Реализация очередей и пулов ресурсов на уровне приложения;
· Защита критических участков кода при параллельных вызовах.
DBMS_ODCI — управление контекстом транзакций
✅ Пакет DBMS_ODCI предоставляет функции для работы с контекстом выполнения и управления состоянием транзакций в пользовательских типах данных и методах. Этот пакет используется преимущественно при реализации пользовательских индексов и операторов расширения данных.
Основные возможности:
· Получение информации о текущем состоянии транзакции;
· Управление контекстом выполнения для методов пользовательских типов;
· Поддержка кастомных реализаций индексов (ODCI — Oracle Data Cartridge Interface);
· Обеспечение корректной фиксации и отката в расширенных сценариях.
Пример использования:
Области применения:
· Разработка пользовательских типов данных со сложной транзакционной логикой;
· Создание нестандартных методов доступа к данным;
· Реализация расширений для полнотекстового поиска и пространственных данных;
· Интеграция с внешними движками обработки данных.
Хочу ещё раз напомнить - именно наличие большого количества аналогов DBMS_-пакетов Oracle позволяющих не изменять хранимую бизнес-логику при уходе с Oracle, делает Digital Q.DataBase наиболее рациональным вариантом для замены этой зарубежной СУБД.
DBMS_LOCK — пользовательские блокировки
Основные возможности:
· Запрос и освобождение блокировки с указанием имени и режима;
· Преобразование режима уже полученной блокировки;
· Проверка идентификатора блокировки по имени;
· Ожидание освобождения блокировки с настройкой таймаута.
Пример использования:
-- Объявление идентификатора блокировки
DECLARE
v_lockhandle VARCHAR2(128);
BEGIN
-- Запрос блокировки с именем 'MY_APP_LOCK'
DBMS_LOCK.ALLOCATE_UNIQUE('MY_APP_LOCK', v_lockhandle);
-- Захват блокировки в монопольном режиме
DBMS_LOCK.REQUEST(v_lockhandle, DBMS_LOCK.X_MODE, 10);
-- Критическая секция: работа с общим ресурсом
-- Освобождение блокировки
DBMS_LOCK.RELEASE(v_lockhandle);
END;
Области применения:
· Ограничение одновременного выполнения одной и той же процедуры;
· Синхронизация доступа к внешним системам (файловая система, API);
· Реализация очередей и пулов ресурсов на уровне приложения;
· Защита критических участков кода при параллельных вызовах.
DBMS_ODCI — управление контекстом транзакций
Основные возможности:
· Получение информации о текущем состоянии транзакции;
· Управление контекстом выполнения для методов пользовательских типов;
· Поддержка кастомных реализаций индексов (ODCI — Oracle Data Cartridge Interface);
· Обеспечение корректной фиксации и отката в расширенных сценариях.
Пример использования:
-- Проверка состояния транзакции в методе пользовательского типа
CREATE OR REPLACE TYPE BODY my_custom_type AS
MEMBER FUNCTION check_state RETURN NUMBER AS
BEGIN
-- Проверка, активна ли текущая транзакция
IF DBMS_ODCI.IS_TRANSACTION_ACTIVE = 1 THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END;
END;
Области применения:
· Разработка пользовательских типов данных со сложной транзакционной логикой;
· Создание нестандартных методов доступа к данным;
· Реализация расширений для полнотекстового поиска и пространственных данных;
· Интеграция с внешними движками обработки данных.
Хочу ещё раз напомнить - именно наличие большого количества аналогов DBMS_-пакетов Oracle позволяющих не изменять хранимую бизнес-логику при уходе с Oracle, делает Digital Q.DataBase наиболее рациональным вариантом для замены этой зарубежной СУБД.
Please open Telegram to view this post
VIEW IN TELEGRAM
Первое — уже 21 апреля 2026: конференция о промышленной эксплуатации и архитектуре корпоративных данных.
Место проведения — Москва, Кибердом.
Наши профессионалы подробно объяснят реальные кейсы и практику внедрения.
Обязательно регистрируйтесь
https://dbd.diasoft.ru/?utm_source=andrei#programme
Увидимся!
Please open Telegram to view this post
VIEW IN TELEGRAM
Диасофту 35 лет!
Сегодня, 4 апреля, нашей компании исполнилось 35 лет.
Вот уже 35 лет мы работаем для Вас, создавая IT-системы, которым доверяют!
🚀 Многие знают, что нашу Компанию основали выходцы из Центра Управления Полетами. Люди, для которых «надежность» — не маркетинг, а безусловный приоритет в оценке результатов деятельности.
За минувшие годы мы выросли в крупного разработчика ПО. И сегодня, празднуя 35 лет со дня основания компании, мы хотим выразить благодарность нашим клиентам, партнёрам и всем, кто пользуется нашими продуктами.
И мы очень рады развивать для Вас нашу СУБД Digital Q.DataBase - продукт в котором особенно важно сохранить наследие и традиции ЦУП.
🙌 Нам будет очень приятно получить Ваши поздравления с днем рождения компании и Ваши отзывы об использовании нашего продукта на наш адрес: supportqdb@diasoft.ru.
Сегодня, 4 апреля, нашей компании исполнилось 35 лет.
Вот уже 35 лет мы работаем для Вас, создавая IT-системы, которым доверяют!
🚀 Многие знают, что нашу Компанию основали выходцы из Центра Управления Полетами. Люди, для которых «надежность» — не маркетинг, а безусловный приоритет в оценке результатов деятельности.
За минувшие годы мы выросли в крупного разработчика ПО. И сегодня, празднуя 35 лет со дня основания компании, мы хотим выразить благодарность нашим клиентам, партнёрам и всем, кто пользуется нашими продуктами.
И мы очень рады развивать для Вас нашу СУБД Digital Q.DataBase - продукт в котором особенно важно сохранить наследие и традиции ЦУП.
Please open Telegram to view this post
VIEW IN TELEGRAM
Уважаемые подписчики!
Хочу напомнить Вам о двух каналах, связанных с нашей Компанией:
⚡️ Канал о цифровизации финансовых компаний, мнения экспертов отрасли, новости банков, регулятора и IT-разработчиков:
🌐
https://t.me/DiasoftNews_channel
⚡️ Канал о технологиях и эффективном производстве современных IT-решений:
🌐
https://t.me/DiasoftTechno_Channel
Тут Вы сможете узнавать о важных новостях, связанных с нашей компанией.
Хочу напомнить Вам о двух каналах, связанных с нашей Компанией:
https://t.me/DiasoftNews_channel
https://t.me/DiasoftTechno_Channel
Тут Вы сможете узнавать о важных новостях, связанных с нашей компанией.
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики!
✅ Продолжаем рассказывать о встроенных пакетах Digital Q.DataBase, обеспечивающих совместимость с PL/SQL-окружением Oracle. Сегодня разберём ещё два пакета из тех, что попали в последний выпуск (версия от 21 марта), — DBMS_ERRLOG и DBMS_HASH.
DBMS_ERRLOG — логирование ошибок DML-операций
➡️ Пакет DBMS_ERRLOG позволяет сохранять информацию об ошибках, возникающих при выполнении массовых DML-операций (INSERT, UPDATE, MERGE, DELETE), без прерывания всего процесса. Это особенно полезно при загрузке больших объёмов данных, когда отдельные некорректные записи не должны останавливать обработку всего набора.
Основные возможности:
· Создание таблицы логирования ошибок для указанной таблицы;
· Продолжение выполнения DML-операции при возникновении ошибок в отдельных строках;
· Фиксация кода ошибки, номера строки и значений ошибочных колонок;
· Настройка перечня колонок, подлежащих логированию.
Пример использования:
Области применения:
· Загрузка данных из внешних источников с «грязными» данными;
· Массовые обновления в условиях, когда часть строк не проходит валидацию;
· Аудит и анализ причин отбраковки данных при ETL-процессах;
· Обеспечение отказоустойчивости пакетной обработки.
DBMS_HASH — хэширование данных
➡️ Пакет DBMS_HASH предоставляет функции для вычисления хэш-значений данных различных типов. Это позволяет создавать контрольные суммы, сравнивать большие объёмы данных, реализовывать механизмы кэширования и проверки целостности.
Основные возможности:
· Вычисление хэша для значений типов VARCHAR2, NUMBER, DATE, RAW, CLOB, BLOB;
· Поддержка алгоритмов MD5 и SHA-1 (совместимость с Oracle);
· Получение хэша от конкатенации нескольких значений;
· Использование в выражениях SQL и PL/SQL.
Пример использования:
Области применения:
· Сравнение содержимого двух таблиц без построчного обхода;
· Проверка целостности данных при репликации;
· Создание ключей кэширования на основе сложных составных данных;
· Обнаружение дубликатов при отсутствии однозначного первичного ключа;
· Контроль неизменности конфигурационных данных.
✅ Хочу ещё раз напомнить: именно наличие большого количества аналогов DBMS-пакетов Oracle, позволяющих не изменять хранимую бизнес-логику при уходе с Oracle, делает Digital Q.DataBase наиболее рациональным вариантом для замены этой зарубежной СУБД.
DBMS_ERRLOG — логирование ошибок DML-операций
Основные возможности:
· Создание таблицы логирования ошибок для указанной таблицы;
· Продолжение выполнения DML-операции при возникновении ошибок в отдельных строках;
· Фиксация кода ошибки, номера строки и значений ошибочных колонок;
· Настройка перечня колонок, подлежащих логированию.
Пример использования:
-- Создание таблицы логирования ошибок для таблицы employees
EXEC DBMS_ERRLOG.CREATE_ERROR_LOG('employees', 'err_employees');
-- Выполнение массовой вставки с логированием ошибок
INSERT INTO employees (id, name, salary)
SELECT emp_id, emp_name, emp_salary FROM source_data
LOG ERRORS INTO err_employees REJECT LIMIT UNLIMITED;
Области применения:
· Загрузка данных из внешних источников с «грязными» данными;
· Массовые обновления в условиях, когда часть строк не проходит валидацию;
· Аудит и анализ причин отбраковки данных при ETL-процессах;
· Обеспечение отказоустойчивости пакетной обработки.
DBMS_HASH — хэширование данных
Основные возможности:
· Вычисление хэша для значений типов VARCHAR2, NUMBER, DATE, RAW, CLOB, BLOB;
· Поддержка алгоритмов MD5 и SHA-1 (совместимость с Oracle);
· Получение хэша от конкатенации нескольких значений;
· Использование в выражениях SQL и PL/SQL.
Пример использования:
-- Вычисление хэша для строкового значения
DECLARE
v_hash RAW(16);
BEGIN
v_hash := DBMS_HASH.MD5('Hello, Digital Q.DataBase');
DBMS_OUTPUT.PUT_LINE(RAWTOHEX(v_hash));
END;
-- Использование в SQL-запросе для сравнения таблиц
SELECT DBMS_HASH.MD5(column1 || column2 || column3) AS row_hash
FROM my_table;Области применения:
· Сравнение содержимого двух таблиц без построчного обхода;
· Проверка целостности данных при репликации;
· Создание ключей кэширования на основе сложных составных данных;
· Обнаружение дубликатов при отсутствии однозначного первичного ключа;
· Контроль неизменности конфигурационных данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики!
➡️ Продолжаем рассказывать о доработках, вошедших в последний выпуск Digital Q.DataBase (версия от 21 марта). Сегодня — о рабочей поддержке команды UPDATE STATISTICS.
Для чего нужна эта команда
➡️ Статистика — это метаданные, которые описывают распределение данных в таблицах и индексах. Оптимизатор запросов использует их для выбора наиболее эффективного плана выполнения. Если статистика устаревает, например после массовой вставки, обновления или удаления данных, оптимизатор может принять неверное решение, что приведёт к падению производительности.
Команда UPDATE STATISTICS обновляет эту информацию, позволяя оптимизатору строить актуальные планы запросов.
Что именно добавлено
➡️ В Digital Q.DataBase теперь поддерживаются следующие варианты синтаксиса UPDATE STATISTICS, совместимые с MS SQL Server:
Основные возможности:
· Обновление статистики на уровне таблицы, отдельного индекса или статистического объекта;
· Выбор режима сбора данных: полное сканирование или указание процента выборки;
· Совместимость с существующими скриптами и хранимыми процедурами, переходящими с MS SQL Server.
Пример использования в миграционных сценариях
➡️ При переходе с MS SQL Server на Digital Q.DataBase многие приложения содержат вызовы UPDATE STATISTICS и sp_updatestats в регламентных заданиях. Ранее такие вызовы приходилось удалять или заменять. Теперь основные прикладные сценарии работают без изменений:
➡️ В текущей реализации поддерживаются основные варианты синтаксиса и вызовы системной процедуры, необходимые для подавляющего большинства прикладных сценариев обслуживания и миграции.
➡️ Хочу ещё раз напомнить: именно такие, на первый взгляд небольшие, доработки делают переход с зарубежных СУБД на Digital Q.DataBase максимально плавным. Хранимые процедуры, регламентные задания и скрипты обслуживания продолжают работать так же, как и раньше, — без переписывания.
Для чего нужна эта команда
Команда UPDATE STATISTICS обновляет эту информацию, позволяя оптимизатору строить актуальные планы запросов.
Что именно добавлено
-- Обновление статистики по указанной таблице
UPDATE STATISTICS employees;
-- Обновление статистики по конкретному индексу или статистическому объекту
UPDATE STATISTICS employees (ix_employees_name);
-- Обновление статистики с полным сканированием таблицы
UPDATE STATISTICS employees WITH FULLSCAN;
-- Обновление статистики с указанием процента выборки
UPDATE STATISTICS employees WITH SAMPLE 10 PERCENT;
Основные возможности:
· Обновление статистики на уровне таблицы, отдельного индекса или статистического объекта;
· Выбор режима сбора данных: полное сканирование или указание процента выборки;
· Совместимость с существующими скриптами и хранимыми процедурами, переходящими с MS SQL Server.
Пример использования в миграционных сценариях
-- Типовой скрипт обслуживания из MS SQL Server
EXEC sp_updatestats; -- Вызов хранимой процедуры обновления статистики по всей БД
-- Или прямая команда
UPDATE STATISTICS sales.orders WITH FULLSCAN;
Please open Telegram to view this post
VIEW IN TELEGRAM
«Мучения клиента выгодны бизнесу».
Я показал, что это возможно, если СУБД изначально спроектирована с учетом реальных сценариев миграции, а не просто повторяет PostgreSQL с частичными доработками.
Отдельно разобрали, почему классические подходы через «форки ради форков» создают для заказчика:
почему другие отечественные компании не достигли такого же результата?
либо у них нет технологий и ресурсов,
либо они не стремятся облегчать переход заказчику,
так как «мучение клиента» выгодно для бизнеса.
Обсуждение получилось живым, а сам тезис разошёлся далеко за пределы мероприятия.
Порой правда звучит немного неудобно - зато её хорошо запоминают.
Статья на Tadviser
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики!
➡️ Продолжаем рассказывать о встроенных пакетах Digital Q.DataBase, обеспечивающих совместимость с PL/SQL-окружением Oracle. Сегодня разберём ещё два пакета — DBMS_XMLDOM и DBMS_XMLGEN.
DBMS_XMLDOM — работа с XML-документами через DOM-модель
➡️ Пакет DBMS_XMLDOM предоставляет интерфейс для работы с XML-документами на основе объектной модели DOM (Document Object Model). Он позволяет создавать, модифицировать и анализировать XML-структуры непосредственно в хранимых процедурах.
Основные возможности:
· Создание XML-документов с нуля с использованием DOM-узлов;
· Парсинг существующих XML-документов в DOM-структуру;
· Навигация по дереву документа с доступом к любому узлу;
· Модификация содержимого, атрибутов и структуры документа;
· Преобразование DOM-документа обратно в текстовое представление XML.
Пример использования:
Области применения:
· Формирование сложных XML-отчётов внутри базы данных;
· Генерация XML-файлов для обмена с внешними системами;
· Разбор входящих XML-сообщений без привлечения внешних парсеров;
· Преобразование реляционных данных в иерархические XML-структуры.
DBMS_XMLGEN — преобразование SQL-результатов в XML
➡️ Пакет DBMS_XMLGEN позволяет преобразовывать результаты SQL-запросов в XML-формат. В отличие от DBMS_XMLDOM, этот пакет ориентирован на автоматическую генерацию XML из реляционных данных с минимальным участием разработчика.
Основные возможности:
· Преобразование результатов SELECT в XML любого уровня вложенности;
· Настройка форматирования: имя корневого элемента, кодировка, отступы;
· Поддержка как прямой генерации в память, так и потокового вывода;
· Возможность задавать правила отображения столбцов в XML-элементы.
Пример использования:
Области применения:
· Экспорт табличных данных в XML для интеграции с внешними системами;
· Создание XML-представлений для веб-сервисов;
· Формирование XML-отчётов по шаблону «запрос — XML»;
· Быстрое прототипирование XML-интерфейсов без написания сложного парсинга.
DBMS_XMLDOM — работа с XML-документами через DOM-модель
Основные возможности:
· Создание XML-документов с нуля с использованием DOM-узлов;
· Парсинг существующих XML-документов в DOM-структуру;
· Навигация по дереву документа с доступом к любому узлу;
· Модификация содержимого, атрибутов и структуры документа;
· Преобразование DOM-документа обратно в текстовое представление XML.
Пример использования:
DECLARE
v_doc DBMS_XMLDOM.DOMDocument;
v_root DBMS_XMLDOM.DOMNode;
v_elem DBMS_XMLDOM.DOMNode;
BEGIN
-- Создание нового документа
v_doc := DBMS_XMLDOM.newDOMDocument;
v_root := DBMS_XMLDOM.makeNode(v_doc);
-- Создание корневого элемента
v_elem := DBMS_XMLDOM.createElement(v_doc, 'employees');
v_root := DBMS_XMLDOM.appendChild(v_root, v_elem);
-- Вывод документа
DBMS_OUTPUT.PUT_LINE(DBMS_XMLDOM.getXMLType(v_doc).getClobVal);
END;
Области применения:
· Формирование сложных XML-отчётов внутри базы данных;
· Генерация XML-файлов для обмена с внешними системами;
· Разбор входящих XML-сообщений без привлечения внешних парсеров;
· Преобразование реляционных данных в иерархические XML-структуры.
DBMS_XMLGEN — преобразование SQL-результатов в XML
Основные возможности:
· Преобразование результатов SELECT в XML любого уровня вложенности;
· Настройка форматирования: имя корневого элемента, кодировка, отступы;
· Поддержка как прямой генерации в память, так и потокового вывода;
· Возможность задавать правила отображения столбцов в XML-элементы.
Пример использования:
-- Простейшая генерация XML из результата запроса
DECLARE
v_ctx DBMS_XMLGEN.ctxHandle;
v_xml XMLType;
BEGIN
v_ctx := DBMS_XMLGEN.newContext('SELECT id, name, salary FROM employees');
v_xml := DBMS_XMLGEN.getXML(v_ctx);
DBMS_OUTPUT.PUT_LINE(v_xml.getClobVal);
DBMS_XMLGEN.closeContext(v_ctx);
END;
-- Генерация XML с настройкой формата
DECLARE
v_ctx DBMS_XMLGEN.ctxHandle;
v_xml CLOB;
BEGIN
v_ctx := DBMS_XMLGEN.newContext('SELECT id, name FROM employees');
DBMS_XMLGEN.setRowSetTag(v_ctx, 'employees_list');
DBMS_XMLGEN.setRowTag(v_ctx, 'employee');
v_xml := DBMS_XMLGEN.getXML(v_ctx);
DBMS_OUTPUT.PUT_LINE(v_xml);
DBMS_XMLGEN.closeContext(v_ctx);
END;
Области применения:
· Экспорт табличных данных в XML для интеграции с внешними системами;
· Создание XML-представлений для веб-сервисов;
· Формирование XML-отчётов по шаблону «запрос — XML»;
· Быстрое прототипирование XML-интерфейсов без написания сложного парсинга.
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики!
✅ Продолжаем рассказывать о встроенных пакетах Digital Q.DataBase, обеспечивающих совместимость с PL/SQL-окружением Oracle.
Сегодня разберём DBMS_CRYPTO и DBMS_REPORT.
DBMS_CRYPTO — криптографические функции
➡️ Пакет DBMS_CRYPTO предоставляет инструменты для хэширования данных.
В текущей реализации поддержана функция HASH, позволяющая вычислять контрольные суммы и хэш-значения для строк, чисел и бинарных данных.
Основные возможности:
· Вычисление хэша алгоритмами MD5, SHA-1, SHA-256;
· Поддержка входных данных типов VARCHAR2, CLOB, RAW, BLOB;
· Совместимость с синтаксисом Oracle DBMS_CRYPTO.HASH;
· Возврат результата в формате RAW.
Пример использования:
Области применения:
· Проверка целостности данных при передаче между системами;
· Создание контрольных сумм для выгрузок и архивов;
· Хэширование паролей и чувствительной информации;
· Обнаружение дубликатов через хэш-индексы.
DBMS_REPORT — формирование отчётов и преобразования
➡️ Пакет DBMS_REPORT предоставляет вспомогательные функции для работы с отчётами и преобразованиями данных. В текущей версии реализованы функции JSON_TO_TEXT и ZLIB2BASE64_CLOB.
JSON_TO_TEXT — преобразование JSON в читаемый текст
➡️ Функция JSON_TO_TEXT преобразует JSON-документ в форматированное текстовое представление, удобное для включения в отчёты и логи.
ZLIB2BASE64_CLOB — распаковка и декодирование
➡️ Функция ZLIB2BASE64_CLOB принимает строку в формате BASE64, сжатую алгоритмом ZLIB, и возвращает распакованный результат в виде CLOB. Полезна для обработки данных, передаваемых в сжатом виде через API и веб-сервисы.
Области применения DBMS_REPORT:
· Формирование удобочитаемых логов из JSON-сообщений;
· Подготовка данных для включения в текстовые отчёты;
· Распаковка сжатых ответов от внешних API;
· Обработка данных, передаваемых в BASE64 через веб-сервисы.
Сегодня разберём DBMS_CRYPTO и DBMS_REPORT.
DBMS_CRYPTO — криптографические функции
В текущей реализации поддержана функция HASH, позволяющая вычислять контрольные суммы и хэш-значения для строк, чисел и бинарных данных.
Основные возможности:
· Вычисление хэша алгоритмами MD5, SHA-1, SHA-256;
· Поддержка входных данных типов VARCHAR2, CLOB, RAW, BLOB;
· Совместимость с синтаксисом Oracle DBMS_CRYPTO.HASH;
· Возврат результата в формате RAW.
Пример использования:
-- Вычисление MD5-хэша для строки
DECLARE
v_hash RAW(16);
BEGIN
v_hash := DBMS_CRYPTO.HASH(
UTL_I18N.STRING_TO_RAW('Hello, Digital Q.DataBase', 'AL32UTF8'),
DBMS_CRYPTO.HASH_MD5
);
DBMS_OUTPUT.PUT_LINE(RAWTOHEX(v_hash));
END;
-- Вычисление SHA-256 для проверки целостности данных
SELECT DBMS_CRYPTO.HASH(
UTL_I18N.STRING_TO_RAW(data_column, 'AL32UTF8'),
DBMS_CRYPTO.HASH_SH256
) AS data_hash
FROM my_table;
Области применения:
· Проверка целостности данных при передаче между системами;
· Создание контрольных сумм для выгрузок и архивов;
· Хэширование паролей и чувствительной информации;
· Обнаружение дубликатов через хэш-индексы.
DBMS_REPORT — формирование отчётов и преобразования
JSON_TO_TEXT — преобразование JSON в читаемый текст
-- Преобразование JSON в текстовый вид
DECLARE
v_json CLOB := '{"employees":[{"id":1,"name":"Иванов"},{"id":2,"name":"Петров"}]}';
v_text CLOB;
BEGIN
v_text := DBMS_REPORT.JSON_TO_TEXT(v_json);
DBMS_OUTPUT.PUT_LINE(v_text);
END;
ZLIB2BASE64_CLOB — распаковка и декодирование
-- Декодирование и распаковка сжатых данных
DECLARE
v_compressed_base64 VARCHAR2(32767); -- сжатые и закодированные данные
v_decompressed CLOB;
BEGIN
v_decompressed := DBMS_REPORT.ZLIB2BASE64_CLOB(v_compressed_base64);
DBMS_OUTPUT.PUT_LINE(v_decompressed);
END;
Области применения DBMS_REPORT:
· Формирование удобочитаемых логов из JSON-сообщений;
· Подготовка данных для включения в текстовые отчёты;
· Распаковка сжатых ответов от внешних API;
· Обработка данных, передаваемых в BASE64 через веб-сервисы.
Please open Telegram to view this post
VIEW IN TELEGRAM
Военные тогда сказали: «Пусть пока работает так, а через полгода мы купим нормальную СУБД». Прошло почти 26 лет, но написанная Хиппом программа до сих пор работает как часы.
Ричард Хипп потом шутил в одном из интервью: «Лучший способ сделать софт вечным — назвать его "временным фиксом". Тогда его никто не тронет».
SQLite настолько мала по размеру и надёжна, что её код встроен в:
· бортовые системы самолетов Airbus и Boeing,
· марсоход NASA Perseverance,
· мультимедиа и телеметрию автомобилей Tesla и большинства китайских автомобилей.
Ричард Хипп не заработал на SQLite миллиарды, но зато получил всемирное признание. На вопрос «А Вам не надоело?» он ответил: «Мне нравится создавать инструмент, который делает людей чуточку счастливее».
Пусть и в Ваших проектах будет такой фундамент. Даже если над ним работает всего один человек. 🌱
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики!
Сегодня , 12 апреля — удивительный день, когда космос и светлая Пасха встретились в одной дате.
С днём космонавтики!
65 лет назад Юрий Гагарин сказал «Поехали!» — и человечество навсегда изменило своё представление о возможном. С тех пор 12 апреля — день, когда мы вспоминаем, что границы существуют только для того, чтобы их раздвигать.
С Пасхой!
В этом году православная Пасха также приходится на 12 апреля. Праздник обновления, надежды и победы жизни.
Две разные высоты. Одна — физическая, за пределами земной атмосферы. Другая — духовная. Но обе напоминают: всегда есть куда расти и во что верить.
С праздниками! Светлой Пасхи и удачного космического полёта по жизни.
Сегодня , 12 апреля — удивительный день, когда космос и светлая Пасха встретились в одной дате.
С днём космонавтики!
65 лет назад Юрий Гагарин сказал «Поехали!» — и человечество навсегда изменило своё представление о возможном. С тех пор 12 апреля — день, когда мы вспоминаем, что границы существуют только для того, чтобы их раздвигать.
С Пасхой!
В этом году православная Пасха также приходится на 12 апреля. Праздник обновления, надежды и победы жизни.
Две разные высоты. Одна — физическая, за пределами земной атмосферы. Другая — духовная. Но обе напоминают: всегда есть куда расти и во что верить.
С праздниками! Светлой Пасхи и удачного космического полёта по жизни.
В этом видео:
Видео пока выходит без звука.
Версия с комментариями будет опубликована отдельно.
Please open Telegram to view this post
VIEW IN TELEGRAM