🖥 Как базы данных выполняют SQL-запросы?
Процесс выполнения
1. Оператор SQL запускается в клиентской программе и передается по сети на сервер базы данных.
2. Когда сервер базы данных получает SQL-оператор, реляционный движок начинает его обработку. Сначала синтаксический анализатор проверяет правильность оператора. Затем он преобразует оператор в дерево запросов, которое представляет собой внутреннюю структуру данных.
3. Оптимизатор запросов просматривает дерево запросов и определяет наиболее эффективный способ выполнения SQL-оператора, создавая план выполнения.
4. План выполнения передается исполнителю запроса, который использует его для координации получения или изменения данных в соответствии с запросом SQL. Для доступа к данным исполнитель взаимодействует с движком хранилища.
5. Движок хранилища использует методы доступа - протоколы чтения и записи данных, наиболее эффективные для выполнения различных операций.
6. При чтении данных менеджер буферов проверяет, кэшированы ли нужные данные в памяти, и при необходимости извлекает их с диска. Это ускоряет последующий доступ.
7. При записи данных со вставкой или обновлением менеджер транзакций следит за тем, чтобы изменения происходили атомарно и сохраняли целостность базы данных.
8. В то же время менеджер блокировок накладывает блокировки, чтобы несколько транзакций могли выполняться одновременно, не конфликтуя между собой. Таким образом, обеспечивается изоляция и согласованность.
Работая вместе, эти компоненты обеспечивают надежную и эффективную обработку SQL-запросов в системе управления базами данных.
@golangprofi
Процесс выполнения
SQL-запросов
в базе данных включает в себя несколько компонентов, взаимодействующих между собой. Хотя конкретная архитектура различных систем баз данных может отличаться, ниже описана общая последовательность действий.1. Оператор SQL запускается в клиентской программе и передается по сети на сервер базы данных.
2. Когда сервер базы данных получает SQL-оператор, реляционный движок начинает его обработку. Сначала синтаксический анализатор проверяет правильность оператора. Затем он преобразует оператор в дерево запросов, которое представляет собой внутреннюю структуру данных.
3. Оптимизатор запросов просматривает дерево запросов и определяет наиболее эффективный способ выполнения SQL-оператора, создавая план выполнения.
4. План выполнения передается исполнителю запроса, который использует его для координации получения или изменения данных в соответствии с запросом SQL. Для доступа к данным исполнитель взаимодействует с движком хранилища.
5. Движок хранилища использует методы доступа - протоколы чтения и записи данных, наиболее эффективные для выполнения различных операций.
6. При чтении данных менеджер буферов проверяет, кэшированы ли нужные данные в памяти, и при необходимости извлекает их с диска. Это ускоряет последующий доступ.
7. При записи данных со вставкой или обновлением менеджер транзакций следит за тем, чтобы изменения происходили атомарно и сохраняли целостность базы данных.
8. В то же время менеджер блокировок накладывает блокировки, чтобы несколько транзакций могли выполняться одновременно, не конфликтуя между собой. Таким образом, обеспечивается изоляция и согласованность.
Работая вместе, эти компоненты обеспечивают надежную и эффективную обработку SQL-запросов в системе управления базами данных.
@golangprofi
- принципы работы блокчейн-систем;
- различия между смарт-контрактами и классическим backend;
- примеры кода и сравнение разработки на Rust для backend и блокчейн.
Спикер Кирилл Федченко — опытный разработчик на нескольких языках.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
⭐️ Две структуры с одинаковыми полями могут иметь разный размер.
Это явление известно как "padding", понятие, заимствованное из языка C++, но применимое и в Go.
Рассмотрим приведенный выше пример.
Структуры
Она увеличивается до
Это явление известно как "padding", понятие, заимствованное из языка C++, но применимое и в Go.
Рассмотрим приведенный выше пример.
Структуры
A
и B
имеют совершенно одинаковые поля, но если просто переставить порядок полей, то структура A станет в два раза больше. Она увеличивается до
32 байт
, в то время как структура B остается меньше - 16 байт.This media is not supported in your browser
VIEW IN TELEGRAM
👣 Roboden-game
Создать RTS, которая бы хорошо работала в браузере с помощью #golang, сложная задача, но возможная.
Игра написана с использованием движка Ebitengine и даже доступна в Steam.
•Github
•Проект
#ebitengine #gamedev #golang
Создать RTS, которая бы хорошо работала в браузере с помощью #golang, сложная задача, но возможная.
Игра написана с использованием движка Ebitengine и даже доступна в Steam.
•Github
•Проект
#ebitengine #gamedev #golang
Что выведет код?
package main
var m = make(map[any]any)
func foo[T any](x T) {
type K struct{}
m[K{}] = x
}
func main() {
foo(123)
foo(true)
println(len(m))
}
Ответgo.dev
Go Playground - The Go Programming Language
Задача: Идеальное число
Условие: идеальное число - это положительное целое число, которое равно сумме делителей этого же числа, за исключением самого числа.
Необходимо проверить входное число на идеальность.
Пример:
Ввод: num = 28
Вывод: true
Объяснение: 28 = 1 + 2 + 4 + 7 + 14
Ввод: num = 7
Вывод: false
Решение
Пишите свое решение в комментариях👇
Условие: идеальное число - это положительное целое число, которое равно сумме делителей этого же числа, за исключением самого числа.
Необходимо проверить входное число на идеальность.
Пример:
Ввод: num = 28
Вывод: true
Объяснение: 28 = 1 + 2 + 4 + 7 + 14
Ввод: num = 7
Вывод: false
Решение
Пишите свое решение в комментариях👇
📣Как сделать верификацию пользователя в системе с помощью телеграмм-бота?
Узнайте на открытом вебинаре 18 сентября в 20:00 мск, где мы разберем:
- как реализовать потоко-независимый тип map;
- как создать и настроить телеграмм-бота для постоянного ожидания пользователей;
- как использовать web-socket и каналы для верификации пользователя.
Встречаемся в преддверии старта курса «Go (Golang) Developer Basic». Все участники вебинара получат специальную цену на обучение!
➡️Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://otus.pw/bTU0/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Узнайте на открытом вебинаре 18 сентября в 20:00 мск, где мы разберем:
- как реализовать потоко-независимый тип map;
- как создать и настроить телеграмм-бота для постоянного ожидания пользователей;
- как использовать web-socket и каналы для верификации пользователя.
Встречаемся в преддверии старта курса «Go (Golang) Developer Basic». Все участники вебинара получат специальную цену на обучение!
➡️Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://otus.pw/bTU0/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Что выведет код ?
package main
import (
"fmt"
)
func printChannel(ch chan int) {
for {
select {
case num := <-ch:
fmt.Printf("%d ", num)
}
}
}
func main() {
ch := make(chan int)
go printChannel(ch)
for i := 0; i < 5; i++ {
ch <- i
}
}
ОтветЗадача: Ежедневная температура
Условие: дается массив, в котором содержатся на температуры за определенный день. Необходимо вернуть массив, такой что будет содержать на i-ой позиции количество дней, которое необходимо выждать, чтобы наступил день теплее. Если такой ситуации не случается, то на i-ой позиции установить 0.
Пример:
Ввод: temperatures = [73,74,75,71,69,72,76,73]
Вывод: [1,1,4,2,1,1,0,0]
Ввод: temperatures = [30,40,50,60]
Вывод: [1,1,1,0]
Решение
Пишите свое решение в комментариях👇
Условие: дается массив, в котором содержатся на температуры за определенный день. Необходимо вернуть массив, такой что будет содержать на i-ой позиции количество дней, которое необходимо выждать, чтобы наступил день теплее. Если такой ситуации не случается, то на i-ой позиции установить 0.
Пример:
Ввод: temperatures = [73,74,75,71,69,72,76,73]
Вывод: [1,1,4,2,1,1,0,0]
Ввод: temperatures = [30,40,50,60]
Вывод: [1,1,1,0]
Решение
Пишите свое решение в комментариях👇
This media is not supported in your browser
VIEW IN TELEGRAM
Enola Holmes
Это усовершенствованная версия утилиты Sherlock и современный CLI-инструмент, написанный на Go, который позволяет находить учетные записи в социальных сетях по имени пользователя.
go install github.com/theyahya/enola/cmd/enola@latest
▪️ Github
👉 Golang Юниор | #golang
Это усовершенствованная версия утилиты Sherlock и современный CLI-инструмент, написанный на Go, который позволяет находить учетные записи в социальных сетях по имени пользователя.
go install github.com/theyahya/enola/cmd/enola@latest
▪️ Github
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотите узнать, как использовать Patroni для управления высокодоступными кластерами PostgreSQL?
Ждем вас на открытом вебинаре 24 октября в 20:00 мск, где мы разберем:
- что такое Patroni и как он помогает обеспечить высокую доступность для PostgreSQL;
- основные компоненты и архитектуру Patroni;
- настройку и конфигурацию Patroni для работы с PostgreSQL;
- примеры использования Patroni для управления кластером PostgreSQL;
- практические советы по оптимизации и мониторингу работы кластера.
👨💻🛠👨🏻💻 Урок для DevOps-инженеров, системных администраторов, backend-разработчиков и тимлидов, стремящихся обеспечить высокую доступность PostgreSQL.
Спикер Андрей Поляков — старший разработчик в Unlimint.
Встречаемся в преддверии старта курса «Highload Architect». Все участники вебинара получат специальную цену на обучение! Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие
Ждем вас на открытом вебинаре 24 октября в 20:00 мск, где мы разберем:
- что такое Patroni и как он помогает обеспечить высокую доступность для PostgreSQL;
- основные компоненты и архитектуру Patroni;
- настройку и конфигурацию Patroni для работы с PostgreSQL;
- примеры использования Patroni для управления кластером PostgreSQL;
- практические советы по оптимизации и мониторингу работы кластера.
👨💻🛠👨🏻💻 Урок для DevOps-инженеров, системных администраторов, backend-разработчиков и тимлидов, стремящихся обеспечить высокую доступность PostgreSQL.
Спикер Андрей Поляков — старший разработчик в Unlimint.
Встречаемся в преддверии старта курса «Highload Architect». Все участники вебинара получат специальную цену на обучение! Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⚡️ Выпущен Go-HTML 1.0
Go-HTML предоставляет платформу для программирования интерактивных компонентов пользовательского интерфейса с использованием Go (вместо JavaScript) для веб-приложений.
##golang #htmx #javascript #программирование #релиз #webdev
Go-HTML может использовать компоненты Templ.
- https://go.dev/
- https://htmx.org/
- https://templ.guide/
▪️ Github
👉 Golang Юниор | #golang
Go-HTML предоставляет платформу для программирования интерактивных компонентов пользовательского интерфейса с использованием Go (вместо JavaScript) для веб-приложений.
##golang #htmx #javascript #программирование #релиз #webdev
Go-HTML может использовать компоненты Templ.
- https://go.dev/
- https://htmx.org/
- https://templ.guide/
▪️ Github
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие брокеры использовать, чтобы обеспечить асинхронную связь между микросервисами?
Узнайте на открытом практическом уроке «Брокеры сообщений: RabbitMQ и Kafka» от OTUS, где мы узнаем:
✅ что такое брокеры сообщений и как они помогают в архитектуре микросервисов
✅ основные различия между RabbitMQ и Kafka, включая их архитектурные подходы
✅ как развернуть и настроить RabbitMQ и Kafka для ваших приложений
✅ практическое использование обоих брокеров на реальных примерах в live demo
🗓 Встречаемся 24 октября в 20:00 мск в преддверии старта курса «Microservice Architecture». Все участники вебинара получат специальную цену на обучение и консультацию от менеджеров OTUS!
➡️ Ссылка для регистрации
Узнайте на открытом практическом уроке «Брокеры сообщений: RabbitMQ и Kafka» от OTUS, где мы узнаем:
✅ что такое брокеры сообщений и как они помогают в архитектуре микросервисов
✅ основные различия между RabbitMQ и Kafka, включая их архитектурные подходы
✅ как развернуть и настроить RabbitMQ и Kafka для ваших приложений
✅ практическое использование обоих брокеров на реальных примерах в live demo
🗓 Встречаемся 24 октября в 20:00 мск в преддверии старта курса «Microservice Architecture». Все участники вебинара получат специальную цену на обучение и консультацию от менеджеров OTUS!
➡️ Ссылка для регистрации
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
Будет полезно начинающим гоферам;
здесь наглядно показывается, как работают слайсы, какие они имеют методы и как взаимодействуют с разными функциями
Please open Telegram to view this post
VIEW IN TELEGRAM
Проект чистой архитектуры Go Backend с Chi (стандартный net/http), MongoDB, JWT Authentication Middleware, Test и Docker.
#golang
▪️Github
Please open Telegram to view this post
VIEW IN TELEGRAM
❓Какой самый больной вопрос для IT-команд? Тестирование микросервисов!
Откройте все секреты! Как повысить отказоустойчивость и управлять взаимодействиями между сервисами?
👨💻🛠👨🏻💻 На открытом уроке мы разберем всё: от юнит-тестов до тестов производительности.
Присоединяйтесь к бесплатному вебинару 7 ноября в 20:00 мск и получите практические инструменты для работы с микросервисами. А еще скидку на обучение на курсе «Software Architect»!
🔴 Регистрируйтесь прямо сейчас и получите доступ к лучшим практикам тестирования в распределённых системах
Откройте все секреты! Как повысить отказоустойчивость и управлять взаимодействиями между сервисами?
👨💻🛠👨🏻💻 На открытом уроке мы разберем всё: от юнит-тестов до тестов производительности.
Присоединяйтесь к бесплатному вебинару 7 ноября в 20:00 мск и получите практические инструменты для работы с микросервисами. А еще скидку на обучение на курсе «Software Architect»!
🔴 Регистрируйтесь прямо сейчас и получите доступ к лучшим практикам тестирования в распределённых системах
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Масштабируемый сервис транскодирования (конвертация видеофайлов из одного кодека или формата в другой.) видео, созданный с использованием Golang, Gin, AWS, Pulumi, MongoDB и Redis.
git clone https://github.com/yourusername/video-transcoding-service.git
cd video-transcoding-service
#golang
▪️ Github
Please open Telegram to view this post
VIEW IN TELEGRAM
❓Хотите создавать масштабируемую и отказоустойчивую микросервисную архитектуру?
19 ноября в 20:00 мск приглашаем на открытый вебинар, где вы узнаете, как применять ключевые стратегии Circuit Breaker, Retry и Load Balancing для повышения стабильности систем.
В современном мире сбоев и перегрузок не избежать. Но с правильными паттернами они не будут вас пугать. Мы разберем на практике, как защитить приложения от краха и обеспечить их стабильную работу даже при высокой нагрузке.
👨💻🛠👨🏻💻 Вебинар будет полезен разработчикам, архитекторам и DevOps-инженерам, которые хотят повысить производительность своих микросервисов, внедрив современные решения для автоматического масштабирования и балансировки.
🔴 Регистрируйтесь прямо сейчас и получите скидку на курс «Software Architect»
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
19 ноября в 20:00 мск приглашаем на открытый вебинар, где вы узнаете, как применять ключевые стратегии Circuit Breaker, Retry и Load Balancing для повышения стабильности систем.
В современном мире сбоев и перегрузок не избежать. Но с правильными паттернами они не будут вас пугать. Мы разберем на практике, как защитить приложения от краха и обеспечить их стабильную работу даже при высокой нагрузке.
👨💻🛠👨🏻💻 Вебинар будет полезен разработчикам, архитекторам и DevOps-инженерам, которые хотят повысить производительность своих микросервисов, внедрив современные решения для автоматического масштабирования и балансировки.
🔴 Регистрируйтесь прямо сейчас и получите скидку на курс «Software Architect»
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM