Hacker News Digest

Тег: #mysql

Постов: 11

SQLite concurrency and why you should care about it (jellyfin.org) 🔥 Горячее 💬 Длинная дискуссия

by HunOL • 01 ноября 2025 г. в 12:59 • 333 points

ОригиналHN

#sqlite#postgresql#mysql#wal#concurrency

Комментарии (153)

  • SQLite не поддерживает параллельную запись; WAL-режим лишь разрешает параллельное чтение, но не пишущие транзакции.
  • Проблема SQLITE_BUSY чаще всего возникает из-за длительных транзакций, которые не закрывают файл, и не из-за реальной конкуренции за доступ.
  • Не стоит забывать, что SQLite — это встроенная СУБД, а не серверная СУБД, и что она не предназначена для высоконагруженных веб-приложений.
  • В отличие от PostgreSQL, MySQL и других серверных СУБД, SQLite не поддерживает параллельную запись, и поэтому не может быть использована в ситуациях, где требуется высокая параллельность.

Parrot – type-safe SQL in Gleam, supports SQlite, PostgreSQL and MySQL (github.com)

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

Библиография использует встроенные возможности Gleam для генерации корректного SQL, избегая распространённых проблем вроде опечаток в именах колонок или несоответствия типов. Это особенно полезно в проектах, где важна строгая статическая проверка и минимальное количество runtime-ошибок.

by TheWiggles • 05 октября 2025 г. в 00:51 • 101 points

ОригиналHN

#gleam#sqlite#postgresql#mysql#sql#type-safety#erlang#sqlc#github

Комментарии (27)

  • Участники положительно оценивают sqlc и его порт для Gleam, отмечая преимущества использования чистого SQL с типобезопасностью.
  • Обсуждаются ограничения SQL и ORM, в частности проблема композиции и динамических запросов, а также сравнение с другими инструментами (Kysely, PRQL, Django ORM).
  • Несколько пользователей спрашивают, что такое Gleam, и получают разъяснения, что это типобезопасный язык для Erlang VM.
  • Поднимается вопрос о кроссплатформенности запросов и поддержке разных СУБД, на который автор отвечает, что это зависит от возможностей sqlc.
  • Сравниваются системы типов Gleam (статическая) и Elixir (gradual), отмечаются их ключевые различия и предпочтения.

Litestream v0.5.0 (fly.io) 🔥 Горячее 💬 Длинная дискуссия

Выпуск Litestream v0.5.0 знаменует переход от простого резервного копирования к эффективному восстановлению на определённый момент времени (PITR). Ключевое нововведение — формат LTX, позаимствованный из проекта LiteFS. Вместо потоковой передачи отдельных страниц базы данных Litestream теперь группирует изменения в рамках транзакций, что значительно ускоряет восстановление после сбоя.

Формат LTX решает проблему "горячих страниц" — например, при частых вставках в таблицу с автоинкрементным ключом, когда изменения концентрируются на ограниченном числе страниц. Раньше Litestream обрабатывал каждую страницу отдельно, что замедляло процесс. Теперь транзакции записываются целиком, сокращая количество операций ввода-вывода и ускоряя восстановление. Это делает SQLite ещё более надёжным решением для полноценных приложений.

by emschwartz • 02 октября 2025 г. в 19:02 • 386 points

ОригиналHN

#litestream#sqlite#s3#pitr#ltx#fly.io#litefs#rsync#postgresql#mysql

Комментарии (174)

  • Пользователи обсуждают сложности развертывания SQLite-приложений на Fly.io, включая проблемы с инициализацией и миграцией баз данных.
  • Litestream получает положительные отзывы за простоту использования, низкую стоимость репликации в S3 и надежность как инструмента для резервного копирования и репликации.
  • Обсуждаются технические детали Litestream: поддержка S3-совместимых хранилищ, условные записи для реализации временных lease и планы по реализации read-replicas через VFS.
  • Участники сравнивают Litestream с другими решениями (LiteFS, rsync, управляемые БД), отмечая его операционную простоту и отсутствие необходимости в отдельном сервере.
  • Поднимаются вопросы о практическом применении SQLite и Litestream: восстановление после сбоев, работа с нестабильным интернетом, целесообразность использования против PostgreSQL/MySQL для разных сценариев.

Show HN: ChartDB Agent – Cursor for DB schema design (app.chartdb.io)

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

Среди ключевых возможностей — автоматическое обновление схем при изменениях в БД, экспорт в форматы PNG или SVG, а также интеграция с инструментами вроде Git для версионного контроля. Практический плюс: визуализация помогает быстро находить связи между таблицами, что ускоряет отладку и оптимизацию запросов.

by guyb3 • 01 октября 2025 г. в 13:38 • 111 points

ОригиналHN

#postgresql#mysql#mongodb#database#erd#sql#llm#schema-design#data-visualization#git

Комментарии (34)

  • Представлен инструмент ChartDB с открытым исходным кодом для проектирования схем баз данных через текстовые промпты с визуализацией в виде ERD-диаграмм.
  • Пользователи отмечают удобный интерфейс и потенциальную пользу для быстрого прототипирования, но критикуют читаемость соединений и отсутствие обсуждения для уточнения требований.
  • Высказаны опасения по поводу стоимости бесплатного использования ИИ, точности генерируемых схем (в т.ч. устаревшая информация о СУБД) и способности инструмента масштабировать решения.
  • Отмечено, что многие ИИ-инструменты и так умеют работать с БД, генерировать SQL и диаграммы, поэтому ценность ChartDB видится в автоматизации и удобстве.
  • Запросы на дополнительные функции: предпросмотр миграций, генерация SQL-запросов под use case, интеграция веб-интерфейса и расширение на проектирование классов.

Atuin Desktop: Runbooks That Run – Now Open Source (blog.atuin.sh)

Atuin Desktop — это инструмент, который объединяет документацию и исполняемые команды в едином пространстве, похожем на документ, но работающем как терминал. Он позволяет создавать и запускать сценарии, запросы к базам данных, HTTP-запросы и даже встраивать графики Prometheus, делая рабочие процессы повторяемыми, совместными и надёжными. Это решает проблему устаревшей документации и разрозненных знаний, которые часто хранятся лишь в памяти или истории команд.

Инструмент теперь полностью открыт под лицензией Apache 2.0 и включает интеграции с Kubernetes, MySQL, Git-совместимые рабочие пространства и возможности совместной работы в реальном времени. Планы развития включают удалённое выполнение, аудит, расширенные блоки и улучшенную интеграцию с облачными провайдерами.

by digdugdirk • 30 сентября 2025 г. в 20:44 • 219 points

ОригиналHN

#atuin#runbooks#kubernetes#mysql#git#yaml#prometheus#apache-2.0#bash#http

Комментарии (67)

  • Пользователи отмечают полезность инструмента для документирования и выполнения команд, особенно для редких или сложных задач администрирования.
  • Обсуждаются аналогичные подходы и инструменты: bash-скрипты, Jupyter Notebooks, org-mode в Emacs, runme.dev, speedrun.cc и Warp Notebooks.
  • Поднимаются вопросы о безопасности, включая риски выполнения деструктивных команд из истории и необходимость подтверждения.
  • Обсуждаются технические аспекты: поддержка shellcheck, формат файлов (YAML), работа с Git, удаленное и параллельное выполнение.
  • Авторы отвечают на вопросы, подчеркивая гибкость подхода, планы по развитию и открытость к обратной связи.

Rails on SQLite: new ways to cause outages (andre.arko.net)

Rails + SQLite: новые способы уронить прод

SQLite встроен в процесс веб-сервера — нет отдельного демона, портов, сокетов; всё хранится в одном файле. Плюс: пропали ошибки подключения к БД. Минус: файл живёт в контейнере, а контейнеры пересоздают, и данные исчезают.

Правило 1: клади БД в персистентное хранилище (EBS, Fly Volumes, …) и включи снапшоты.

Правило 2: веб, кеш, очередь и джобы по умолчанию пишут в тот же файл. Удобно, но воркеры теперь должны видеть этот файл. Запускай воркеры в том же VM, либо разнеси данные по разным БД и настрой database.yml.

Правило 3: SQLite блокирует всю БД на время записи. Параллельные длинные запросы = таймауты. Держи транзакции короткими, используй PRAGMA journal_mode=WAL, synchronous=NORMAL, busy_timeout=5000.

Правило 4: бекапы. sqlite3 db.sqlite3 ".backup backup.sqlite3" — атомарно, без остановки сервиса. Крути каждый час и перед деплоем.

Плюсы:

  • FTS5-индекс из коробки
  • Мегабайты вместо гигабайтов RAM
  • $14/мес на Fly.io при 1 млн запросов
  • Нет Redis, Postgres, S3 — только Rails-контейнер

Итог: SQLite позволяет поднять pet-project за вечер, но требует новых привычек: персистентные диски, WAL, короткие транзакции, общий доступ к файлу. Соблюдай правила — и база не уйдёт в /dev/null.

by ingve • 11 сентября 2025 г. в 18:58 • 173 points

ОригиналHN

#rails#sqlite#postgresql#mysql#fly.io#ebs#fts5#wal#litestream#turbo

Комментарии (55)

  • Автор статьи утверждает, что его сервис «Feed Your Email» возможен только благодаря SQLite, но не объясняет, почему именно SQLite, а не PostgreSQL/MySQL.
  • Многие участники считают SQLite удобным для малонагруженных и внутренних приложений из-за простоты развёртывания и отсутствия отдельного процесса БД.
  • Критики отмечают: при росте нагрузки появляются проблемы с бэкапами, масштабированием, единственным писателем и отказоустойчивостью, смывая преимущества.
  • Часть разработчиков использует обёртки вроде Litestream, Turso или Cloudflare D1, чтобы добавить репликацию и горизонтальное масштабирование к SQLite.
  • В сообществе Rails новый тренд — «по-умолчанию SQLite» для быстрого старта MVP, но опытные пользователи предупреждают о риске «выстрелить себе в ногу» при росте проекта.

Oldest recorded transaction (avi.im)

  • Шутка: глиняная табличка 3100 г до н. э. — «база данных» с 5000-летним аптаймом.
  • Проверил, какие даты принимают MySQL, Postgres, SQLite:
    – MySQL: мин. 1000 г н. э.
    – Postgres/SQLite: 4713 г до н. э. (юлианский календарь).
  • Пример: INSERT … '4713-01-01 BC'::date работает, 4714 г до н. э. — уже ошибка.
  • Вопрос: как хранить ещё более древние даты (например, экспонаты Британского музея)? Текстом, эпохой, кастомным типом?

by avinassh • 06 сентября 2025 г. в 14:34 • 170 points

ОригиналHN

#mysql#postgresql#sqlite#databases#julian-calendar#data-storage

Комментарии (84)

  • Самая ранняя письменность — это не литература, а счёты и квитанции: глиняные таблички фиксируют выдачу зерна и другие транзакции ~3300 г. до н. э.
  • Для музейных дат «около X» нет единого числового стандарта; хранят как текст либо диапазон «start/end», а сортировку и поиск делает прикладной код.
  • PostgreSQL ограничен 4713 до н. э. технически (4-байтный Julian day), но SQLite и кастомные схемы позволяют любые тексты или большие целые.
  • Подавляющее большинство записей погибло: дошедшие таблички — пример survivor bias; цифровые носители вряд ли протянут 5000 лет.
  • Пиво/ферментация упоминаются как возможный первичный двигатель оседлости и учёта задолго до клинописи.

Data engineering and software engineering are converging (clickhouse.com)

Кратко:
Инженеры, создающие realtime-аналитику или AI-функции, нуждаются в инфраструктуре данных с современным developer experience (DX). MooseStack от 514 — open-source DX-слой для ClickHouse.


Слияние дисциплин

Классические хранилища и озёра строились для аналитиков: SQL, BI-дашборды. Теперь же realtime-данные встроены в продукты и AI-функции, а команды разработки обязаны поставлять их так же быстро, как и обычный код.

  • Транзакционные БД (Postgres, MySQL) хороши для разработки, но проваливаются при аналитических нагрузках.
  • Облачные аналитические платформы (Snowflake, BigQuery) удобны для пакетных ETL, но не обеспечивают свежесть данных и sub-second ответов, а DX в них устарел.

UX-разрыв

Пользователи хотят аналитику за миллисекунды. ClickHouse решает задачу: на порядки быстрее Postgres и дешевле Snowflake/Databricks.


DX-разрыв

Разработчики привыкли к локальному циклу «код → тест → CI/CD». В мире данных такого нет: нет локального окружения, медленные итерации, конфликты между data- и software-инженерами.


MooseStack

514 выпустили MooseStack — open-source DX-слой поверх ClickHouse:

  • Git-native, local-first, everything-as-code.
  • Единый язык схем и запросов для всех специалистов.
  • Поддержка CI/CD, preview-окружений, автотестов.

by craneca0 • 29 августа 2025 г. в 18:43 • 80 points

ОригиналHN

#clickhouse#postgresql#mysql#snowflake#bigquery#databricks#terraform#kubernetes#sql#python

Комментарии (50)

  • Сторонники «чистого» инженерного подхода считают, что data engineering изначально был частью software engineering, но позже к нему примешались аналитики, знающие лишь SQL/DBT.
  • В сообществе виден раскол: одни DE пишут Terraform, CI/CD, Spark и k8s, другие ограничиваются ноутбуками, SQL-запросами и no-code-инструментами.
  • Критика Python и SQL как «недостаточно инженерных» языков: динамическая типизация, отсутствие строгих схем и нормального тестирования.
  • Название роли «Data Engineer» стало размытым: HR ищут «писателей SQL», а специалисты просят называть их «Software Engineer, Big Data» или «Platform Engineer».
  • Сильные практики уже давно используют IaC, версионирование, code review и полноценный SDLC, но таких меньшинство.

GNU Artanis – A fast web application framework for Scheme (artanis.dev)

GNU Artanis — первый production-ready веб-фреймворк на Scheme. Лёгкий, быстрый, с поддержкой JSON/XML/SXML, WebSocket, i18n, MySQL/SQLite/PostgreSQL, кэширования, шаблонов и статики.

(use-modules (artanis artanis))
(init-server)
(get "/hello" (λ () "hello world"))
(run #:port 8080)

Скачать

Документация
Официальное руководство

Исходники

История
2013 — рождение на hack-potluck Guile; 2014 — награда «Lisp In Summer Projects»; 2015 — первая стабильная версия и вступление в GNU; 2021 — переход под крыло HardenedLinux.

Контакты
Почта: artanis@gnu.org
GitLab: https://gitlab.com/hardenedlinux/artanis

by smartmic • 26 августа 2025 г. в 20:06 • 243 points

ОригиналHN

#scheme#gnu#websockets#mysql#sqlite#postgresql#json#xml

Комментарии (65)

  • Участники обсуждают фреймворк Artanis для Guile Scheme: кто-то хвалит простоту синтаксиса и встроенный веб-сервер, кто-то жалуется на отсутствие CSRF, 404-ссылок и слабое tooling.
  • Почему Guile не стал популярен? Недостаток LSP, отладки, туториалов и узкая аудитория.
  • Название «Artanis» — отсылка к Sinatra (Ruby) и палиндрому «Sinatra» задом-наперёд.
  • Сайт без JS и шрифтов выглядит чисто, но кто-то считает текст слишком крупным и структуру странной.
  • По безопасности: при грамотных разработчиках Scheme-системы могут быть безопаснее «обычных».

Show HN: ChartDB Cloud – Visualize and Share Database Diagrams (app.chartdb.io)

ChartDB — инструмент для интерактивной визуализации схем БД.
Поддерживает PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, CockroachDB, MongoDB.

Ключевые возможности

  • Импорт схемы одним кликом из любой поддерживаемой СУБД.
  • Авто-раскладка таблиц и связей; ручное перемещение.
  • Экспорт в форматы PNG, SVG, PDF.
  • Режим «одной страницы» для быстрого просмотра.
  • Поиск и фильтрация по названию таблицы или столбца.
  • Тёмная и светлая темы.

Быстрый старт

  1. Открыть chartdb.io.
  2. Нажать «Import from DB», вставить строку подключения или SQL-дамп.
  3. Получить готовую схему за секунды.

by Jonathanfishner • 21 августа 2025 г. в 13:01 • 82 points

ОригиналHN

#postgresql#mysql#mariadb#sqlserver#sqlite#cockroachdb#mongodb#database#visualization#erd

Комментарии (12)

  • Некоторые команды продолжают рисовать ERD и документировать именно схему БД, особенно при проектировании новых фич и онбординге.
  • Другие полагаются на абстракции вроде ORM/DDD и считают диаграммы избыточными, особенно для типовых SaaS с generic auth и payment.
  • Инструменты вроде dbdiagram.io, Lucidchart и ChartDB спросом пользуются, но часто ломаются при >15 таблиц или требуют изучения нового UI.
  • Сторонники диаграмм аргументируют: «базы живут дольше абстракций», а отсутствие документации — потеря для индустрии.

450× Faster Joins with Index Condition Pushdown (readyset.io)

Проблема
При промахе кэша Readyset выполняет запрос с нуля. Для «расколотых» соединений (предикаты есть и в WHERE, и в ON) старый hash-join читал обе таблицы полностью:

  • фильтр по email возвращал 1 строку users;
  • фильтр по status='SHIPPED' — 99 % таблицы orders.
    Материализовав миллионы лишних строк, система строила хэш-таблицу и лишь потом отбрасывала ненужное. Профилирование показало: 30 % времени уходило на распаковку RocksDB, затем на 10 K IOPS и 81 % загрузки NVMe.

Решение: Index Condition Pushdown
Новый план использует индексы и «проталкивает» условия вниз:

  1. Сначала выбираем 1 строку users по индексу email.
  2. Для каждой найденной u.id делаем индексный lookup в orders с условием user_id = u.id AND status='SHIPPED'.
    Так читаются только нужные строки orders, объём I/O падает на порядки, а хэш-таблица больше не строится.

Результат
ICP устраняет лишнее чтение и распаковку, превращая холодный straddled-join из многомиллисекундной операции в субмиллисекундную.

by marceloaltmann • 19 августа 2025 г. в 15:43 • 112 points

ОригиналHN

#index-condition-pushdown#query-optimization#database-performance#rocksdb#mysql#postgresql#readyset#hash-join#sql

Комментарии (49)

  • Пользователи жалуются, что планировщик запросов не продавливает фильтры к индексам, и считают это багом производительности.
  • Многие разработчики вынуждены сами заниматься индексами, партиционированием и анализом EXPLAIN, потому что DBA лишь «держат свет».
  • В RonDB и ReadySet показали примеры «pushdown-joins» и Index Condition Pushdown, дав ускорение до 450×.
  • ReadySet описывают как «кеш-прокси» поверх MySQL/Postgres, который по логу репликации инкрементально обновляет материализованные представления.
  • Часть участников считает, что современные оптимизаторы должны делать такие оптимизации автоматически, и не понимает, зачем изобретать велосипед.