🦾 Вектореные базы данных
Вектор - это массив чисел, выражающий положение точки в пространстве по нескольким измерениям.
Как векторы связаны с эмбедингами?
В машинном обучении эмбединги - это векторы, представляющие такие точки данных, как слова, предложения, изображения и т.д.
Как работает векторная база данных?
Векторная база данных хранит эмбединги для различных точек данных, таких как документы, изображения, продукты и т.д. Она сопоставляет эти эмбединги с исходными данными.
Как векторные базы данных используются в ИИ?
Векторные базы данных имеют несколько ключевых направлений использования в ИИ:
- Семантический поиск - поиск информации на основе смысла.
- Большие языковые модели - понимание слов в контексте для генерации и обобщения информации.
- Обнаружение аномалий - выявление аномальных точек данных.
- Классификация изображений - категоризация изображений на основе визуальных свойств.
Weaviate - это векторная база данных с открытым исходным кодом, которая хранит как объекты, так и векторы, позволяя сочетать векторный поиск и структурированную фильтрацию с отказоустойчивостью и масштабируемостью облачной нативной базы данных, доступной через
📌 Github
@sqlhub
Вектор - это массив чисел, выражающий положение точки в пространстве по нескольким измерениям.
Как векторы связаны с эмбедингами?
В машинном обучении эмбединги - это векторы, представляющие такие точки данных, как слова, предложения, изображения и т.д.
Как работает векторная база данных?
Векторная база данных хранит эмбединги для различных точек данных, таких как документы, изображения, продукты и т.д. Она сопоставляет эти эмбединги с исходными данными.
Как векторные базы данных используются в ИИ?
Векторные базы данных имеют несколько ключевых направлений использования в ИИ:
- Семантический поиск - поиск информации на основе смысла.
- Большие языковые модели - понимание слов в контексте для генерации и обобщения информации.
- Обнаружение аномалий - выявление аномальных точек данных.
- Классификация изображений - категоризация изображений на основе визуальных свойств.
Weaviate - это векторная база данных с открытым исходным кодом, которая хранит как объекты, так и векторы, позволяя сочетать векторный поиск и структурированную фильтрацию с отказоустойчивостью и масштабируемостью облачной нативной базы данных, доступной через
GraphQL, REST
и различные языковые клиенты.📌 Github
@sqlhub
👍8❤6🔥2
⚡️ Совет по работе с базами данных
Удаление сотен тысяч строк происходит медленно, влияет на производительность и не освобождает память.
Однако удалить старые данные можно очень эффективно, если разбить таблицу на временные диапазоны и удалить один из них.
@sqlhub
Удаление сотен тысяч строк происходит медленно, влияет на производительность и не освобождает память.
Однако удалить старые данные можно очень эффективно, если разбить таблицу на временные диапазоны и удалить один из них.
@sqlhub
👍20🔥5❤4
1. Введение
2. Установка и управление сервером
3. Использование psql
4. Конфигурирование
5. Общее устройство PostgreSQL
6. Изоляция и многоверсионность
7. Очистка
8. Буферный кеш и журнал
9. Базы данных и схемы
10. Системный каталог
#video #database
https://www.youtube.com/watch?v=yevXLP2LA4Q&list=PLaFqU3KCWw6LPcuYVymLcXl3muC45mu3e
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥9❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Именно поэтому долговечность - самое важное свойство базы данных.
Может случиться много неприятных вещей: отключение электричества, системные сбои или отказ оборудования.
❓Как базы данных гарантируют, что мы не потеряем наши данные?❓
Основная идея заключается в том, чтобы хранить данные в энергонезависимом хранилище, например на диске.
Всякий раз, когда пользователь выполняет транзакцию, база данных делает две вещи:
▪️записывает данные в отдельный журнал
▪️производит обновление.
Журнал позволяет обрабатывать транзакции во время перезагрузки.
Запись в журнал происходит быстро, потому что это двоичный файл только для добавления.
Что делать, если база данных распределена?
Этот случай более сложный, поскольку серверы базы данных должны координировать свои действия
Существует процесс, в котором один из серверов выступает в роли координатора:
▪️он передает сообщение о фиксации всем участникам
▪️ожидает всех подтверждений
▪️сообщает о фиксации или откате
@sqlhub
Может случиться много неприятных вещей: отключение электричества, системные сбои или отказ оборудования.
❓Как базы данных гарантируют, что мы не потеряем наши данные?❓
Основная идея заключается в том, чтобы хранить данные в энергонезависимом хранилище, например на диске.
Всякий раз, когда пользователь выполняет транзакцию, база данных делает две вещи:
▪️записывает данные в отдельный журнал
▪️производит обновление.
Журнал позволяет обрабатывать транзакции во время перезагрузки.
Запись в журнал происходит быстро, потому что это двоичный файл только для добавления.
Что делать, если база данных распределена?
Этот случай более сложный, поскольку серверы базы данных должны координировать свои действия
Существует процесс, в котором один из серверов выступает в роли координатора:
▪️он передает сообщение о фиксации всем участникам
▪️ожидает всех подтверждений
▪️сообщает о фиксации или откате
@sqlhub
👍13🔥5❤2
This media is not supported in your browser
VIEW IN TELEGRAM
👍23😁16🔥6🤩4👏3❤1👎1🥰1🤔1
RelBench - это бенчмарк, который призван способствовать эффективным, надежным и воспроизводимым исследованиям в этом направлении.
Он включает в себя коллекцию реалистичных, масштабных и разнообразных датасетов, структурированных в виде реляционных таблиц.
Эта прорывная технология открывает широкие возможности для работы с данными и поднимает новые интересные исследовательские вопросы.
▪Github
▪Проект
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
ℹ️HNSWℹ️
Иерархический маленький мир (Hierarchical Navigable Small-World graph, HNSW) — один из самых быстрых алгоритмов приблизительного поиска ближайших соседей. Поисковый индекс в HNSW представляет собой многоуровневую структуру, в которой каждый уровень является графом близости. Каждый узел графов соответствует одному из векторов запросов.
Алгоритм индексирования HNSW позволяет эффективно осуществлять поиск ближайших соседей в векторных базах данных.
Поиск ближайших соседей в HNSW использует метод увеличения (zooming-in). Он начинается во входной ноде самого верхнего уровня и рекурсивно выполняет жадный обход графов на каждом уровне, пока не достигнет локального минимума на самом дне.
Подробности об алгоритме и методике поиска хорошо описаны в научной работе. Важно запомнить, что каждый цикл поиска ближайших соседей состоит из обхода узлов графов с вычислением расстояний между векторами. Ниже мы рассмотрим эти этапы, чтобы использовать данный метод для создания крупномасштабного индекса.
Как это работает?
▪️HNSW организует векторы в многослойную графовую структуру.
▪️Узлы в каждом слое поддерживают связи на основе расстояний в векторном пространстве.
▪️Навигация происходит иерархически, начиная с верхнего слоя и спускаясь вниз для уточнения поиска.
▪️Более высокие слои строятся путем подвыборки узлов из нижних слоев.
Почему HNSW?
▪️Скорость: иерархическая структура означает, что алгоритм поиска может перемещаться по графу быстрее, чем при плоской структуре.
▪️Масштабируемость: Поскольку кэш-память хранит только верхний слой, а затем добавляет только соседние векторы в дальнейших слоях, это очень эффективно и масштабируемо.
▪️Адаптируемость: HNSW очень надежен и может одновременно работать с импортом и запросами.
@sqlhub
Иерархический маленький мир (Hierarchical Navigable Small-World graph, HNSW) — один из самых быстрых алгоритмов приблизительного поиска ближайших соседей. Поисковый индекс в HNSW представляет собой многоуровневую структуру, в которой каждый уровень является графом близости. Каждый узел графов соответствует одному из векторов запросов.
Алгоритм индексирования HNSW позволяет эффективно осуществлять поиск ближайших соседей в векторных базах данных.
Поиск ближайших соседей в HNSW использует метод увеличения (zooming-in). Он начинается во входной ноде самого верхнего уровня и рекурсивно выполняет жадный обход графов на каждом уровне, пока не достигнет локального минимума на самом дне.
Подробности об алгоритме и методике поиска хорошо описаны в научной работе. Важно запомнить, что каждый цикл поиска ближайших соседей состоит из обхода узлов графов с вычислением расстояний между векторами. Ниже мы рассмотрим эти этапы, чтобы использовать данный метод для создания крупномасштабного индекса.
Как это работает?
▪️HNSW организует векторы в многослойную графовую структуру.
▪️Узлы в каждом слое поддерживают связи на основе расстояний в векторном пространстве.
▪️Навигация происходит иерархически, начиная с верхнего слоя и спускаясь вниз для уточнения поиска.
▪️Более высокие слои строятся путем подвыборки узлов из нижних слоев.
Почему HNSW?
▪️Скорость: иерархическая структура означает, что алгоритм поиска может перемещаться по графу быстрее, чем при плоской структуре.
▪️Масштабируемость: Поскольку кэш-память хранит только верхний слой, а затем добавляет только соседние векторы в дальнейших слоях, это очень эффективно и масштабируемо.
▪️Адаптируемость: HNSW очень надежен и может одновременно работать с импортом и запросами.
@sqlhub
👍16🎉2🔥1
ℹ️Масштабирование базы данныхℹ️
Масштабировать чтение базы данных очень просто. Проблемы начинаются, когда вы хотите масштабировать записи!
▪️Почему?
Чтобы масштабировать чтение, вы просто реплицируете данные на несколько узлов.
Ведущий узел обрабатывает запросы на запись, а последующие - на чтение.
Однако масштабирование операций записи - это совсем другое дело.
Чтобы масштабировать запись, вы позволяете нескольким узлам обрабатывать запросы на запись.
Это более известно как активно-активная настройка.
Идея заключается в том, что когда узел получает запрос на запись, он распространяет изменения на другие узлы.
Но такая схема может привести к конфликтам.
На этом этапе вам необходимо иметь какой-то алгоритм разрешения конфликтов.
@sqlhub
Масштабировать чтение базы данных очень просто. Проблемы начинаются, когда вы хотите масштабировать записи!
▪️Почему?
Чтобы масштабировать чтение, вы просто реплицируете данные на несколько узлов.
Ведущий узел обрабатывает запросы на запись, а последующие - на чтение.
Однако масштабирование операций записи - это совсем другое дело.
Чтобы масштабировать запись, вы позволяете нескольким узлам обрабатывать запросы на запись.
Это более известно как активно-активная настройка.
Идея заключается в том, что когда узел получает запрос на запись, он распространяет изменения на другие узлы.
Но такая схема может привести к конфликтам.
На этом этапе вам необходимо иметь какой-то алгоритм разрешения конфликтов.
@sqlhub
👍6👎3👏2🔥1
ℹ️База данных и паролиℹ️
Несмотря на удобство, самостоятельное хранение паролей создает значительные риски для безопасности.
В идеале мы должны стремиться к тому, чтобы по возможности не заниматься хранением паролей самостоятельно.
Некоторые альтернативные подходы включают в себя:
▪️Использование сторонних служб аутентификации (например, OAuth) для обработки входа в систему.
▪️Использование федеративного управления идентификацией и единого входа (SSO) для минимизации использования паролей.
НЕЛЬЗЯ:
- Хранить пароли в формате обычного текста
- Хешировать пароли без разделения
ОБЯЗАТЕЛЬНО:
- Хешировать пароли перед хранением с помощью криптографических функций.
- Следуйте отраслевым стандартам, таким как OWASP, для реализации соления и хэширования.
- Правильно проверяйте попытки входа в систему, сравнивая хэши входных паролей и хранимых хэшей по времени.
Несмотря на удобство, самостоятельное хранение паролей создает значительные риски для безопасности.
В идеале мы должны стремиться к тому, чтобы по возможности не заниматься хранением паролей самостоятельно.
Некоторые альтернативные подходы включают в себя:
▪️Использование сторонних служб аутентификации (например, OAuth) для обработки входа в систему.
▪️Использование федеративного управления идентификацией и единого входа (SSO) для минимизации использования паролей.
НЕЛЬЗЯ:
- Хранить пароли в формате обычного текста
- Хешировать пароли без разделения
ОБЯЗАТЕЛЬНО:
- Хешировать пароли перед хранением с помощью криптографических функций.
- Следуйте отраслевым стандартам, таким как OWASP, для реализации соления и хэширования.
- Правильно проверяйте попытки входа в систему, сравнивая хэши входных паролей и хранимых хэшей по времени.
👍15❤2🔥2😁1
Вероятно, вы думаете, что с такими большим количеством запросов могут справиться только какие-то мощные микросервисы. На самом деле все обстоит несколько иначе.
Shopify использует 𝗺𝗼𝗱𝘂𝗹𝗮𝗿 𝗺𝗼𝗻𝗼𝗹𝗶𝘁𝗵 𝗮𝗽𝗽𝗿𝗼𝗮𝗰𝗵( модульную монолитную архитектуру), они хранят весь свой код в одной модульной кодовой базе.
Монолитная архитектура - самая простая архитектура для понимания и реализации.
Поскольку монолитный дизайн прост в построении и позволяет командам быстро работать на начальном этапе разработки, он может помочь продвинуть разработку приложения.
Централизация развертывания приложения и поддержки кодовой базы имеет множество преимуществ.
Вся функциональность доступна в одной папке; вам нужно будет управлять только одним репозиторием. Кроме того, это означает, что необходимо поддерживать один конвейер тестирования и развертывания, что может сэкономить много времени.
Возможность обращаться к различным компонентам, а не полагаться на API веб-сервисов, - однно из самых привлекательных приемуществ монолитной архитектуры по сравнению с несколькими отдельными сервисами.
Shopify реализовала одну из версий модульного монолита на 𝗥𝘂𝗯𝘆 𝗼𝗻 𝗥𝗮𝗶𝗹𝘀. Они организуют кодовую базу вокруг реальных концепций (таких как заказы, доставка, инвентаризация и выставление счетов), что облегчает разметку кода и людей, которые его понимают. Каждый компонент представляет собой мини-приложение на Rails (модуль).
Каждый компонент претендует на единоличное владение данными, с которыми связан, и определяет прямой, специализированный интерфейс с границами домена, передаваемыми через публичный API.
Cтатистики работы Shopify на черной пятнице:
🔹 145 миллиардов запросов (~60 миллионов в минуту)
🔹 99,999+% аптайма
🔹 5 ТБ/мин данных из всей инфраструктуры
🔹 MySQL 5.7 и 8 обрабатывают более 19 миллионов запросов в секунду (QPS)
🔹 22 ГБ/сек журналов и 51,4 ГБ/сек метрических данных
🔹 9 миллионов проходов в секунду данных трассировки
🔹 Их Apache Kafka обслуживал 29 миллионов сообщений в секунду в пиковый момент
🔹 Все работает в облаке Google Cloud
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍5❤2🤯2
1. Python+SQL работа с базами данных
2. Python анализ данных с Pandas. PandaSQL
3. Python анализ данных с Pandas. Join, merge, concat в Pandas
4. Python+SQL часть 2, создание таблиц
5. Python+SQL. Операции с записями
6. Устраиваемся на работу. Решаем тестовое задание на позицию Python Junior
#video #python #sql
https://youtube.com/watch?v=Q7FtqwF5GDw&list=PLysMDSbb9HcxdvtQSkYoO7xaF3SvGUD8n
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥5❤3
Популярная ORM prisma получила обновления.
Prisma - это продвинутая ORM для
Node.js и TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, MongoDB и CockroachDB
https://github.com/prisma/prisma
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2🔥1🤩1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤2🔥1
🔥 Дайджест полезных материалов из мира SQL за неделю
Почитать:
— 8 бесплатных курсов по большим языковым моделям
— Современные варианты баз данных
Почитать:
— Детализированные стратегии кэширования динамических запросов
— Как в РСХБ разработали средство генерации SQL-запроса для упрощения задач по тестированию
— Прекратите клепать базы данных
— CADLib API: От API к прямой работе с базой данных модели через SQL-запросы
— The Most Annoying Optimizer Fail in Postgres ✅ Best index solved it.
— How Modern SQL Databases Are Changing Web Development - #3 Better Developer Experience
— Configuring Delete Behaviour for One to Many Related Objects in SQLAlchemy 2.0
— Isolation Levels - part VIII: Cursor Stability
— SQL - Joins (Tutorial Prático)
— Views, Sequences e Synonyms: Um tutorial prático
— Quick 📸 on 🐘 wait events from pg_stat_activity
— DATABASE
— Triggers
— NoSQL? I'll show you NoSQL!
Посмотреть:
🌐 Ollama — модель уровня GPT. Используй GPT без ограничений и абсолютно бесплатно.
🌐 Эти фишки сделают твой Python код лучше🔥 (⏱ 18:27)
🌐Выполнение простейших запросов SQL в СУБД Ред База Данных и Firebird!
Хорошего дня!
@sqlhub
Почитать:
— 8 бесплатных курсов по большим языковым моделям
— Современные варианты баз данных
Почитать:
— Детализированные стратегии кэширования динамических запросов
— Как в РСХБ разработали средство генерации SQL-запроса для упрощения задач по тестированию
— Прекратите клепать базы данных
— CADLib API: От API к прямой работе с базой данных модели через SQL-запросы
— The Most Annoying Optimizer Fail in Postgres ✅ Best index solved it.
— How Modern SQL Databases Are Changing Web Development - #3 Better Developer Experience
— Configuring Delete Behaviour for One to Many Related Objects in SQLAlchemy 2.0
— Isolation Levels - part VIII: Cursor Stability
— SQL - Joins (Tutorial Prático)
— Views, Sequences e Synonyms: Um tutorial prático
— Quick 📸 on 🐘 wait events from pg_stat_activity
— DATABASE
— Triggers
— NoSQL? I'll show you NoSQL!
Посмотреть:
🌐 Ollama — модель уровня GPT. Используй GPT без ограничений и абсолютно бесплатно.
🌐 Эти фишки сделают твой Python код лучше🔥 (⏱ 18:27)
🌐Выполнение простейших запросов SQL в СУБД Ред База Данных и Firebird!
Хорошего дня!
@sqlhub
🔥4❤2👍2
NULL
😳Мой коллега постоянно работает с базами данных и обнаружил это вчера на собственном горьком опыте.
Некоторым это может показаться неожиданным поведением для движков: #mysql, #postgresql.
Если вы хотите вывести
NULL
, используйте `val != 'crazy' OR val IS NULL`
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🔥5❤2🎉2
https://www.youtube.com/watch?v=_q2h9qslPzI
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🥰3🔥2
Media is too big
VIEW IN TELEGRAM
00:59 Что такое GraphQL и откуда он взялся
01:55 Чем GraphQL лучше, чем REST API
04:03 Графовая структура
04:45 Типы запросов
07:00 Основные концепции в GraphQL
12:07 Схема
14:09 Преимущества
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9👎2🔥2❤1🎉1
1- SQL для анализа данных от Udacity
Продолжительность: Примерно 4 недели
Уровень навыков: Начинающий
Ссылка - https://shiksha.com/online-courses/sql-for-data-analysis-course-udacl3
2- Введение в SQL от Kaggle
Продолжительность: Приблизительно 3 часа
Уровень мастерства: Начинающий
Ссылка - https://kaggle.com/learn/intro-to-sql
3- Продвинутый SQL от Kaggle
Продолжительность: Приблизительно 4 часа
Уровень мастерства: Промежуточный
Ссылка - https://kaggle.com/learn/advanced-sql
4- Введение в базы данных и SQL-запросы от Udemy
Продолжительность: Приблизительно 2 часа 17 минут
Уровень мастерства: Начинающий
Ссылка - https://udemy.com/course/introduction-to-databases-and-sql-querying/
5- Intro to Relational Databases byUdacity
Продолжительность : 4 недели
Уровень квалификации: Средний ученик
Ссылка - https://udacity.com/course/intro-to-relational-databases-ud197
6- Введение в SQL (DataCamp)
Продолжительность: 4,5 часа
Уровень квалификации: Начинающий
Ссылка -
https://datacamp.com/courses/introduction-to-sql
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥6❤2🥰2
This media is not supported in your browser
VIEW IN TELEGRAM
На диаграмме ниже подробно показано, как работают 4 типа объединений SQL.
🔹 INNER JOIN
Возвращает совпадающие строки в обеих таблицах.
🔹 LEFT JOIN
Возвращает все записи из левой таблицы и совпадающие записи из правой таблицы.
🔹 RIGHT JOIN
Возвращает все записи из правой таблицы и совпадающие записи из левой таблицы.
🔹 ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
Возвращает все записи, для которых есть совпадение в левой или правой таблице.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20👎5🔥2🤯1