database_info | Unsorted

Telegram-канал database_info - Базы данных (Data Base)

6213

Базы данных (Data Base). По всем вопросам @evgenycarter

Subscribe to a channel

Базы данных (Data Base)

🤔Что происходит на рынке баз данных в свете импортозамещения?

🔥Обсудим этот злободневный вопрос на бесплатном открытом уроке 26 февраля вместе с Сергеем Окатовым — руководителем управления разработки, Fullstack-разработчик с опытом >10 лет

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

👉🏻Этот открытый урок – хороший шанс расширить знания и получить свежие инсайты о рынке баз данных. Больше актуальных знаний ждут вас на онлайн-курсе OTUS “NoSQL”. Осталось меньше половины мест. Курс можно приобрести в рассрочку.

🤝Чтобы записаться на открытый урок, пройдите вступительный тест!

Читать полностью…

Базы данных (Data Base)

Шпаргалка по основам SQL

#db

👉 @database_info

Читать полностью…

Базы данных (Data Base)

Хотите попробовать себя в роли аналитика и попрактиковаться на реальных задачах? Приходите на бесплатный курс-симулятор Нетологии и Yandex Cloud «Основы анализа данных в SQL, Python, Power BI, DataLens».

В этой профессии много разных направлений — аналитик данных, BI-аналитик, продуктовый аналитик, Data Scientist. Но везде пригодится навык работы с инструментами-помощниками, которые вы и освоите на курсе.

Эксперты-практики расскажут, как делать простые отчёты, исследовать данные и строить интерактивные дашборды. А чтобы понять, что анализ данных — это точно ваше, вместе решите практические задачи из реальных кейсов.

Воспользуйтесь шансом попробовать новые инструменты и запишитесь на бесплатный курс Нетологии.

Регистрация: https://netolo.gy/cUII

Реклама. ООО "Нетология". Erid LatgCAGM7

Читать полностью…

Базы данных (Data Base)

Типы баз данных

#db

👉 @database_info

Читать полностью…

Базы данных (Data Base)

Мастхэв для инженеров инфраструктуры, плюс для программистов

26 февраля стартует 6 поток Apache Kafka для разработчиков. Это углублённый курс с практикой на Java или Golang и платформой Spring+Docker+Postgres. Мы расскажем и покажем, как выйти на новый уровень владения инструментом.

Что вы получите:
👉 Узнаете , как использовать Kafka при создании приложения.
👉 Решите реальные бизнес-кейсы.
👉 Получите типовые шаблоны проектирования: они облегчат разработку на начальном этапе.
👉 Узнаете о большинстве частых ошибок, и научитесь их избегать.

Что в программе?
В курсе 28 онлайн-уроков, готовые стенды, много-много практики и закрытый чат с кураторами. Коротко о программе:

➡️ Терминология. В подробностях и с примерами расскажем, что такое нода, датацентр, кластер, ZooKeeper, консумер, топик и так далее.
➡️ Как выстроена архитектура Kafka.
➡️ Основы брокера. Разберем, как создать топик, настроить продюсер и консумер.
➡️ Как выстраивать архитектуру между микросервисами.
➡️ Наиболее распространенные проблемы при использовании приложения.

✔️ Регистрируйся на сайте и начни учиться бесплатно!

Записаться можно по ссылке.

Реклама. ООО «Слёрм» г. Лиски, ОГРН 1193668020545 Erid: 2Vtzqx1p7vF

Читать полностью…

Базы данных (Data Base)

Освойте DevOps с курсом Академии Кодебай и станьте экспертом в разработке и эксплуатации программного обеспечения

🔗 Программа рассчитана на 4 месяца обучения, в течение которых вы сможете изменить свою профессию или вырасти в должности. После каждого модуля уровень востребованности вас как специалиста будет повышаться.

💎 Вы освоите:
- Контейнеризацию и оркестрацию с использованием Docker и Kubernetes
- CI/CD
- Основы Linux и Git
- Компьютерные сети, базы данных и Bash-скрипты
- Мониторинг и управление жизненным циклом приложений
- Системы управления конфигурацией

👨‍💻 Для кого:
- Разработчиков, стремящихся к автоматизации и оптимизации процессов
- Системных администраторов
- Руководителей проектов, которые хотят повысить эффективность своей команды

📆 Старт курса: 19 февраля

📌 Узнать подробнее о курсе

Читать полностью…

Базы данных (Data Base)

Написание минимальной подсистемы хранения данных в памяти для MySQL/MariaDB

Я потратил неделю, копаясь во внутренностях MySQL/MariaDB вместе с ещё примерно 80 разработчиками. Хотя MySQL и MariaDB — это, по большей части, одно и то же (я ещё к этому вернусь), я сосредоточился именно на MariaDB.

Раньше я никогда сам не собирал MySQL/MariaDB. В первый день «недели хакерства» я смог наладить локальную сборку MariaDB и твикнул код так, что запрос SELECT 23 возвращал 213. Сделал я и другой твик — такой, что запрос SELECT 80 + 20 возвращал 60. На второй день я смог заставить заработать простую UDF на C, благодаря которой запрос SELECT mysum(20, 30) давал 50.

Остаток недели я потратил, пытаясь разобраться с тем, как сделать минимальный движок для хранения данных в памяти. Именно о нём я и расскажу. Это — 218 строк кода на C++.

Мой движок поддерживает команды CREATE, DROP, INSERT и SELECT для таблиц, поля которых могут хранить только данные типа INTEGER. Он не является потокобезопасным. Я таким его и делал, так как у меня не было времени для того чтобы разобраться с блокировочными примитивами MariaDB.

Здесь я расскажу и о том, как API MariaDB для создания пользовательских хранилищ информации соотносится с подобным API Postgres. Это сравнение я смог провести на основании опыта, полученного при создании проекта на предыдущей хак‑неделе.

Весь код для этого материала можно найти в моём форке MariaDB на GitHub.

https://habr.com/ru/companies/wunderfund/articles/789640/

original https://notes.eatonphil.com/2024-01-09-minimal-in-memory-storage-engine-for-mysql.html

#db

👉 @database_info

Читать полностью…

Базы данных (Data Base)

Practical SQL: A Beginner's Guide to Storytelling with Data
Автор: Anthony DeBarros (2022)

Книга служит быстрым введением в язык SQL, используемый для работы с реляционными базами данных. Вы научитесь выполнять сложные запросы данных вроде агрегации, фильтрации и поиска шаблонов, создавать и администрировать базы данных, работая с PostrgreSQL и pgAdmin.

Во время чтения книги вы научитесь:
✔Определять правильные типы данных для вашей информации;
✔Использовать основные математические и статистические функции;
✔Агрегировать, сортировать и фильтровать данные, чтобы находить шаблоны;
✔Выявлять ошибки в данных и исправлять их.

#db

👉 @database_info

Читать полностью…

Базы данных (Data Base)

⚡️ Совет по работе с базами данных 💡

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

#db

👉 @database_info

Читать полностью…

Базы данных (Data Base)

🖥 Подкаст «Техно.Логично»: Data Science и машинное обучение

Как рассказать бабушке о своей работе, чтобы она поняла и не испугалась? Как отбиться от офферов крупных компаний, если твоя профессия считается одной из самых модных и востребованных в современном мире?

Вечные вопросы, над которыми ломают голову поколения дата-сайентистов. Чтобы найти ответы, мы пригласили в новую студию подкаста «Техно.Логично» коллег из Департамента анализа данных и моделирования Газпромбанка: управляющего директора Андрея Анисимова и главного аналитика-исследователя Ирину Скорынину.

Ребята рассказали:
🔹Где в Газпромбанке применяются математические модели
🔹Сможет ли ИИ заменить людей в машинном обучении
🔹Почему работать в Data Science стало так престижно – и всем ли туда нужно стремиться
🔹Если вы решили, что вам нужно – то как выбрать подходящий онлайн-курс по машинному обучению

Посмотреть и послушать:
🖤YouTube
📱Apple Podcasts
🎵Яндекс Музыка

🎁 Бонус – конкурс в конце выпуска

В подкасте обновилась не только студия, но и приз за победу в конкурсе – теперь это Яндекс Станция с голосовым помощником!

Условия конкурса к выпуску о Data Science: у Газпромбанка есть очень большая витрина с данными клиентов, которую используют для обучения математических моделей. Предположите в комментариях к видео, сколько столбцов у этой витрины? Автор наиболее точного ответа получит колонку с Алисой 🥹

Реклама Банк ГПБ (АО), ИНН: 7744001497, erid:2Vtzqucm1mQ

Читать полностью…

Базы данных (Data Base)

Подборка Telegram каналов для программистов

Системное администрирование 📌
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux


/channel/tikon_1 Новости высоких технологий, науки и техники💡
/channel/mir_teh Мир технологий (Technology World)

/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика

/channel/itmozg Программисты, дизайнеры, новости из мира IT.
/channel/phis_mat Обучающие видео, книги по Физике и Математике

/channel/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста

1C разработка 📌
/channel/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
/channel/cpp_lib Библиотека C/C++ разработчика
/channel/cpp_knigi Книги для программистов C/C++
/channel/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
/channel/pythonofff Python академия. Учи Python быстро и легко🐍
/channel/BookPython Библиотека Python разработчика
/channel/python_real Python подборки на русском и английском
/channel/python_360 Книги по Python Rus

Java разработка 📌
/channel/BookJava Библиотека Java разработчика
/channel/java_360 Книги по Java Rus
/channel/java_geek Учим Java на примерах

GitHub Сообщество 📌
/channel/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
/channel/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
/channel/developer_mobila Мобильная разработка
/channel/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
/channel/frontend_1 Подборки для frontend разработчиков
/channel/frontend_sovet Frontend советы, примеры и практика!
/channel/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
/channel/game_devv Все о разработке игр

Вакансии 📌
/channel/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT

Чат программистов📌
/channel/developers_ru

Библиотеки 📌
/channel/book_for_dev Книги для программистов Rus
/channel/programmist_of Книги по программированию
/channel/proglb Библиотека программиста
/channel/bfbook Книги для программистов
/channel/books_reserv Книги для программистов

БигДата, машинное обучение 📌
/channel/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning

Программирование 📌
/channel/bookflow Лекции, видеоуроки, доклады с IT конференций
/channel/coddy_academy Полезные советы по программированию

QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика

Шутки программистов 📌
/channel/itumor Шутки программистов

Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_1 Статьи из "Хакера"

Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров

Английский 📌
/channel/UchuEnglish Английский с нуля

Математика 📌
/channel/Pomatematike Канал по математике

Excel лайфхак📌
/channel/Excel_lifehack

Читать полностью…

Базы данных (Data Base)

Оптимизация SQL-запросов в 23 раза!!!

https://dev.to/navneet7716/optimizing-sql-queries-h9j

#SQL

👉 @database_info

Читать полностью…

Базы данных (Data Base)

Курс по SQLAlchemy. Часть 2

СЛОЖНЫЕ запросы: JOIN, CTE, Подзапрос, Оконные функции #8
Введение в RELATIONSHIP - вся МОЩЬ ORM #9
Продвинутые RELATIONSHIP + индексы и constraints на уровне БД #10
Pydantic DTO и FastAPI + SQLAlchemy #11
Связь МНОГИЕ-КО-МНОГИМ #12
Alembic Миграции Базы Данных #13

источник

#SQL

👉 @database_info

Читать полностью…

Базы данных (Data Base)

⚡️ Совет по работе с базами данных 💡

Удаление сотен тысяч строк происходит медленно, влияет на производительность и не освобождает выделенное дисковое пространство. Но вы можете удалить старые данные очень эффективно, если разделите таблицу на временные диапазоны и удалите один из них.

#SQL

👉 @database_info

Читать полностью…

Базы данных (Data Base)

Совет по работе с базой данных 💡

Иногда вы хотите получить, например, три последних заказа для *каждого* клиента. Обычные объединения не могут этого сделать. Приходится выполнять n+1 запросов в коде, что очень медленно!

Но с помощью lateral joins вы можете сделать циклическое соединение for-each в SQL

https://sqlfordevs.com/for-each-loop-lateral-join

#SQL

👉 @database_info

Читать полностью…

Базы данных (Data Base)

Открытый практикум Linux by Rebrain: DWARF's, ELF's & ptrace или как работает ваш дебагер. Часть 2

Успевайте зарегистрироваться. Количество мест строго ограничено! Запись практикума “DevOps by Rebrain” в подарок за регистрацию!

👉Регистрация

Время проведения:


14 Февраля (Февраля) в 20:00 по МСК

Программа практикума:

🔹Разберём устройство современного дебагера
🔹Научимся использовать системный вызов ptrace
🔹Рассмотрим форматы ELF и DWARF
🔹Напишем простой отладчик, используя полученные знания

Кто ведёт?

Константин Деревцов – Rust разработчик в компании picodata (picodata.io)

Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!


Реклама. ООО "РЕБРЕИН". ИНН 7727409582 erid: 2Vtzqx7geoV

Читать полностью…

Базы данных (Data Base)

Типы SQL Joins

#db

👉 @database_info

Читать полностью…

Базы данных (Data Base)

CS50 Введение в базы данных SQL

Introduction
Lecture 0 - Querying
Lecture 1 - Relating
Lecture 2 - Designing
Lecture 3 - Writing
Lecture 4 - Viewing
Lecture 5 - Optimizing
Lecture 6 - Scaling

источник

#db

👉 @database_info

Читать полностью…

Базы данных (Data Base)

"Эксперты" SQL до сих пор спорят, что быстрее: IN, EXISTS или JOIN. Будьте осторожны: они ничего не понимают в базах данных SQL.

SELECT ... FROM o WHERE ... IN ( SELECT ... FROM i )
это join💡.

База данных может выполнить его как semi-join from (o) to (i) , или как join from (distinct i) to (o)

#db

👉 @database_info

Читать полностью…

Базы данных (Data Base)

Пошаговое руководство по чтению и пониманию SQL-запросов

SQL, или язык структурированных запросов, - это язык программирования для управления и обработки данных в реляционной системе управления базами данных (РСУБД). Это стандартный язык, используемый во многих компаниях для обеспечения беспрепятственного доступа к данным. Поскольку он широко используется, при приеме на работу SQL обычно указывается в качестве одного из необходимых навыков. Поэтому изучать SQL просто необходимо.

Одна из распространенных проблем при изучении SQL - понимание запросов, в основном когда их пишет другой человек. В компаниях мы работаем в команде, и нам часто приходится читать и понимать их SQL-запросы. Поэтому нам необходимо практиковаться в деконструкции SQL-запросов и их понимании.

В этой статье мы рассмотрим пошаговый процесс чтения и понимания SQL-запросов. Как это сделать? Давайте разберемся в этом.

https://www.kdnuggets.com/a-step-by-step-guide-to-reading-and-understanding-sql-queries

#db

👉 @database_info

Читать полностью…

Базы данных (Data Base)

Как в СУБД реализовать администратора без прав доступа к данным

В СУБД-строении есть не новая, но не теряющая актуальности задача. Сформулировать её можно примерно так: как убрать возможность суперпользователя взаимодействовать с данными, но оставить ему все возможности по управлению СУБД? Эта функция затребована не только большими компаниями с жёсткими требованиями к информационной безопасности, но и крайне нужна всем, кто попадает под различного вида государственные регуляции, вроде приказа ФСТЭК №64 или страшного GDPR.

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

В этой статье мы хотим поговорить о том, какие есть подходы к решению этой проблемы, какие можно найти реализации на рынке, и что решили сделать мы в Postgres Professional.

Одним из возможных решений данной задачи является введение классической ролевой модели, в рамках которой нас интересует выделение следующих ролей:

Администратор СУБД;
Администратор БД (он же владелец данных);
Администратор безопасности.

https://habr.com/ru/companies/postgrespro/articles/788268/

#db

👉 @database_info

Читать полностью…

Базы данных (Data Base)

Шпаргалка по MSSQL

#db

👉 @database_info

Читать полностью…

Базы данных (Data Base)

Облачные базы данных: Шпаргалка

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

Структурированные базы данных📌

Структурированные базы данных организуют данные в предопределенные схемы и модели.

Реляционные базы данных, такие как MySQL и PostgreSQL, хранят данные в таблицах со строками и столбцами.

Колоночные базы данных, такие как Amazon Redshift и Google BigQuery, также имеют структурированную модель данных, но хранят их по-другому, оптимизируя для аналитических запросов.

Преимущества:
- Эффективные SQL-запросы
- Возможность применения ограничений и валидации
- Последовательность там, где это необходимо

Примеры использования: CRM-системы, управление запасами, бухгалтерский учет, аналитика


Полуструктурированные базы данных📌

Полуструктурированные базы данных обеспечивают гибкость, храня данные без соблюдения формальной схемы. Данные часто хранятся в виде JSON или других гибких форматов.

Примеры включают в себя документ-базы данных, такие как MongoDB, графовые базы данных, наподобие Neptune, широкие колоночные хранилища, такие как ScyllaDB, и хранилища ключ-значение, такие как DynamoDB.

Преимущества:
- Гибкость для изменяющихся данных
- Масштабируемость на разных серверах

Примеры использования: Электронная коммерция, ленты социальных сетей, данные IoT


Неструктурированные базы данных📌

Неструктурированные базы данных оптимизированы для хранения и обработки огромных объемов разнородных данных, таких как документы, изображения, видео. Примеры: AWS S3, Azure Blob Storage.

Преимущества:
- Хранение огромных объемов данных
- Высокая масштабируемость

Примеры использования: Медиарепозитории, управление контентом, океаны данных, журнальные данные, резервное копирование.

#db

👉 @database_info

Читать полностью…

Базы данных (Data Base)

Learn PostgreSQL
Author: Luca Ferrari, Enrico Pirozzi (2023)

Последнее издание этой книги по PostgreSQL поможет вам начать использовать PostgreSQL с абсолютного нуля и быстро разобраться во внутренней работе базы данных. Благодаря структурированному подходу и практическим примерам вы пройдете путь, охватывающий основы, от SQL-запросов и запуска серверных программ до конфигурирования, управления, защиты и оптимизации производительности базы данных.

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

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

#db

👉 @database_info

Читать полностью…

Базы данных (Data Base)

PRQL

Pipelined Relational Query Language, произносится как "Приквел".

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

https://github.com/PRQL/prql

#db

👉 @database_info

Читать полностью…

Базы данных (Data Base)

Сравнение векторных БД

https://vdbs.superlinked.com/

#SQL

👉 @database_info

Читать полностью…

Базы данных (Data Base)

Открытый практикум Linux by Rebrain: Файловые системы

Успевайте зарегистрироваться. Количество мест строго ограничено! Запись практикума “DevOps by Rebrain” в подарок за регистрацию!

👉Регистрация

Время проведения:


17 Января (Среда) в 20:00 по МСК

Программа практикума:

🔹Blocks, inodes, directoryes
🔹Hardlinks
🔹Superblock
🔹Восстановление суперблока на примере ext4

Кто ведёт?

Андрей Буранов – Системный администратор в департаменте VK Play. 10+ лет опыта работы с ОС Linux. 8+ лет опыта преподавания. Входит в топ 3 лучших преподавателей образовательных порталов.

Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!

Реклама. ООО "РЕБРЕИН". ИНН 7727409582 erid: 2VtzqutyuX6

Читать полностью…

Базы данных (Data Base)

Курс по SQLAlchemy. Часть 1

Зачем Учить SQLAlchemy ORM
Подключение к Базе Данных, сырые SQL запросы через engine #2
Создание таблиц и вставка данных через Core #3
Session и первые шаги в ORM #4
Создание таблиц через КЛАССЫ - Mapped и mapped_column #5
SELECT и UPDATE запросы через ORM и Core #6
Базовые SELECT запросы #7

источник

#SQL

👉 @database_info

Читать полностью…

Базы данных (Data Base)

Ожидания пользователей > реальное приложение – почему так?

Расскажет опытный эксперт на бесплатном практическом уроке «CAP-теорема и управление ожиданиями пользователей» от OTUS.

На вебинаре разберём:

1. Введение в CAP-теорему
2. Технические ограничения и ожидания пользователей
3. Реальные кейсы и способы решения

Урок будет полезен для разработчиков, сисадминов, аналитиков, DevOps и архитекторов.

Занятие пройдёт 23 января в 20:00 мск и будет приурочено к старту курса «Microservice Architecture». Доступна рассрочка на обучение.

Читать полностью…

Базы данных (Data Base)

Как создавать резервные копии и восстанавливать базы данных PostgreSQL

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

https://mydeveloperplanet.com/2023/05/10/how-to-backup-and-restore-a-postgresql-database/

#SQL

👉 @database_info

Читать полностью…
Subscribe to a channel