Обновить
5.81

MySQL *

Свободная реляционная СУБД

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

Когда существующих решений недостаточно: сложности построения собственных СУБД

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

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

Меня зовут Александр Кленов. Я тимлид разработки Tarantool DB в команде Tarantool. В этой статье я расскажу, почему мы решили добавить в свой продуктовый портфель Tarantool DB и что реализовали в инструменте, а также покажу на примере словарей, почему строить свою СУБД сложно. 

Читать далее

Решаем загадку Джиндоша из Dishonored 2 на SQL перебором с возвратом

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


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

Сегодня мы рассмотрим решение непростой загадки Джиндоша из замечательной игры Dishonored 2 с помощью SQL.
SQL Может Многое!

Репликация: создание кластера, подключение, изменения настроек таблицы в кластере

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

Привет, я Майк.

Недавно я начал работать в компании Manticore на должности Developer Advocate. Я не совсем далёк от ИТ, но сейчас активно осваиваю современные технологии. В этом блоге я буду делиться своим опытом и тем, что узнаю о Manticore. Я планирую вести дневник, где буду рассказывать, что такое Manticore и как с ним работать. Давайте вместе разбираться, как все устроено, выявлять проблемы и взаимодействовать с разработчиками.

Если вам интересно изучать Manticore вместе со мной, я буду держать вас в курсе в:

Читать далее

Reverse engineering конкурсных списков поступления на бюджет в вузы России

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

Сегодня, 3 августа 2024 года, был последний день подачи документов в вузы России на бюджет.

Ситуация нервная: слишком много факторов.

Мать-недопрограммист не дождалась приказа

Ещё раз о том, какого размера должны быть тесты

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

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

Читать далее

Стоит ли бояться serializable-транзакций больше, чем труднонаходимых багов?

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

В базах данных транзакции обладают свойствами ACID, где «I» означает изоляцию транзакций при одновременном (concurrent) выполнении.

Наличие (serializable) изоляции гарантирует, что результат транзакций, выполненных параллельно, будет таким же, как если бы они были выполнены в некотором последовательном порядке.

Сериализация выполнения транзакций не бесплатна с точки зрения производительности.

Многие СУБД поддерживают более слабые уровни изоляции, оставляя за разработчиком выбор подходящего. В монолитных СУБД более слабый уровень изоляции часто используется по умолчанию. Так, в PostgreSQL и MySQL это «read committed». В распределённых СУБД чаще по умолчанию более строгие уровни: «repeatable read» в YugabyteDB и TiDB, «serializable» в CockroachDB и YDB.

Слабые уровни изоляции могут быть причиной очень труднонаходимых багов. Причём эти баги могут вызвать уязвимости в безопасности.

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

Читать далее

Как MariaDB поломали экспорт (ERROR at line 1: Unknown command "-") или 17 лет небезопасному MySQL клиенту

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

Как MariaDB поломала экспорт файлов MySQL в новых версиях и с чем это связано.

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

Еще один вектор атаки на ваши сервера, который надо учитывать и знать о его существовании.

Читаем о том, что случилось с MariaDB

Инструкция: как перенести сайт WordPress с MySQL 5.7 на MySQL 8

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

Недавно WordPress при проверке здоровья сайта начал рекомендовать использование версии MySQL 8. В этой статье расскажем, как перенести сайт на WordPress на MySQL 8 на примере нашего хостинга. Спойлер: это намного легче, чем может показаться.

Читать далее

Почему после MySQL мне неудобен PostgreSQL

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

DISCLAIMER: посыл этой статьи не в том, что «PostgreSQL — гавно, не используйте PostgreSQL». Посыл в следующем: «Может быть я чего-то не понимаю в этой жизни? Пожалуйста, объясните, может быть я изменю своё мнение!»

Читать далее

Не только ORM (NoORM)

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

Привет, Хабр! Хочу поделиться самодельной питонской библиотекой, существенно упрощающей взаимодествие с базами данных.

«Написать свой собственный ORM» – неплохая задачка для тех, кто решил поглубже изучить некоторые языковые особенности Питона, но в данном случае задача была другая – написать не ORM, а не-ORM. Механизм, упорядочивающий и облегчающий доступ к базам данных, но который сам по себе ни в коей мере не является ORM-ом.

Читать далее

DBaaS в Kubernetes: падения и взлеты

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

Привет, Хабр! 

Мы — команда Рег.ру, направление облачных сервисов, — однажды решили создать сервис управляемых баз данных, он же DBaaS. Раскрываем технические аспекты DBaaS: на каких технологиях основана услуга, какие инструменты использованы, с какими трудностями мы столкнулись при создании и запуске в продакшн. Будет интересно!

Читать далее

Анализ рынка акций мировых компаний на брокерской платформе Tinkoff Инвестиции

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

В мире, где цифровые технологии играют все более важную роль в повседневной жизни, рынок ценных бумаг становятся объектом увеличивающегося интереса исследователей, инвесторов, а также экономических и финансовых институтов. Цифровые активы и способы прогнозирования их стоимости быстро привлекают внимание своей децентрализованной природой, возможностью проведения глобальных финансовых транзакций и перспективой защиты от инфляции. Однако, они также характеризуются высокой волатильностью, что делает их предметом повышенного финансового риска. Этот рынок играет ключевую роль в экономике, поскольку предоставляет компаниям доступ к капиталу для финансирования своей деятельности, а также дает инвесторам возможность вложить свои деньги с целью получения прибыли [1, 2].

Платформа Tinkoff Инвестиции — это онлайн-сервис от Tinkoff Bank, который предоставляет клиентам возможность инвестировать в различные финансовые инструменты, включая акции, облигации, фонды, ETF и другие. Широкий выбор активов, удобный интерфейс и наглядная аналитика, и отчетность на платформе делает ее привлекательной для новичков и опытных инвесторов. Онлайн-брокерские компании позволяют инвесторам быстро и легко зарегистрироваться и приступить к торговле [3].

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

Читать далее

Как я решился писать свою текстовую MMORPG игру с открытым миром и фронтом Telegram в 2024 году

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

В одно мгновение мир, который мы знали, рухнул, оставив после себя только воспоминания о былой цивилизации. Теперь, в 2050 году, перед выжившими стоит задача не только сохранить себя, но и восстановить утраченное, шаг за шагом возвращаясь к технологическому прогрессу. Как?

Это история одной текстовой игры написанной программистом любителем с довольно сложными механиками и функционалом...

Читать далее

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

Демо: Поиск на GitHub с помощью Manticore Search

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

Вместо интро

Сегодня мы расскажем о нашем опыте создания своего поиска для репозиториев в GitHub, почти похожее на то, которое там и используется, но немного другое.

Для затравки — посмотрите, что у нас получильнось на нашем репозитории → Демка
Можно проиндексировать и свой, для этого нужно немного подождать завершения процесса индексации → github.manticoresearch.com, а пока идет индексация — добро пожаловать под кат.

Читать далее

Как обойти лимит Telegram API для групп свыше 10,000 участников

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

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

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

Эта инициатива казалась нам многообещающей, однако в процессе реализации мы столкнулись с серьёзным ограничением. При попытке загрузить список пользователей из группы на 13,000 человек, система смогла обработать только 10,000. Это ограничение API Telegram значительно усложнило выполнение задуманного плана, требуя от нас дополнительных технических решений.

Читать далее

Обновлённый ЕМИСС: веб-приложение от непрограммиста

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

Меня зовут Александр, я активно исследую экономические данные, строю регрессии, ML-модели. Данные использую разные: перекрёстные, панельные, временные.
По специфике своей работы часто пользуюсь ЕМИСС. ЕМИСС — это кладезь социально-экономических данных, но и одновременно платформа, которая может довести до головных болей и дергающегося глаза, а то и двух сразу.

Поставим себе, например, задачу выяснить, как влияет Х на У. Возьмём в качестве объектов наблюдения — регионы РФ. И тут нас будут ждать сюрпризы. Как быстро, не вырывая волосы из головы, получить две колонки данных за последний год по субъектам? Мы, конечно, можем использовать VLOOKUP/XLOOKUP в экселе и всё такое. Но нам встретятся обязательно двойняшки (тройняшки): «г. Москва» и «Город Москва столица Российской Федерации город федерального значения»; «Кемеровская область - Кузбасс» и «Кемеровская область — Кузбасс». Да, мелочи, но неприятно бороться с этими исключениями вручную.

Читать далее

Как Uber обслуживает более 40 миллионов чтений в секунду из онлайн-хранилища с помощью встроенного кэша

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

Привет, Хабр! Представляю вам перевод статьи "How Uber Serves Over 40 Million Reads Per Second from Online Storage Using an Integrated Cache" автора Preetham Narayanareddy. Из неё вы узнаете, как в Uber проектировалась система кэширования на основе Redis, с какими сложностями и тонкостями пришлось столкнуться разработчикам, и как в итоге им удалось создать действительно высокопроизводительное решение.

Читать далее

Большая иерархия в SQL запросе + PostgreSQL

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

Сначала запрос адаптирован для работы в PostgreSQL 15.6.

Затем работа запроса проверена на достаточно объемной иерархии - в качестве источника данных использована структура архива jdk-master.zip из OpenJDK 22

Читать далее

Отображение части иерархии в SQL запросе

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

Продолжение статьи, в которой предложено решение задачи визуализации иерархической структуры средствами SQL запросов, на примере MySQL и SQLite

В этой части производится доработка запросов для отображения части иерархии, начиная с конкретных узлов, и анализируются возможные связанные ошибки

Читать далее

Отображение иерархии в SQL запросе

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

В процессе тестирования одного курса по SQL на stepik.org встретилась задача, из которой сочинилась другая, более интересная:

Необходимо с помощью одного SQL запроса с использованием обобщенных табличных выражений отобразить иерархию, в соответствии с иллюстрацией выше

Читать далее