Всем привет!
Поговорим ещё раз о точках сохранения.
Прошлая публикация о них вызвала неоднозначную реакцию, но нам нужна Ваша помощь.
В настоящий момент по реализации точек сохранения:
- создаются в рамках транзакции (при отключенном режиме
- с возможностью отката изменений до любой из них;
- с возможностью перекрытия одноименных точек;
- с сохранением точки, до которой выполнен откат изменений.
Начали документировать и всё шло хорошо, пока не дошли до примера.
А что с примерами?
Часто они безликие:
А хочется жизненного, чтобы читатель сначала проникся ситуацией, а потом на основе её понимания принял пример.
Подскажите хорошие примеры для
И в каких ситуациях может понадобиться
Если не придумаем, пример будет безликий и сухой 😭 Спасайте!
Поговорим ещё раз о точках сохранения.
Прошлая публикация о них вызвала неоднозначную реакцию, но нам нужна Ваша помощь.
В настоящий момент по реализации точек сохранения:
- создаются в рамках транзакции (при отключенном режиме
AUTOCOMMIT
);- с возможностью отката изменений до любой из них;
- с возможностью перекрытия одноименных точек;
- с сохранением точки, до которой выполнен откат изменений.
Начали документировать и всё шло хорошо, пока не дошли до примера.
А что с примерами?
Часто они безликие:
INSERT INTO table1 VALUES (1);
SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (2);
ROLLBACK TO SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (3);
COMMIT;
А хочется жизненного, чтобы читатель сначала проникся ситуацией, а потом на основе её понимания принял пример.
Подскажите хорошие примеры для
SAVEPOINT
в паре с ROLLBACK
TO SAVEPOINT
, которые демонстрируют действие точек сохранения и отката до одной из них на основе жизненной ситуации. И в каких ситуациях может понадобиться
RELEASE SAVEPOINT
- удалять точку сохранения? Лучший пример (с сохранением описания жизненной ситуации) мы добавим в документацию SoQoL.Если не придумаем, пример будет безликий и сухой 😭 Спасайте!
Всем привет!
По Вашим просьбам мы упрощаем доступ к свежим сборкам СУБД SoQoL для всех наших подписчиков. Теперь ссылки на все свежие сборки SoQoL будут публиковаться здесь — https://t.me/+Wa_WxMvKkwsyMjhi
🔹Подписывайтесь
🔹Скачивайте
🔹Тестируйте
🔹Внедряйте в свои приложения
Если находите ошибки или есть предложение по развитию или сотрудничеству — пишите нам!
Мы всегда рады обратной связи 🙂
Обратите внимание, альфа тестируется только с Windows 10 и Ubuntu-20.04
По Вашим просьбам мы упрощаем доступ к свежим сборкам СУБД SoQoL для всех наших подписчиков. Теперь ссылки на все свежие сборки SoQoL будут публиковаться здесь — https://t.me/+Wa_WxMvKkwsyMjhi
🔹Подписывайтесь
🔹Скачивайте
🔹Тестируйте
🔹Внедряйте в свои приложения
Если находите ошибки или есть предложение по развитию или сотрудничеству — пишите нам!
Мы всегда рады обратной связи 🙂
Обратите внимание, альфа тестируется только с Windows 10 и Ubuntu-20.04
Всем привет!
Спасибо за Ваши отклики! И мы продолжаем наш обзор реализации SoQoL.
Ранее был пост про временные таблицы в SoQoL. Теперь про таблицы постоянные.
СУБД SoQoL является реляционной и ее основной объект – таблица.
За основу в SoQoL выбрали индекс-организованные таблицы, которые построены на хранилище типа B-Tree в виде так называемого кластерного индекса. Его основная задача — сохранение табличных данных в виде, упорядоченном по значению индекса.
У таблицы может быть только один кластерный индекс (он же может быть первичным ключом), так как данные могут быть отсортированы только в одном порядке.
Помимо «неявного» кластерного индекса для таблицы могут быть пользователем построены и «явные» индексы.
При описании данных, хранимых в таблицах в SoQoL, сейчас уже можно использовать:
1. Типы данных: строковый, дата и время, логический, числовой, двоичный.
2. Кодировки данных для строковых типов. Поддерживаются кодировки
3. Ограничения каждого столбца и для совокупности столбцов:
4. Свойства столбца. В настоящий момент реализованы:
Краткий пример:
SoQoL поддерживает вычисляемые (виртуальные) столбцы, которые не хранятся на диске. Ограничения, которые можно наложить на данные виртуального столбца, те же, что и для обычного столбца.
Какие наши ближайшие планы?
1. Расширение набора хранилищ. Например, реализация HEAP-таблиц.
2. Реализация возможности модификации структуры таблиц.
3. Реализация внешних ключей.
Здесь мы не затронули тему связанных с темой таблиц объектов (представлений, генераторов последовательностей, индексов и т.д.), про это в другой раз.
О чём рассказать в следующей публикации?
Спасибо за Ваши отклики! И мы продолжаем наш обзор реализации SoQoL.
Ранее был пост про временные таблицы в SoQoL. Теперь про таблицы постоянные.
СУБД SoQoL является реляционной и ее основной объект – таблица.
За основу в SoQoL выбрали индекс-организованные таблицы, которые построены на хранилище типа B-Tree в виде так называемого кластерного индекса. Его основная задача — сохранение табличных данных в виде, упорядоченном по значению индекса.
У таблицы может быть только один кластерный индекс (он же может быть первичным ключом), так как данные могут быть отсортированы только в одном порядке.
Помимо «неявного» кластерного индекса для таблицы могут быть пользователем построены и «явные» индексы.
При описании данных, хранимых в таблицах в SoQoL, сейчас уже можно использовать:
1. Типы данных: строковый, дата и время, логический, числовой, двоичный.
2. Кодировки данных для строковых типов. Поддерживаются кодировки
UTF-8
и CP1251
и правила сравнения, применимые к ним (BINARY
, UCA_UTF8_LX_CS
, UCA_UTF8_LX_CI
, WIN1251_CS
, WIN1251_CI
). 3. Ограничения каждого столбца и для совокупности столбцов:
PRIMARY KEY
, NOT NULL
, UNIQUE
, [UNIQUE] CLUSTERED KEY
.4. Свойства столбца. В настоящий момент реализованы:
DEFAULT
, COLLATE
, GENERATED ALWAYS
.Краткий пример:
CREATE TABLE PHONE (
NUMBER bigint,
NAME varchar(200),
AGE int,
CITY varchar (150) DEFAULT '<не указан>'
);
SoQoL поддерживает вычисляемые (виртуальные) столбцы, которые не хранятся на диске. Ограничения, которые можно наложить на данные виртуального столбца, те же, что и для обычного столбца.
Какие наши ближайшие планы?
1. Расширение набора хранилищ. Например, реализация HEAP-таблиц.
2. Реализация возможности модификации структуры таблиц.
3. Реализация внешних ключей.
Здесь мы не затронули тему связанных с темой таблиц объектов (представлений, генераторов последовательностей, индексов и т.д.), про это в другой раз.
О чём рассказать в следующей публикации?
СУБД SoQoL pinned «Всем привет! По Вашим просьбам мы упрощаем доступ к свежим сборкам СУБД SoQoL для всех наших подписчиков. Теперь ссылки на все свежие сборки SoQoL будут публиковаться здесь — https://t.me/+Wa_WxMvKkwsyMjhi 🔹Подписывайтесь 🔹Скачивайте 🔹Тестируйте 🔹Внедряйте…»
Всем привет!
Недавно мы рассказывали о реализации таблиц в SoQoL. Пойдем дальше и поговорим о реализованных типах данных.
Типы данных СУБД SoQoL можно разделить на несколько групп:
– cтроковый;
– даты и времени;
– логический;
– числовой;
– двоичный.
В разных СУБД типы данных могут отличаться названиями, допустимым диапазоном значений. Но сейчас о типах в SoQoL.
Рассказываем по пунктам:
1. Строковые типы представлены типами:
-
-
-
2. Типы данных даты и времени представлены типами:
-
-
3. Логический тип данных представлен типом
4. Числовой тип данных представлен типами:
-
-
5. Двоичный тип данных представлен типами:
-
-
-
-
Как видите, для части типов представлены синонимы. Это сделано для совместимости со стандартом SQL и удобства пользователей. Данные синонимичных типов хранятся в формате базовых типов.
Например: у нас базовый тип
Какими типами данных пользуетесь Вы?
Недавно мы рассказывали о реализации таблиц в SoQoL. Пойдем дальше и поговорим о реализованных типах данных.
Типы данных СУБД SoQoL можно разделить на несколько групп:
– cтроковый;
– даты и времени;
– логический;
– числовой;
– двоичный.
В разных СУБД типы данных могут отличаться названиями, допустимым диапазоном значений. Но сейчас о типах в SoQoL.
Рассказываем по пунктам:
1. Строковые типы представлены типами:
-
CHAR
фиксированной длины (от 1 до 4000). Если хранимые величины менее фиксированной длины, то они дополняются пробелами;-
VARCHAR
(синоним VARCHAR2
) переменной длины (от 1 до 4000). Хранимые величины не дополняются пробелами;-
CLOB
для представления большого блока текстовых данных.2. Типы данных даты и времени представлены типами:
-
DATE
(синоним DATETIME
) для представления даты (год/месяц/день) и времени (час/минута/секунда) без долей секунды;-
TIMESTAMP
для представления даты (год/месяц/день) и времени (час/минута/секунда), включая доли секунды (с точностью до аттосекунд (10^-18)).3. Логический тип данных представлен типом
BOOLEAN
для представления логических значений TRUE
или FALSE
.4. Числовой тип данных представлен типами:
-
NUMBER (38,0)
, через который реализованы типы SMALLINT
, INTEGER
, INT
, BIGINT
. Внутреннее представление этого формата имеет переменную длину и позволяет хранить до 38 значащих десятичных цифр;-
NUMBER (precision, scale)
(синонимы NUMERIC
, DECIMAL
) для представления целых чисел, дробных чисел с фиксированной или плавающей запятой (в виде мантиссы с фиксированной запятой и экспоненты).5. Двоичный тип данных представлен типами:
-
BLOB
для представления таких данных, как, например, картинки;-
BINARY
постоянной длины (от 1 до 4000 байт). Если хранимые величины менее фиксированной длины, то они дополняются нулевыми байтами;-
VARBINARY
(синоним RAW
) переменной длины (от 1 до 4000 байт). Используется только необходимое количество байт, без дополнения нулевыми байтами;-
ROWID
переменной длины (от 1 до 4000 байт). Используется только необходимое количество байт, без добавления нулевыми байтами. ROWID
преимущественно используется в псевдоколонке ROWID
для хранения значений, уникально идентифицирующих каждую строку таблицы.Как видите, для части типов представлены синонимы. Это сделано для совместимости со стандартом SQL и удобства пользователей. Данные синонимичных типов хранятся в формате базовых типов.
Например: у нас базовый тип
DATE
, а синоним DATETIME
. При создании таблицы для столбца указываем DATETIME
. В итоге, данные по столбцу хранятся в базовом типе DATE
.Какими типами данных пользуетесь Вы?
А поговорить?
Спасибо вам за поддержку и вопросы, которые вы присылаете в ответ на наши посты!
Но не текстом единым живёт наш канал :)
Мы периодически записываем подкасты, собираясь с интересными людьми и общаясь на разные темы, связанные с СУБД.
И недавно вышел наш НОВЫЙ ПОДКАСТ! Заходите и СЛУШАЙТЕ https://vk.com/linter_ru?z=podcast-87199162_456239026
Мы поговорили:
- о самой СУБД;
- зачем начали разработку SoQoL;
- с чего начали её разработку и сколько уже длится проект;
- для кого интересна наша новая СУБД;
- об используемых технологиях в SoQoL;
- об архитектуре SoQoL и т.д.
Участники:
- Михаил Бакланов – директор центра СУБД
- Андрей Коротченко – архитектор СУБД SoQoL
- Денис Хохлов – зам. директора центра СУБД по развитию
Пишите свои вопросы, предложения. Создадим новую СУБД вместе!
Спасибо вам за поддержку и вопросы, которые вы присылаете в ответ на наши посты!
Но не текстом единым живёт наш канал :)
Мы периодически записываем подкасты, собираясь с интересными людьми и общаясь на разные темы, связанные с СУБД.
И недавно вышел наш НОВЫЙ ПОДКАСТ! Заходите и СЛУШАЙТЕ https://vk.com/linter_ru?z=podcast-87199162_456239026
Мы поговорили:
- о самой СУБД;
- зачем начали разработку SoQoL;
- с чего начали её разработку и сколько уже длится проект;
- для кого интересна наша новая СУБД;
- об используемых технологиях в SoQoL;
- об архитектуре SoQoL и т.д.
Участники:
- Михаил Бакланов – директор центра СУБД
- Андрей Коротченко – архитектор СУБД SoQoL
- Денис Хохлов – зам. директора центра СУБД по развитию
Пишите свои вопросы, предложения. Создадим новую СУБД вместе!
Первая интеграция SoQoL
Когда у тебя рядом команда разрабатывает новую СУБД SoQoL с очень заманчивыми возможностями, очень хочется попробовать ее на проекте, более-менее приближенном к реальности. Благо у нас есть такие не слишком большие проекты, позволяющие испробовать новые технологии.
Свой первый эксперимент с SoQoL мы провели на системе автоматизации учета инфраструктуры с кодовым названием AIM, которая выросла из учебного проекта. Что из этого получилось? Вы узнаете, прочитав нашу небольшую заметку — https://www.soqol.ru/tpost/ygjes468f1-pervaya-integratsiya-soqol
Когда у тебя рядом команда разрабатывает новую СУБД SoQoL с очень заманчивыми возможностями, очень хочется попробовать ее на проекте, более-менее приближенном к реальности. Благо у нас есть такие не слишком большие проекты, позволяющие испробовать новые технологии.
Свой первый эксперимент с SoQoL мы провели на системе автоматизации учета инфраструктуры с кодовым названием AIM, которая выросла из учебного проекта. Что из этого получилось? Вы узнаете, прочитав нашу небольшую заметку — https://www.soqol.ru/tpost/ygjes468f1-pervaya-integratsiya-soqol
Нам важно, чтобы наши подписчики понимали, кто мы.
Итак, раз Вы читаете этот пост, то скорее всего знаете, кто мы. Но если Вы недавно с нами, то вот небольшая справка:
Мы — «Реляционные экспертные системы» (сокращенно РЕЛЭКС), российская ИТ-компания, более 30 лет создающая технологические решения для бизнеса и государственных структур. И каждый день мы трудимся над развитием качественных ИТ-продуктов.
РЕЛЭКС является членом ИТ-ассоциаций АРПП «Отечественный софт» и «РУССОФТ».
Этот канал посвящён нашему детищу: СУБД нового поколения — SoQoL. Здесь мы пишем и рассказываем о процессе разработки, результатах, обмениваемся с вами мнениями по поводу реализации спорных моментов.
Более подробно о нас можно почитать здесь (https://relex.ru), о SoQoL здесь или на сайте (https://soqol.ru). Заходите!
Да что всё о нас... Вас в этом канале почти 400 подписчиков. Мы рады каждому и
Нам также ВАЖНО понимать, кто вы, наши читатели!
Пожалуйста, в опросе под постом, выберите себя 🙂
Секундное дело, а мы будем знать о Вас больше. И это значит, что сможем более качественно подбирать темы для публикаций.
P.S. Мир полон единомышленников, важно не закрываться в себе!
Итак, раз Вы читаете этот пост, то скорее всего знаете, кто мы. Но если Вы недавно с нами, то вот небольшая справка:
Мы — «Реляционные экспертные системы» (сокращенно РЕЛЭКС), российская ИТ-компания, более 30 лет создающая технологические решения для бизнеса и государственных структур. И каждый день мы трудимся над развитием качественных ИТ-продуктов.
РЕЛЭКС является членом ИТ-ассоциаций АРПП «Отечественный софт» и «РУССОФТ».
Этот канал посвящён нашему детищу: СУБД нового поколения — SoQoL. Здесь мы пишем и рассказываем о процессе разработки, результатах, обмениваемся с вами мнениями по поводу реализации спорных моментов.
Более подробно о нас можно почитать здесь (https://relex.ru), о SoQoL здесь или на сайте (https://soqol.ru). Заходите!
Да что всё о нас... Вас в этом канале почти 400 подписчиков. Мы рады каждому и
Нам также ВАЖНО понимать, кто вы, наши читатели!
Пожалуйста, в опросе под постом, выберите себя 🙂
Секундное дело, а мы будем знать о Вас больше. И это значит, что сможем более качественно подбирать темы для публикаций.
P.S. Мир полон единомышленников, важно не закрываться в себе!
Разложить по пунктам или это занудство?
Кто разрабатывал хоть раз ПО, тот знает, что одним из важных вопросов является процесс создания документации пользователя.
Хотя этот процесс и может показаться кому-то нудным, но качественно разработанная документация позволяет:
1) команде создателей говорить на языке пользователя;
2) пользователю легко овладеть новым для него программным продуктом.
При написании документации для СУБД SoQoL мы очень хотели учесть все нюансы и подробно всё описать. НО...
Во-первых, это очень сложно, т.к. продукт не статичен, он постоянно развивается и совершенствуется.
А, во-вторых, насколько подробно?
Кто-то начнёт работать с SoQoL после работы с другими СУБД. У такого пользователя есть опыт и некоторое понимание устройства СУБД. А кто-то совсем юный junior и ему информации нужно значительно больше.
Поэтому при разработке документации для для СУБД SoQoL мы искали компромисс и решили придерживаться следующих правил:
1. Документация должна быть полноценной, чтобы пользователю не приходилось искать ответы на свои вопросы «на стороне».
2. Документация не должна быть избыточной. Всё-таки, она создаётся для эффективного поиска пользователем нужной информации при работе СУБД.
3. Вся схема документации должна быть логичной и взаимосвязанной.
На текущий момент часть документации готова и скрин оглавления для бета-версии СУБД SoQoL можно посмотреть по ссылке.
Учитывая свой опыт, посмотрите на него и напишите:
– удобна ли такая структура документации СУБД?
– каких разделов не хватает?
Если чего-то не хватает – пишите с пояснениями в комментариях.
P.S. Спасибо, что помогаете делать SoQoL лучше!
P.P.S. Саму документацию в релизе беты вы скоро увидите. Обещаем 🙂
Кто разрабатывал хоть раз ПО, тот знает, что одним из важных вопросов является процесс создания документации пользователя.
Хотя этот процесс и может показаться кому-то нудным, но качественно разработанная документация позволяет:
1) команде создателей говорить на языке пользователя;
2) пользователю легко овладеть новым для него программным продуктом.
При написании документации для СУБД SoQoL мы очень хотели учесть все нюансы и подробно всё описать. НО...
Во-первых, это очень сложно, т.к. продукт не статичен, он постоянно развивается и совершенствуется.
А, во-вторых, насколько подробно?
Кто-то начнёт работать с SoQoL после работы с другими СУБД. У такого пользователя есть опыт и некоторое понимание устройства СУБД. А кто-то совсем юный junior и ему информации нужно значительно больше.
Поэтому при разработке документации для для СУБД SoQoL мы искали компромисс и решили придерживаться следующих правил:
1. Документация должна быть полноценной, чтобы пользователю не приходилось искать ответы на свои вопросы «на стороне».
2. Документация не должна быть избыточной. Всё-таки, она создаётся для эффективного поиска пользователем нужной информации при работе СУБД.
3. Вся схема документации должна быть логичной и взаимосвязанной.
На текущий момент часть документации готова и скрин оглавления для бета-версии СУБД SoQoL можно посмотреть по ссылке.
Учитывая свой опыт, посмотрите на него и напишите:
– удобна ли такая структура документации СУБД?
– каких разделов не хватает?
Если чего-то не хватает – пишите с пояснениями в комментариях.
P.S. Спасибо, что помогаете делать SoQoL лучше!
P.P.S. Саму документацию в релизе беты вы скоро увидите. Обещаем 🙂
Яндекс Диск
Содержание документации для 1го релиза.pdf
Посмотреть и скачать с Яндекс Диска
Найти и получить
Поговорим о реализации
Наиболее используемым, но и одним из самых сложных операторов является
Самый простой пример использования, «без изюминки» — запросить все данные из таблицы. Например:
– он может быть не один;
– допустимо в качестве источника указать select-запрос;
– допустимо указание соединение источников (
Например:
Например:
Например:
Хотите выбрать только конкретные строки — укажите после слова
Источники выбрали, условие прописали, что ещё можно?
Реализовано применение конструкции
Например:
–
–
Также для оператора
– конструкция
– конструкция
Ну и на десерт…
А что делать, если в момент вашего обращения к таблице кто-то изменяет в ней данные? Когда и какие результаты вы получите?
Это управляется конструкцией
–
–
–
Вы используете весь функционал
Поговорим о реализации
select
в SoQoL.Наиболее используемым, но и одним из самых сложных операторов является
select
. Он позволяет производить выборку данных и преобразовывать к нужному виду полученные результаты.Самый простой пример использования, «без изюминки» — запросить все данные из таблицы. Например:
select * from <источники_данных>;Кстати, про источник данных:
– он может быть не один;
– допустимо в качестве источника указать select-запрос;
– допустимо указание соединение источников (
inner join, natural join, outer join, cross join
).Например:
select * from TABLE1 natural inner join TABLE2;Можно объединять запросы через
union
. который даст результат без дублирующих значений, а union all
— позволит получить все значения, включая дублирующиеся.Например:
select "Возраст", "Подразделение" from (select "Возраст", "Подразделение" from VORONEZH union select "Возраст", "Подразделение" from MOSCOW) where "Возраст" > 65;А если нам нужен результат без дубликатов? В этом случае в запрос добавляем ключевое слово
distinct
.Например:
select distinct CITY from PHONE;Если не нужны значения всех столбцов, тогда указываем вместо
*
конкретные столбцы и для любого из них можно указать новое имя столбца в результирующей таблице.Хотите выбрать только конкретные строки — укажите после слова
where
условие выборки таких строк.Источники выбрали, условие прописали, что ещё можно?
Реализовано применение конструкции
group by
, позволяющей в результирующем наборе группировать строки, имеющие одинаковое значение по одному или нескольким столбцам. А если в комплекте указать having
, то это позволит получить только нужные группы строк.Например:
select CITY, count(*) as COUNT from PHONE group by CITY having count(*) >= 5;Для упорядочения записей в результирующем наборе достаточно указать конструкцию order by:
–
asc
— полученные значения будут упорядочены по возрастанию;–
desc
— полученные значения будут упорядочены по убыванию.Также для оператора
select
в SoQoL реализована возможность ограничения числа строк выборки:– конструкция
fetch first
позволяет получить заданное число первых строк из результирующего набора;– конструкция
limit
с дополнением offset
позволяет получить заданное число первых строк из результирующего набора с указанием числа строк, которые необходимо пропустить перед возвращением строк результата.Ну и на десерт…
А что делать, если в момент вашего обращения к таблице кто-то изменяет в ней данные? Когда и какие результаты вы получите?
Это управляется конструкцией
for update
в запросе select
с указанием принципа поведения относительно уже заблокированных параллельной транзакцией строк:–
for update nowait
— не ждать разблокировки и собрать то, что получится (до встречи с первой заблокированной строкой;–
for update skip locked
— не ждать разблокировки и собрать результат исходя из всех «свободных» строк;–
for update
— «ждать до последнего», до разблокировки и получить полную выборку, с учётом всех обновлённых строк.Вы используете весь функционал
select
или чаще формируете простые запросы?Поговорим о добавлении данных в таблицу командой
В SoQoL добавление данных реализовано 2 способами:
1. Добавление заданных значений.
Например:
2. Добавление результатов SELECT-запроса.
В обоих вариантах указание списка столбцов не является обязательным. В этом случае набор вставляемых значений должен соответствовать набору столбцов таблицы (по числу полей, их порядку, по типам данных полей, определенных в команде
Например:
Создадим таблицу с данными абонентов по всем городам:
А теперь создадим таблицу с данными абонентов из Воронежа и с использованием SELECT-запроса добавим в неё данные из общей таблицы:
А если мы указываем перечень вставляемых столбцов, но указываем не все столбцы, то какой будет результат?
Если при создании таблицы для какого-либо из столбцов было указано значение по умолчанию и при вставке данных в таблицу командой
Если при создании таблицы для какого-либо из столбцов не было указано ограничение
Из привычно-обычного всё. А есть что-то ещё?
Конечно! В обоих вариантах команды
Это удобно при вычисляемых в процессе вставки данных или когда данные заполняются значениями из генератора последовательности (например, табельный номер сотрудника).
Например:
А ещё ведётся доработка возможности внесения данных «пачкой». Но про это чуть позже.
Что скажете? Есть предложения по развитию
INSERT
.В SoQoL добавление данных реализовано 2 способами:
1. Добавление заданных значений.
Например:
insert into PHONE (NUMBER, NAME, AGE) values (89876543288, 'Беляев', 38);
2. Добавление результатов SELECT-запроса.
В обоих вариантах указание списка столбцов не является обязательным. В этом случае набор вставляемых значений должен соответствовать набору столбцов таблицы (по числу полей, их порядку, по типам данных полей, определенных в команде
CREATE TABLE
).Например:
Создадим таблицу с данными абонентов по всем городам:
create table PHONE (NUMBER bigint primary key, NAME varchar (75), AGE int, CITY varchar (45));Добавим в неё данные абонента из Воронежа:
insert into PHONE values (89876543277, 'Егоров', 38, 'Воронеж');
А теперь создадим таблицу с данными абонентов из Воронежа и с использованием SELECT-запроса добавим в неё данные из общей таблицы:
create table PHONE_VORONEZH (NUMBER bigint primary key, NAME varchar (75), AGE int);
insert into PHONE_VORONEZH select NUMBER, NAME, AGE from PHONE where CITY = 'Воронеж';
А если мы указываем перечень вставляемых столбцов, но указываем не все столбцы, то какой будет результат?
Если при создании таблицы для какого-либо из столбцов было указано значение по умолчанию и при вставке данных в таблицу командой
INSERT
этот столбец явно не упоминается, то будет добавлено именно это значение.Если при создании таблицы для какого-либо из столбцов не было указано ограничение
NOT NULL
и при вставке данных в таблицу командой INSERT
этот столбец явно не упоминается, тогда будет добавлено NULL-значение.Из привычно-обычного всё. А есть что-то ещё?
Конечно! В обоих вариантах команды
INSERT
допустимо использование конструкции RETURNING
, которая позволяет оперативно получить добавленные данные. Это удобно при вычисляемых в процессе вставки данных или когда данные заполняются значениями из генератора последовательности (например, табельный номер сотрудника).
Например:
create sequence SEQ1 start with 100 increment by 1 maxvalue 999 nocycle;После успешно выполненной команды будет возвращено значение поля
create table WORKERS (TN bigint DEFAULT SEQ1.nextval primary key, NAME varchar (70), LASTNAME varchar (100));
insert into WORKERS (NAME, LASTNAME) values ('Игорь', 'Иванов') returning TN;
TN
из вставленной строки:TNИ не нужно никаких дополнительных запросов :)
-------------
100
А ещё ведётся доработка возможности внесения данных «пачкой». Но про это чуть позже.
Что скажете? Есть предложения по развитию
INSERT
?Создали, наполнили... теперь можно менять
Мы с вами уже рассмотрели как можно в SoQoL:
- создать таблицу;
- добавить в неё данные;
- сделать выборку.
Спасибо за ваши вопросы и поддержку. Это здорово помогает сориентироваться среди множества возможных доработок и выбрать те, которые действительно нужны.
Идём дальше и посмотрим, как можно изменить внесённые в таблицу данные.
Про
Команда
Для тех, кто очень хочет применить
С помощью
Рассмотрим использование
Создадим таблицу:
Тогда радость от новой зарплаты можно подарить другу (+40%, у него скоро свадьба!) с табельным номером 100:
Ремарка: команда
В MySQL синтаксис команды
Мы с вами уже рассмотрели как можно в SoQoL:
- создать таблицу;
- добавить в неё данные;
- сделать выборку.
Спасибо за ваши вопросы и поддержку. Это здорово помогает сориентироваться среди множества возможных доработок и выбрать те, которые действительно нужны.
Идём дальше и посмотрим, как можно изменить внесённые в таблицу данные.
Про
UPDATE
в SoQoLКоманда
UPDATE
предназначена для изменения данных в обычных и временных таблицах. Применять UPDATE
к виртуальным столбцам нельзя.Для тех, кто очень хочет применить
UPDATE
к пустой таблице, сразу скажем – команда отработает успешно, но ничего не изменит :)С помощью
UPDATE
могут быть изменены значения в заданных строках в одном или нескольких столбцах.Рассмотрим использование
UPDATE
на примере одного столбца.Создадим таблицу:
create table WORKERS (TN int primary key, NAME varchar (150), SALARY number (10,2));И добавим в неё несколько строк:
insert into WORKERS values (100, 'Егоров Е.В.', 78000);Давайте проиндексируем всем зарплату на 25%!:
insert into WORKERS values (101, 'Попова А.П.', 65000);
insert into WORKERS values (102, 'Сидоров С.А.', 80000);
update WORKERS set SALARY = SALARY * 1.25;А при индивидуальном подходе к такому приятному делу используем конструкцию
WHERE
с условием. Тогда радость от новой зарплаты можно подарить другу (+40%, у него скоро свадьба!) с табельным номером 100:
update WORKERS set SALARY = SALARY * 1.40 where TN = 100;Если же нам нужно порадовать новым окладом и невесту, то воспользуемся вариантом команды с изменением значений в нескольких столбцах (заодно и сменим фамилию):
update WORKERS set NAME = 'Егорова А.П.', SALARY = SALARY * 1.40 where TN = 101;В команде
UPDATE
, как и в INSERT
, допустимо использование конструкции RETURNING. Это позволяет оперативно получить обновлённые данные.Ремарка: команда
UPDATE
изменяет данные в одной заданной таблице.В MySQL синтаксис команды
UPDATE
допускает указание нескольких таблиц. Как думаете, нам в SoQoL такое нужно?Продолжим знакомство с реализацией SoQoL...
Работая с таблицей, мы добавляем в неё данные, изменяем их, анализируем… Но однажды хранимые данные могут потерять свою актуальность и, дабы не хранить «мусор», нужно их удалить.
Для этого в SoQoL реализована команда
Для удаления отдельных строк можем задать условие и тогда будут удалены только те строки, которые ему соответствуют.
Например:
Например:
Если же решил одним махом стереть всё, без всяких условностей, то используй
Например:
Скажешь «Пфф, есть же
А мы так скажем,
Да, ещё одна особенность – при выполнении команды
Ну и конечно же
Выполнять
Реализация «как у многих». Велосипед здесь не придумывали, да и не зачем :)
P.S. И как всегда: есть вопросы/предложения – пишите :)
Работая с таблицей, мы добавляем в неё данные, изменяем их, анализируем… Но однажды хранимые данные могут потерять свою актуальность и, дабы не хранить «мусор», нужно их удалить.
Для этого в SoQoL реализована команда
DELETE
, с помощью которой мы можем удалить все строки таблицы или лишь некоторые.Для удаления отдельных строк можем задать условие и тогда будут удалены только те строки, которые ему соответствуют.
Например:
delete from PHONE where NUMBER = 89876543210;Если никаких условий не указывать, то будут удалены все строки таблицы.
Например:
delete from PHONE;Конструкцию
RETURNING
, упомянутую ранее в INSERT
и UPDATE
, можно использовать и в DELETE
. Здесь она позволит получить данные из удалённых строк.Если же решил одним махом стереть всё, без всяких условностей, то используй
TRUNCATE TABLE
.Например:
truncate table PHONE;После выполнения команды таблица будет вновь чиста, как в момент создания.
Скажешь «Пфф, есть же
DELETE
, зачем ещё какой-то TRUNCATE
»?А мы так скажем,
TRUNCATE
– для решительных и уверенных в своих действиях, потому что после выполнения команды TRUNCATE TABLE
откат командой в прежнее состояние невозможен.Да, ещё одна особенность – при выполнении команды
TRUNCATE
блокируется вся таблица, а при DELETE
– каждая удаляемая строка.Ну и конечно же
TRUNCATE TABLE
выполняется значительно быстрее DELETE
.Выполнять
DELETE
и TRUNCATE
допустимо как по отношению к обычным таблицам, так и временным.Реализация «как у многих». Велосипед здесь не придумывали, да и не зачем :)
P.S. И как всегда: есть вопросы/предложения – пишите :)
Минуточку внимания!
В нашем канале стало немного тихо, но это объяснимо.
Вся команда сконцентрировалась на релизе beta-версии.
Активное тестирование, устранения багов, правки документации, составление отчетных документов… Этот процесс требует много ресурсов. Поэтому просим понять и простить.
Параллельно готовим новые публикации.
Но если у вас есть вопросы, пишите прямо сейчас! Поговорим вне очереди 🙂
В нашем канале стало немного тихо, но это объяснимо.
Вся команда сконцентрировалась на релизе beta-версии.
Активное тестирование, устранения багов, правки документации, составление отчетных документов… Этот процесс требует много ресурсов. Поэтому просим понять и простить.
Параллельно готовим новые публикации.
Но если у вас есть вопросы, пишите прямо сейчас! Поговорим вне очереди 🙂
Virgin Galactic запустила корабль Unity впервые с 2021 года
А что мы?
Готовы анонсировать наше, хоть и небольшое, но свершение.
Мы выпустили бета-версию СУБД SoQoL и двигаемся дальше!
Что нового случилось с момента выхода альфы?
– появилась полноценная пользовательская документация;
– реализованы временные таблицы;
– реализованы очередные команды и функции;
– добавлена поддержка типов float, double precision и real;
– расширены возможности отдельных конструкций;
– расширена информация в системных представлениях для улучшения анализа происходящих процессов…
… это лишь малая толика того, что было доработано. О многом мы пишем здесь, советуемся с вами.
Microsoft признала проблемы с копированием и сохранением файлов в Windows 10 и 11 версиях... Если такие гиганты открыто признаются в ошибках, то и нам не зазорно.
Да, в бета-версии SoQoL исправлены ошибки, найденные в альфе. Но уверены, что их еще много, ведь программный продукт — это не статика, а живой организм, при развитии которого может пойти что-то не так.
Довольно слов. Для тех, кто в нетерпении, ссылка здесь.
Пожалуйста, скачивайте, тестируйте и пишите нам ваши мнения, критику, пожелания 😀
А что мы?
Готовы анонсировать наше, хоть и небольшое, но свершение.
Мы выпустили бета-версию СУБД SoQoL и двигаемся дальше!
Что нового случилось с момента выхода альфы?
– появилась полноценная пользовательская документация;
– реализованы временные таблицы;
– реализованы очередные команды и функции;
– добавлена поддержка типов float, double precision и real;
– расширены возможности отдельных конструкций;
– расширена информация в системных представлениях для улучшения анализа происходящих процессов…
… это лишь малая толика того, что было доработано. О многом мы пишем здесь, советуемся с вами.
Microsoft признала проблемы с копированием и сохранением файлов в Windows 10 и 11 версиях... Если такие гиганты открыто признаются в ошибках, то и нам не зазорно.
Да, в бета-версии SoQoL исправлены ошибки, найденные в альфе. Но уверены, что их еще много, ведь программный продукт — это не статика, а живой организм, при развитии которого может пойти что-то не так.
Довольно слов. Для тех, кто в нетерпении, ссылка здесь.
Пожалуйста, скачивайте, тестируйте и пишите нам ваши мнения, критику, пожелания 😀
Добрый день, наши дорогие читатели!
После того, что произошло, просто необходимо назвать вас Друзья, Соратники! 😀
Как только мы сообщили о выпуске бета-версии SoQoL, многие начали активно знакомиться с результатами нашей работы и мы получили от вас такой мощный поток предложений, что сами не ожидали.
Хочется выразить огромную благодарность всем, кто откликнулся на наше сообщение. Больше всего разрывался наш бот техподдержки – там творилось и творится что-то невообразимое! Мы рады не только всем вашим замечаниям и предложениям, но и вашей конструктивной критике. Всё это мы аккуратно систематизируем и планируем к работе.
Спасибо вам огромное от нашей команды и ... работаем дальше! Нужно еще много успеть!
После того, что произошло, просто необходимо назвать вас Друзья, Соратники! 😀
Как только мы сообщили о выпуске бета-версии SoQoL, многие начали активно знакомиться с результатами нашей работы и мы получили от вас такой мощный поток предложений, что сами не ожидали.
Хочется выразить огромную благодарность всем, кто откликнулся на наше сообщение. Больше всего разрывался наш бот техподдержки – там творилось и творится что-то невообразимое! Мы рады не только всем вашим замечаниям и предложениям, но и вашей конструктивной критике. Всё это мы аккуратно систематизируем и планируем к работе.
Спасибо вам огромное от нашей команды и ... работаем дальше! Нужно еще много успеть!
Первые шаги сделаны – выпущены две версии СУБД SoQoL: альфа и бета. За ними стоит огромная работа. И процесс идет вперед: доработки системы, устранение ошибок ведутся непрерывно.
Ежедневно бета-версия продукта тестируется не только нашей командой, но и вами, нашими соратниками, а также нашими партнёрами. К нам приходит множество пожеланий и обоснованной и критики.
Расстраиваемся ли мы? Отнюдь! Ведь кто лучше может знать, какой должна быть современная СУБД? Конечно же тот, кто будет с ней работать.
Ваш опыт, знания – это востребованный вклад не только в становление и развитие нашей СУБД, но и, не побоимся этих слов, в развитие отечественной ИТ-сферы. А мы в свою очередь просто обязаны побуждать своими разработками развитие всей ИТ-индустрии :)
Что нам для этого нужно сейчас?
Вспомним правило «шести рукопожатий» и расширим вместе круг пользователей SoQoL. Более масштабное тестирование в разных условиях и владение обширной обратной связью позволят совершенствовать продукт быстрее.
В чем состоит наша просьба:
Если у вас есть знакомые, которым важно знать о развитии СУБД-строения – подписывайте их на наш канал https://t.me/soqol_dbms.
Если вы знаете лиц, влияющих на принятие решений в тех компаниях, где современная СУБД поможет устранить проблемы работы с данными – пожалуйста, сообщите нам их контакты. Мы будет признательны. Выйдем с ними на связь и начнем работу.
Нам важны ВСЕ контакты.
ПИШИТЕ в личку: @mikhail_baklanov (директор центра СУБД) или @den_relex (заместитель директора центра СУБД по развитию).
Вместе мы способны на великие достижения!
Ежедневно бета-версия продукта тестируется не только нашей командой, но и вами, нашими соратниками, а также нашими партнёрами. К нам приходит множество пожеланий и обоснованной и критики.
Расстраиваемся ли мы? Отнюдь! Ведь кто лучше может знать, какой должна быть современная СУБД? Конечно же тот, кто будет с ней работать.
Ваш опыт, знания – это востребованный вклад не только в становление и развитие нашей СУБД, но и, не побоимся этих слов, в развитие отечественной ИТ-сферы. А мы в свою очередь просто обязаны побуждать своими разработками развитие всей ИТ-индустрии :)
Что нам для этого нужно сейчас?
Вспомним правило «шести рукопожатий» и расширим вместе круг пользователей SoQoL. Более масштабное тестирование в разных условиях и владение обширной обратной связью позволят совершенствовать продукт быстрее.
В чем состоит наша просьба:
Если у вас есть знакомые, которым важно знать о развитии СУБД-строения – подписывайте их на наш канал https://t.me/soqol_dbms.
Если вы знаете лиц, влияющих на принятие решений в тех компаниях, где современная СУБД поможет устранить проблемы работы с данными – пожалуйста, сообщите нам их контакты. Мы будет признательны. Выйдем с ними на связь и начнем работу.
Нам важны ВСЕ контакты.
ПИШИТЕ в личку: @mikhail_baklanov (директор центра СУБД) или @den_relex (заместитель директора центра СУБД по развитию).
Вместе мы способны на великие достижения!
Всем привет! Недавно в «Открытых системах» вышла статья «Реляционная СУБД для современного оборудования», в которой поделились деталями архитектурных особенностей СУБД SoQoL. Читайте по ссылке https://www.osp.ru/os/2023/02/13057249
Друзья!
На прошлой неделе СУБД SoQoL встретила свой день рождения 🎉 От идеи до бета-версии прошло 6 лет. И сегодня мы хотим обратиться лично к каждому нашему читателю, не как специалист к специалисту, а как человек к человеку.
С первого дня у нас была цель: создать свою, независимую, современную СУБД, помогающую работе и развитию отечественных компаний и всей отрасли ИТ.
Прямо скажем, амбициозно. Не все верили в эту затею. «Да зачем это нужно? Вон есть проверенные, те же Oracle, Postgres и другие».
И даже были те, кто авторитетно утверждал: «Ничего путного не получится. Не изобретайте велосипед и не пытайтесь переплюнуть известных титанов». Но ошибаются даже опытные…
Сегодня над проектом работает большая команда! Это специалисты и с 30-летним опытом и молодые сотрудники. Разность поколений и компетенций позволяет им обмениваться мнениями, смотреть на одни задачи под разным углом и вместе развивать современный продукт.
Восхвалять себя и свой труд можно бесконечно. Писать статей и постов сколько угодно. Только если бы наш труд был пылью, вряд ли кто-то нас читал и интересовался новой СУБД.
Мы здесь потому, что сегодняшняя реальность показала важность современных, качественных, отечественных ИТ-продуктов.
И мы продолжаем кропотливо работать благодаря всем тем, кто нас поддерживает. Благодаря каждому из вас мы ежедневно совершенствуем свою СУБД!
Искреннее спасибо вам за участие в разработке СУБД SoQoL!
P.S. Кстати, у нашей компании тоже скоро праздник – 2 июля День рождения РЕЛЭКС! Компании исполняется 33 года!
На прошлой неделе СУБД SoQoL встретила свой день рождения 🎉 От идеи до бета-версии прошло 6 лет. И сегодня мы хотим обратиться лично к каждому нашему читателю, не как специалист к специалисту, а как человек к человеку.
С первого дня у нас была цель: создать свою, независимую, современную СУБД, помогающую работе и развитию отечественных компаний и всей отрасли ИТ.
Прямо скажем, амбициозно. Не все верили в эту затею. «Да зачем это нужно? Вон есть проверенные, те же Oracle, Postgres и другие».
И даже были те, кто авторитетно утверждал: «Ничего путного не получится. Не изобретайте велосипед и не пытайтесь переплюнуть известных титанов». Но ошибаются даже опытные…
Сегодня над проектом работает большая команда! Это специалисты и с 30-летним опытом и молодые сотрудники. Разность поколений и компетенций позволяет им обмениваться мнениями, смотреть на одни задачи под разным углом и вместе развивать современный продукт.
Восхвалять себя и свой труд можно бесконечно. Писать статей и постов сколько угодно. Только если бы наш труд был пылью, вряд ли кто-то нас читал и интересовался новой СУБД.
Мы здесь потому, что сегодняшняя реальность показала важность современных, качественных, отечественных ИТ-продуктов.
И мы продолжаем кропотливо работать благодаря всем тем, кто нас поддерживает. Благодаря каждому из вас мы ежедневно совершенствуем свою СУБД!
Искреннее спасибо вам за участие в разработке СУБД SoQoL!
P.S. Кстати, у нашей компании тоже скоро праздник – 2 июля День рождения РЕЛЭКС! Компании исполняется 33 года!