Как стать автором
Обновить
3

NoSQL *

Не только SQL

Сначала показывать
Порог рейтинга
Уровень сложности

Использование Redis почти как SQL БД: Реализация чата с кешированием сообщений

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 6.8K

Допустим, мы хотим создать чат и хранить сообщения для него. Вполне возможно, мы можем добавить для этого простую базу данных (БД), такую как MySQL или даже NoSQL БД.

Обычно многие используют Redis как key‑value (dictionary) хранилище. Тем не менее, Redis — это несколько большее, чем key‑value, как многие привыкли думать.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 2

Новости

Распределенное управление конкурентностью

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 4.6K

Управление конкурентным доступом является очень важной концепцией в Системе Управления Базами Данных. Оно гарантирует, что одновременное выполнение запросов несколькими процессами или пользователями оставит данные в согласованном состоянии. Особое место занимает доступ к Базе Данных в распределенной системе с множеством конкурирующих за ресурс узлов.

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Комментарии 5

Автоматизируем торговлю криптой на бирже, ещё и на DEX

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 6.2K

Привет, Хабр! В этой статье я делюсь инструментами, которые позволили эффективно создать автоматизированную систему торговли (АСТ) криптовалютой на централизованной (CEX) и децентрализованной (DEX) биржах. Система вышла в продакшн в начале 2022 года и работала только на централизованных биржах. После того как летом 2023 года правительство США начало блокировать работу криптобирж для граждан США, было принято решение о подключении децентрализованной биржи, так как децентрализация не требует проходить KYC.

Итак, начнём!

Читать далее
Всего голосов 17: ↑9 и ↓8 +1
Комментарии 2

Это база: нюансы работы с Redis. Часть 1

Уровень сложности Средний
Время на прочтение 15 мин
Количество просмотров 31K

Привет! Меня зовут Петр и мы в компании Nixys очень любим Redis. Эта база используется, если не на каждом нашем проекте, то на подавляющем большинстве. Мы работали как с разными инсталляциями Redis, так и с разными версиями, вплоть до самых дремучих, вроде 2.2. Несмотря на то, что в Интернете очень много статей и докладов по этой БД, мы в своей практике достаточно часто встречаемся с непониманием некоторых основных концепций Redis и со стороны разработчиков, и со стороны системных администраторов.

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

Читать далее
Всего голосов 79: ↑79 и ↓0 +79
Комментарии 5

Истории

Используем Elasticsearch вместе со Spring Boot

Уровень сложности Простой
Время на прочтение 20 мин
Количество просмотров 11K

Всем привет! Это моя первая статья на Хабре и в ней я хочу рассказать о том, как мы можем интегрировать Elasticsearch в наше Spring Boot приложение. Этот проект предназначен для ознакомления с технологиями и служит скорее шпаргалкой/пособием или же фундаментом для дальнейшего погружения в тему.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 14

Hyper: Chance. Этап 0. Знакомство

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 925

Hyper Chance: Этап 0. Знакомство

Hyper Chance - бесплатный технический акселератор коммерческих проектов от Hyper Dev Guild для разработчиков на основе фреймворка $mol

Обратная связь приветствуется! ^-^

Читать далее
Всего голосов 3: ↑2 и ↓1 +1
Комментарии 1

Основы полнотекстового поиска в ElasticSearch. Часть третья

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 4.3K

Это третья и заключительная статья из цикла, в которой рассмотрим стандартную модель ранжирования документов в Elasticsearch.

После того как определено множество документов, которые удовлетворяют параметрам полнотекстового запроса, Elasticsearch рассчитывает метрику релевантности для каждого найденного документа. По значению метрики набор документов сортируется и отдается потребителю.

В Elasticsearch существует несколько моделей ранжирования документов. По умолчанию используется Okapi BM25.

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 1

JavaScript триггеры и функции появились в Redis 7.2

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 2.5K

В Redis уже много лет используется язык программирования Lua для исполнения пользовательского кода налету (eval) или определении пользовательских функций. Lua действительно удобный язык, но скорее с точки зрения встраивания внутрь проекта на C/C++ для выполнение простых скриптов. Большинство же разработчиков, которые используют Redis, предпочли бы не учить новый язык, а работать с уже известным и более популярным скриптовым языком, таким как JavaScript. И это наконец-то случилось.

Предлагаю ознакомиться с тем, как команда Redis в релизе 7.2 дошла до долгожданного внедрения JavaScript и как сделать первый шаги по запуску триггеров и функций.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 0

7 аргументов почему UUID лучше, чем автоинкрементные идентификаторы

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 23K

В мире баз данных идентификаторы имеют решающее значение для уникальной идентификации записей. Традиционно многие разработчики предпочитали автоматически увеличивающиеся целочисленные идентификаторы. Однако есть еще один вариант, который набирает популярность: универсально уникальные идентификаторы (UUID). В этой статье мы рассмотрим, почему UUID часто являются лучшим выбором по сравнению с автоматически увеличивающимися идентификаторами.

Читать далее
Всего голосов 34: ↑22 и ↓12 +10
Комментарии 90

Модели данных в NoSQL

Уровень сложности Простой
Время на прочтение 15 мин
Количество просмотров 4.2K


Автор статьи: Артем Михайлов


NoSQL (от «Not Only SQL») представляют собой семейство баз данных, разработанных для решения проблем, связанных с хранением, извлечением и обработкой больших объемов разнообразных данных. Они отличаются от традиционных реляционных баз данных, таких как MySQL или PostgreSQL, тем, что не требуют жесткой схемы данных и предоставляют более гибкую структуру хранения.

Преимущества NoSQL баз данных включают в себя горизонтальное масштабирование, высокую производительность при больших нагрузках, способность обрабатывать полуструктурированные и неструктурированные данные, а также поддержку распределенных вычислений. Они широко используются в веб-разработке, анализе больших данных, интернете вещей и других областях, где требуется обработка и хранение данных большого объема и разнообразной структуры.
Читать дальше →
Всего голосов 13: ↑10 и ↓3 +7
Комментарии 1

Как работает миграция между базами данных в реальном мире

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 13K

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

В статье я рассмотрю: с чего начать миграцию, зачем нужна миграция, подход PoC и парадигмы баз данных, тестирование и стратегии миграции.

Подробнее о миграции
Всего голосов 20: ↑19 и ↓1 +18
Комментарии 2

Основы полнотекстового поиска в ElasticSearch. Часть вторая

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 11K

Это вторая статья из цикла. В первой части я рассказывал про самые базовые понятия Elasticsearch. В этом же посте разберем устройство анализа текста и немного пощупаем полнотекстовый поиск.

Несколько слов про анализ текста

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

Мы уже познакомились с некоторыми типами Elasticsearch, но в этом разделе будем рассматривать только два — keyword и text. Тип text анализируется для полнотекстового поиска. Тип keyword преимущественно остается без изменений для точного поиска, сортировки и агрегации.

Читать далее
Всего голосов 26: ↑26 и ↓0 +26
Комментарии 0

Основы полнотекстового поиска в ElasticSearch. Часть первая

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 14K

Привет! Меня зовут Глеб, я разработчик команды продукта «Сервис персонализации» в SM Lab. В цикле из трех постов я расскажу про основы полнотекстового поиска в Elasticsearch.

Данный цикл статей предназначен для всех, но будет особенно актуальным для тех читателей, кто только начинает свое знакомство с Elasticsearch. Я надеюсь, каждый из вас найдет что-то полезное для себя.

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

Итак, начнём с самых базовых понятий.

Читать далее
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 1

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

Отранжированные и смешные: создаем систему выстраивания пользовательской ленты

Уровень сложности Средний
Время на прочтение 17 мин
Количество просмотров 2.3K

Всех приветствую! Меня зовут Кирилл, я Go-разработчик в компании Ozon. Сейчас моим полем деятельности является разработка микросервисов в департаменте Fresh, однако я также успел принять участие в некоторых других интересных проектах.

Сегодня мне бы хотелось поговорить с вами о ранжировании информации для её последующей выдачи в пользовательскую ленту. Предлагаю поговорить о самом термине «ранжирование», а ещё об использовании этого процесса в современных информационных системах. Во время обсуждения я набросаю простую схему ранжирования внутри продукта, выбранного в качестве примера, а также поделюсь некоторыми примерами из опыта построения подобной системы.

Читать далее
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 0

Сто первое руководство по мониторингу метрик в Redis

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 3.1K
image

Жизненно важно отслеживать проблемы с производительностью Redis. Для этого инструмента характерна низкая задержка отклика при обслуживании многочисленных запросов. Есть определенные ключевые метрики, которые можно отслеживать для контроля за производительностью вашего экземпляра Redis. В этой статье мы пройдемся по этим метрикам и рассмотрим способы их сбора с помощью встроенных в Redis инструментов.

Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 0

KeyDB и Redis: в поисках серебряной пули — in-memory replicated DB (Replicated IMDB)

Уровень сложности Средний
Время на прочтение 19 мин
Количество просмотров 9.4K

На кластерах клиентов, которые мы обслуживаем, есть как «одноголовые» инсталляции Redis (обычно для кэшей, которые не страшно потерять), так и более отказоустойчивые решения — Redis Sentinel или Redis Cluster. По нашему опыту, во всех трех вариантах можно безболезненно переключиться с Redis на KeyDB и получить прирост производительности. Точнее, избавиться от бутылочного горлышка Redis в одно ядро. Хотя в новых версиях Redis(r) появилась обработка I/O в отдельных тредах, иногда этого бывает недостаточно.

В то же время, если мы хотим использовать отказоустойчивые решениями вроде Sentinel и Cluster, нам понадобится поддержка этих технологий на уровне библиотеки, которую приложение использует для подключения в Redis. Причем лишь немногие библиотеки умеют читать из реплик Redis — в обоих вариантах (Sentinel и Cluster) чтение, как правило, происходит с мастеров. И запись, естественно, тоже происходит в мастеры. 

В итоге у нас есть несколько реплик довольно дорогого in-memory-хранилища, а в рабочем процессе используется только часть из них. Остальные — на подхвате. Хотя в большинстве кейсов операции с in-memory NoSQL DB — это именно операции чтения.

Однако если посмотреть в сторону KeyDB, то можно увидеть, что там есть киллер-фича — и даже две: я говорю о режимах Active Replica и Multi-Master. Использование этих режимов позволяет получить распределенный отказоустойчивый KeyDB, совместимый с Redis, писать в любую ноду, читать из любой ноды. И все это с точки зрения приложения выглядит как один экземпляр Redis без всяких Sentinel — то есть в коде приложения ничего менять не придется. 

Звучит как фантастика?

Читать далее
Всего голосов 40: ↑40 и ↓0 +40
Комментарии 21

Неудачное внедрение Redis Cluster в монолит на PHP 7.2.X

Уровень сложности Средний
Время на прочтение 16 мин
Количество просмотров 7.5K

Исповедь о том как принес в проект проблему, которую так и не устранил в течение долгого времени.

Осторожно! Статья может вызвать обострение профессиональных заболеваний вплоть до боли ниже поясницы.

Читать далее
Всего голосов 28: ↑28 и ↓0 +28
Комментарии 12

Невредные советы по Cassandra — как избежать ошибок?

Время на прочтение 11 мин
Количество просмотров 2.1K

Привет, Хабр! Меня зовут Евгений Абрамкин, я руководитель поддержки третьего уровня в направлении омниканальных решений Лиги Цифровой Экономики. Моя команда — последняя «инстанция» во флоу по решению инцидентов. Мы пишем доработки и фиксы, чтобы победить проблему клиента, а также можем предоставить оптимальную конфигурацию для системы, которая передана на эксплуатацию или требует масштабирования. Это может быть кластер Elasticsearch, балансировщики nginx или что поинтереснее — распределенная NoSQL СУБД Apache Cassandra.

В материале я расскажу именно об Apache Cassandra: какие ошибки можно совершить при ее использовании, на что стоит обратить внимание и чем лучше не пренебрегать.

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 1

Сassandra для бедных — пускаем в ход HDD

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 4.9K

Cost reduction - весьма популярное направление, особенно в дни кризиса IT. Вполне естественным является желание оптимизации расходов на “железо” с минимальной потерей производительности, ведь чем больше данных хранится, тем больше может оказаться профит. В данной статье описан кейс эксплуатации Cassandra на HDD дисках как один из способов оптимизации, имеющей смысл при достаточно большом объеме данных.

Читать далее
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 2

Репликация сегментов в OpenSearch

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 1.8K


Многие наши коллеги всё больше смотрят в сторону OpenSearch, который постепенно обрастает всё новыми и новыми функциями. В телеграм-канале мы уже публиковали пост с описанием обновлений в версии 2.7, среди которых есть репликация сегментов (есть ещё и поиск по снэпшотам, но о нём как-нибудь в другой раз). Репликация сегментов — это альтернатива репликации документов. При репликации документов все ноды-реплики выполняют ту же операцию индексирования, что и основная нода. При репликации сегментов только основная нода выполняет операцию индексирования, создавая файлы сегментов, которые далее копируются на каждую ноду-реплику. При такой схеме репликации нагрузка по индексированию ложится только на основную ноду, освобождая ресурсы на репликах для использования под другие операции. В этом посте мы расскажем о концепции репликации сегментов, преимуществах и недостатках по сравнению с репликацией документов. Велком ту подкат.
Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 0

Вклад авторов