Hacker News Digest

Тег: #sql

Постов: 27

Perfetto: Swiss army knife for Linux client tracing (lalitm.com)

by todsacerdoti • 31 октября 2025 г. в 11:54 • 138 points

ОригиналHN

#perfetto#sql#tracing#performance-analysis

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

  • Perfetto и его функции обсуждаются как мощный инструмент для анализа производительности, включая поддержку SQL-запросов и визуализацию трассировок.
  • Участники делятся опытом использования Perfetto для различных задач, включая генерацию трассировок из SQL-запросов и встроенный в другие инструменты.
  • Обсуждаются ограничения и проблемы, такие как производительность при работе с большими трассировками, и отсутствие встроенной поддержки для встроенного UI в другие инструменты.
  • Участники также обсуждают возможность встроить UI в другие инструменты и обратную связь с командой разработки Perfetto.

SQL Anti-Patterns (datamethods.substack.com) 💬 Длинная дискуссия

by zekrom • 18 октября 2025 г. в 12:56 • 248 points

ОригиналHN

#sql#databases#database-design#sql-joins#sql-views

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

  • Проблема с DISTINCT часто указывает на плохое моделирование данных или непонимание теории множеств.
  • Использование DISTINCT для "исправления" дубликатов часто является симптомом плохой архитектуры БД или неправильного использования JOIN.
  • Создание вьюх на вьюхах может привести к проблемам с производительностью и читаемости кода.
  • Использование CASE WHEN вместо отдельной таблицы для статусов может усложнить поддержку и интернационализацию.
  • Не используйте SELECT * в продакшене; это может сломать код, если схема изменится.

Derek Sivers's database and web apps (github.com)

Репозиторий sivers/sivers представляет собой личную базу данных автора и веб-приложения, которые её используют. Проект демонстрирует подход к созданию персональной информационной системы с открытым исходным кодом.

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

by surprisetalk • 16 октября 2025 г. в 14:27 • 110 points

ОригиналHN

#sql#postgresql#postgrest#supabase#htmx#datastar#web-applications#github#database-systems#open-source

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

  • Сторонники подхода "база данных как единственный источник истины" приводят примеры от 2007 года до сегодняшнего дня, показывая, что идея не нова, но вот вдохновение от неё пришло к Дереку Сиверсу, который в свою очередь вдохновил обсуждение на Hacker News.
  • Обсуждение затрагивает вопросы от "что если вся логика в БД" до "какие ещё нестандартные инструменты могут подхватить эстафету", включая ссылки на PostgREST и Supabase как современные эквиваленты идеи.
  • Участники делятся личным опытом, от 2007 года до сегодняшнего дня, подчеркивая, что подход был популярен в ранних 2000-х и что он до сих пор может быть применим для новых проектов.
  • Поднимается вопрос о том, как и где хранятся шаблоны и как они попадают в ответы сервера, а также обсуждается использование таких инструментов как HTMX или Datastar для гидратации через гипермедиа.
  • В конце концов, обсуждение сводится к тому, что идея остаётся актуальной, и участники выражают надежду, что она может вдохновить следующего поколения разработчиков так же, как это сделал Rich Hickey со своим докладом "Simplicity Matters".

Exploring PostgreSQL 18's new UUIDv7 support (aiven.io) 🔥 Горячее 💬 Длинная дискуссия

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

В статье демонстрируется сравнительный анализ производительности между UUIDv4 и UUIDv7 через создание двух таблиц для "магазина крабов" с использованием Aiven for PostgreSQL. Авторы предоставляют практические примеры кода для создания сервиса и таблиц, а также функцию для вставки случайных данных. Тесты показывают, что UUIDv7 может значительно улучшить производительность операций вставки по сравнению с UUIDv4, особенно при работе с большими объемами данных.

by s4i • 15 октября 2025 г. в 14:40 • 261 points

ОригиналHN

#postgresql#uuidv7#uuidv4#performance#databases#aiven#sql

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

  • UUIDv7 раскрывает время создания записи, что может быть критично для приватности и безопасности, особенно если первичный ключ публично доступен.
  • Эксперты рекомендуют использовать UUIDv7 только для внутренних ключей и выставлять отдельный UUIDv4 как публичный идентификатор.
  • Но в большинстве случаев, когда выбор между UUIDv7 и v4, важно учитывать, что v7 предоставляет лучшую производительность при вставке и сортировке, но требует дополнительных усилий для защиты приватности.

Database Linting and Analysis for PostgreSQL (pglinter.readthedocs.io)

PGLinter — это инструмент для анализа качества базы данных PostgreSQL, который выявляет проблемы с производительностью, безопасностью и стандартизацией. Он работает на основе настраиваемых правил, которые можно включать или отключать, и поддерживает экспорт результатов в стандартном формате SARIF для интеграции с CI/CD.

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

  • Автоматическое выявление проблем: Отсутствующие индексы, неиспользуемые индексы, неправильные настройки безопасности
  • Глубокая интеграция с PostgreSQL: Реализован как расширение, поэтому использует внутренние механизмы СУБД
  • Гибкая настройка: Можно отключать отдельные правила, менять пороги срабатывания
  • Удобство для разработчиков: Встраивается в CI/CD, есть санитизация схемы данных

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

Пользователи могут запускать анализ через SQL: SELECT pglinter.perform_base_check(); или экспортировать результаты в SARif для интеграции с GitHub Actions, Jenkins и другими инструментами.

Проект активно развивается, с планами по добавлению правил, связанных с безопасностью, и расширением покрытия различных аспектов базы данных. Конечная цель — сделать PGLinter таким же обязательным в проекте, как ESLint для JavaScript или RuboCop для Ruby.

by fljdin • 08 октября 2025 г. в 08:09 • 95 points

ОригиналHN

#postgresql#sarif#cicd#database#linting#performance#security#sql

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

  • Инструмент анализа БД pg_linter представляет собой расширение PostgreSQL, что вызывает вопросы о необходимости именно расширения, а не отдельного инструмента, который можно было бы запускать против любой БД.
  • Участники обсуждения отмечают, что в 2025 году принцип наименьших привилегий в контексте безопасности и стабильности системы особенно важен, и устанавливать сторонние расширения в продакшен средах может быть неприемлемо.
  • Некоторые участники высказывают мнение, что вместо расширения мог бы подойти и инструмент, который мог бы анализировать дамп базы данных либо имитировать схему в контейнере.
  • Также обсуждается, что правила вроде B006 (таблицы с именами в верхнем регистре) могут быть неуместны в контексте конкретной ORM или обстоятельств, и что некоторые правила могут быть неприменимы к специфическим ситуациям, таким как TimescaleDB.

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), отмечаются их ключевые различия и предпочтения.

Which table format do LLMs understand best? (improvingagents.com)

Эксперимент показал, что формат данных существенно влияет на точность понимания таблиц LLM. Лучший результат показал Markdown-KV (key-value пары в markdown) с точностью 60,7%, но он потребовал в 2,7 раза больше токенов, чем самый экономный CSV. XML и INI также показали высокую точность (56% и 55,7%), тогда как CSV и JSONL оказались наихудшими — около 44%. Это указывает на возможность улучшения RAG-пайплайнов простой сменой формата данных, хотя эффективность часто требует компромисса с количеством токенов.

by oidar • 03 октября 2025 г. в 02:59 • 181 points

ОригиналHN

#markdown#csv#jsonl#xml#ini#python#sql#llm#gpt-4

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

  • Результаты тестирования GPT-4.1-nano показали, что точность извлечения данных из таблиц варьируется от 40% до 60% в зависимости от формата, при этом Markdown-KV показал наилучший результат.
  • Многие участники раскритиковали методологию исследования, указав на использование только одной, слабой модели (GPT-4.1-nano) и недостаточный размер данных для оценки влияния контекстного окна.
  • Было высказано сомнение в практической целесообразности использования LLM для обработки табличных данных, учитывая доступность более точных и эффективных традиционных инструментов (например, Python-скриптов, SQL).
  • В качестве альтернативы предложены агентные подходы, где LLM генерирует код (например, SQL-запросы или функции) для последующего выполнения, что показало высокую эффективность в реальных задачах.
  • Обсуждались потенциально более эффективные форматы данных (XML с короткими тегами, TOML, KSON) и необходимость тестирования на более мощных моделях (GPT-5, Claude, Gemini) для получения репрезентативных результатов.

The RAG Obituary: Killed by agents, buried by context windows (nicolasbustamante.com)

RAG-архитектура, доминировавшая в AI последние три года, уступает место новым подходам. Ранние модели вроде GPT-3.5 ограничивались 4–8 тыс. токенов, что делало невозможной работу с объёмными документами — например, отчёт SEC 10-K содержит ~51 тыс. токенов. RAG решал это через разбиение текста на фрагменты (чанки) и поиск релевантных частей, но даже продвинутые методы чанкинга не спасали от потери контекста: финансовые таблицы, сноски и связи между разделами разрушались.

Современные модели с контекстом в миллионы токенов (например, Gemini 1.5) и агентные архитектуры делают RAG избыточным. Зачем извлекать фрагменты, если можно загрузить весь документ целиком? Это устраняет проблемы чанкинга, эмбеддингов и повторного ранжирования. Ключевой вывод: эра компромиссов между точностью и контекстом заканчивается — будущее за системами, работающими с полными данными без промежуточных шагов.

by nbstme • 01 октября 2025 г. в 16:51 • 226 points

ОригиналHN

#rag#llm#gemini#gpt-3.5#bm25#grep#sql#api#context-window#embedding

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

  • Участники критикуют автора за чрезмерное обобщение: утверждение о "смерти RAG" основано на узком примере поиска в коде и не учитывает масштабируемость и другие сложные use-case'ы (например, миллионы документов в распределенных системах).
  • Подчеркивается, что RAG — это общий паттерн (извлечение информации + обогащение контекста), а не только векторный поиск; grep, SQL, API-вызовы или использование агента с инструментами — это тоже формы RAG.
  • Отмечается, что агентный поиск (с использованием инструментов вроде grep, BM25 и др.) может быть мощнее классического RAG, но он медленнее, дороже и сложнее из-за множественных вызовов функций.
  • Указывается, что большие контекстные окна LLM позволяют им читать целые файлы, что меняет workflow и снижает необходимость в сложных пайплайнах чанкинга и эмбеддингов.
  • Многие видят иронию в том, что автор называет RAG "кошмаром edge-кейсов", в то время как агентный подход с инструментами вроде grep introduces свои сложности (производительность, безопасность, детерминизм).

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, интеграция веб-интерфейса и расширение на проектирование классов.

TigerBeetle is a most interesting database (amplifypartners.com) 🔥 Горячее 💬 Длинная дискуссия

TigerBeetle — это финансовый транзакционный движок, построенный на принципах, противоположных общепринятым: медленная разработка кода, детерминированное симуляционное тестирование и нулевые зависимости. Вместо SQL он использует примитивы дебета и кредита, что соответствует изначальной цели транзакционных систем — обеспечению бизнес-операций, как описал ещё Джим Грей в 1985 году.

Традиционные SQL-базы требуют 10–20 запросов для обработки одной финансовой транзакции, создавая узкие места, особенно при работе с «горячими» счетами. TigerBeetle, написанный на Zig, предлагает распределённую архитектуру по умолчанию, статическое выделение памяти и assertions в продакшене. Это ответ на растущие потребности в мгновенных платежах и реальном биллинге, где скорость и надёжность критичны.

by todsacerdoti • 01 октября 2025 г. в 11:33 • 251 points

ОригиналHN

#tigerbeetle#zig#sql#financial-transactions#cloudflare-workers#foundationdb

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

  • Участники обсуждают технические особенности TigerBeetle, включая его специализацию на финансовых операциях, детерминированное тестирование и минималистичный подход к зависимостям.
  • Высказываются критические замечания: отсутствие поддержки многопоточности для масштабирования, проблемы с аутентификацией и совместимостью с облачными платформами, такими как Cloudflare Workers.
  • Поднимается вопрос о потенциальной предвзятости статьи, так как её автор является инвестором проекта.
  • Отмечается, что традиционные SQL-базы данных по-прежнему эффективно справляются с большинством задач, несмотря на возраст.
  • Обсуждаются возможные аналоги TigerBeetle, такие как FoundationDB, и его применимость за пределами финансового сектора.

Subtleties of SQLite Indexes (emschwartz.me)

SQLite использует составные индексы слева направо, без пропусков, останавливаясь на первом диапазонном условии. Например, если индекс включает столбцы A, B, C, а запрос содержит A BETWEEN x AND y AND B = z, оптимизатор сможет использовать только A для фильтрации по диапазону, затем просканирует все подходящие строки для B, игнорируя C. Это объясняет, почему добавление отдельных индексов на каждый столбец бесполезно — SQLite редко объединяет их.

Ключевой вывод: порядок столбцов в индексе критичен. Первым должен идти самый селективный столбец, но если на нём используется диапазон (например, BETWEEN или <=), последующие столбцы в индексе не будут эффективно фильтроваться. Для запросов с несколькими условиями лучше создать индекс, где диапазонные условия стоят последними, чтобы максимизировать использование индекса.

by emschwartz • 29 сентября 2025 г. в 15:54 • 117 points

ОригиналHN

#sqlite#indexes#databases#sql#query-optimization#database-design

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

  • Критика статьи за отсутствие технической глубины и общие заблуждения о работе индексов, не специфичных для SQLite.
  • Обсуждение ментальных моделей индексов как вложенных карт или отсортированных списков, объясняющих важность порядка колонок и ограничения диапазонных запросов.
  • Замечания о простоте планировщика запросов SQLite по сравнению с другими СУБД, но признание его адекватности для базовых сценариев.
  • Рекомендации по использованию официальной документации SQLite и инструментов вроде .expert для анализа индексов.
  • Предостережения против автоматического добавления индексов из-за затрат на дисковое пространство и замедления записи.

A SQL Heuristic: ORs Are Expensive (ethanseal.com)

Оператор OR в SQL-запросах может быть неожиданно дорогим из-за сложностей планирования запросов. Например, запрос с OR для двух столбцов с индексами может выполняться более 100 мс на миллионе записей, в то время как эквивалентный запрос с использованием AND и подзапросов сокращает время до менее 1 мс. Это происходит потому, что оптимизатору сложно эффективно объединять результаты по индексам для условий OR, особенно при наличии дополнительных фильтров или сортировок.

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

by ethanseal • 29 сентября 2025 г. в 13:29 • 147 points

ОригиналHN

#sql#query-optimization#database-performance#indexing#orm#mongodb#machine-learning

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

  • Обсуждаются проблемы производительности SQL-запросов с оператором OR, особенно при использовании предикатов по разным колонкам, и предлагается ручная оптимизация через переписывание в UNION ALL.
  • Поднимается вопрос о сложности работы оптимизатора запросов, который может неправильно оценить количество строк из-за устаревшей статистики, что приводит к резкому росту сложности выполнения.
  • Упоминаются различные техники индексирования (например, ESR для MongoDB) и важность правильного проектирования таблиц и индексов для избежания проблем с производительностью.
  • Отмечается, что ORM часто генерируют неоптимальные запросы, и подчеркивается необходимость ручной проверки и настройки SQL, особенно в высоконагруженных системах.
  • Обсуждается возможность применения машинного обучения и расширенной статистики в оптимизаторах запросов для улучшения оценки кардинальности и выбора более эффективных планов выполнения.

What’s New in PostgreSQL 18 – a Developer’s Perspective (bytebase.com)

PostgreSQL 18 добавляет нативную поддержку UUID v7 через функцию uuidv7(), что позволяет использовать UUID в качестве первичных ключей без потери производительности благодаря их последовательной природе. Это устраняет необходимость в сторонних расширениях или реализации генерации на уровне приложения.

Также введены VIRTUAL generated columns — теперь вычисляемые столбцы по умолчанию генерируются при чтении, а не записи, что экономит место на диске и избегает перезаписи таблиц при их добавлении. Эти изменения упрощают разработку, делая работу с базой данных более гибкой и эффективной.

by datelligence • 28 сентября 2025 г. в 15:27 • 91 points

ОригиналHN

#postgresql#uuid#databases#sql#performance#data-modeling

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

  • Участники обсуждают преимущества вычисляемых столбцов в базах данных, отмечая их полезность для миграций схем и единообразия логики между разными клиентами.
  • Поднимается вопрос о производительности: выполнение вычислений на стороне БД может быть эффективнее, чем в клиентских приложениях, особенно при использовании индексов.
  • Высказываются опасения о возможном злоупотреблении этой функцией и усложнении схемы, но признаётся, что иногда это единственное решение.
  • Упоминается конкретный пример использования для преобразования временных зон, чтобы упростить запросы.
  • Обсуждение начинается с упоминания функции pg_get_acl() и сложности составления запросов для проверки привилегий.

Delete FROM users WHERE location = 'Iran'; (gist.github.com) 🔥 Горячее 💬 Длинная дискуссия

Иранский разработчик делится опытом блокировок из-за санкций против страны. Microsoft удалила его приложение EyesGuard из магазина без объяснений, стерев аккаунт и отзывы пользователей. Notion полностью очистил его данные, ответив в поддержке, что услуги недоступны для резидентов Ирана из-за ограничений.

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

by avestura • 23 сентября 2025 г. в 05:30 • 760 points

ОригиналHN

#sanctions#digital-rights#privacy#microsoft#notion#sql#iran#github

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

  • Участники обсуждают негативное влияние санкций на обычных граждан Ирана, блокировку сервисов и цифровую изоляцию, отмечая, что санкции вредят населению, а не правящим elites.
  • Поднимается тема двойных стандартов: пользователи критикуют тенденцию обвинять народы "стран-изгоев" в действиях их правительств, в то время как действия западных правительств часто отделяются от ответственности их граждан.
  • Высказываются опасения по поводу централизации цифровой инфраструктуры в руках США, что дает им возможность в одностороннем порядке определять, кто может пользоваться услугами, и риски такой модели для пользователей из недружественных стран.
  • Обсуждается эффективность санкций: многие участники сомневаются, что санкции достигают заявленных целей по изменению политики правительств, а вместо этого лишь укрепляют режимы и усугубляют положение населения.
  • Отмечается сложность ситуации для владельцев бизнесов, которые вынуждены блокировать пользователей из-под санкций из-за юридических рисков и штрафов, даже если они не согласны с такой политикой.

Building a DOOM-like multiplayer shooter in pure SQL (cedardb.com)

## DOOMQL: шутер в чистом SQL

**Идея**  
- Всё состояние — в таблицах CedarDB  
- Картинка = стек VIEW с трассировкой лучей  
- Цикл — bash-скрипт, 30 FPS: `psql < game.sql`  
- Клиент — 150 строк Python: читает клавиши, SELECT’ит кадр  

**Схема (сокращённо)**  
```sql
config( move, turn, ammo_max … );  
map(x,y,tile);  
players(id,hp,ammo…);  
inputs(player_id,action);  
mobs(id,x,y,angle,type);  
sprites(id,texture,offset);

Рендер

  1. rays — лучи от игрока, столкновения со стенами
  2. walls — высота линии = 1 / distance
  3. sprites — проекция по x, z-order
  4. frame — UNION walls+sprites, строка = пиксель
  5. hud — здоровье, ammo, миникарта в ASCII

Мультиплеер

-- добавить игрока  
INSERT INTO players VALUES(:id);  
-- чужие движения  
SELECT * FROM players WHERE id != :me;

Производительность

  • 640×480 ≈ 30 кадр/с на ноутбуке
  • CedarDB распараллеливает лучи между ядрами

Читерство

UPDATE players SET hp=100, ammo=99 WHERE id=my_id;

Вывод
База = готовый игровой сервер: транзакции дают согласованность, а SQL — ещё и консоль читов.

by lvogel • 09 сентября 2025 г. в 15:12 • 228 points

ОригиналHN

#sql#cedardb#postgresql#raycasting#multiplayer#gaming#python#bash

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

  • Кто-то запустил мультиплеерный «Дум» на чистом SQL (CedarDB), и это вызвало волну «Krieger, ты с ума сошёл!»
  • Половина комментаторов спорит: это всё-таки Doom или всё же Wolfenstein 3D без текстур
  • Автор признаётся, что вдохновился DuckDB-DOOM и просто называет любой 2.5D-шутер «думоподобным»
  • Кто-то видит в проекте хитрую рекламу CedarDB (PostgreSQL-совместимый HTAP), другие – новую игру в «а тьюринг-полно ли это?»
  • Участники сравнивают с ASCII-Doom, pg_doom и мечтают о полноценной MMO, целиком живущей в базе данных

Using Emacs Org-Mode With Databases: A getting-started guide (gitlab.com)

  • Репо: шаблон для хранения и анализа данных в Org-mode
  • Коммиты: 8, веток: 1, тегов: 0
  • Файл: README.org

by adityaathalye • 08 сентября 2025 г. в 19:39 • 114 points

ОригиналHN

#emacs#org-mode#sql#postgresql#tramp#latex#spacemacs#gitlab#org-babel

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

  • Пользователи делятся лайфхаками: org-babel + TRAMP = SQL-запросы на удалённых серверах прямо из Emacs.
  • «Бедный SQL-workbench»: писать запросы в .org, вывод писать в /tmp/query-result.org, смотреть результат в соседнем буфере.
  • Секьюрити: пароли прячем в ~/.pgpass или PGPASSFILE, чтобы не светить их в org-файле.
  • Org-mode превращает студенческие шаблоны в красивые PDF (LaTeX), преподаватели думают, что ты TeX-гений.
  • Кто пришёл из Vim — советуют Spacemacs как мостик; кто хочет шарить календарь с не-технической половиной — ищут синхронизацию.

SQLite's Use of Tcl (2017) (tcl-lang.org)

SQLite начинался как TCL-расширение и до сих пор носит его отпечаток: гибкая типизация, синтаксис $var в SQL и единственный адаптер внутри ядра — tclsqlite.c. Сегодня ядро на чистом C и работает без TCL, но вся разработка и тестирование держится на нём: 90 % кода тестов на TCL, генерация сборок, документация и релизы полностью автоматизированы скриптами makefile.tcl.

by ripe • 07 сентября 2025 г. в 15:03 • 101 points

ОригиналHN

#tcl#sqlite#c#fossil#end-to-end-encryption#makefile#sql

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

  • Команда SQLite общается в приватном чате на собственном Tcl/Tk-скрипте (~1000 строк), который работает и как клиент, и как сервер.
  • С 2021 г. основное общение перешло в встроенный Fossil-чат: он E2E-шифрован и доступен из любого браузера.
  • SQLite сохраняет Tcl-наследие: sqlite3_analyzer — это тоже Tcl-программа, упакованная в С-обёртку.
  • Подстановка $uid в SQL безопасна: токен распознаётся парсером SQLite, а не «eval»-ится Tcl.
  • Участники защищают выбор Tcl: он компактен, стабилен и удобно встраивается в С, что важнее модных языков.

SQL needed structure (scattered-thoughts.net)

  • Данные на странице IMDB иерархические: фильм → режиссёр, жанры, актёры → персонажи.
  • Иерархия двунаправленная: фильм→актеры и актер→фильмы.
  • Реляционная БД хранит всё в плоских таблицах; при выводе строим нужную иерархию.
  • Ручная сборка — утомительна, это «объектно-реляционное несоответствие».

SQL не умеет выдавать структуру
Цель: JSON вида

{"title":"Baby Driver","director":["Edgar Wright"],"writer":["Edgar Wright"],
 "genres":["Action","Crime","Drama"],
 "actors":[{"name":"Ansel Elgort","characters":["Baby"]}, …]}

Пошаговые запросы:

-- название
SELECT primaryTitle FROM title WHERE tconst='tt3890160';

-- режиссёры
SELECT p.primaryName
FROM title t
JOIN principal pr ON t.tconst=pr.tconst
JOIN person   p  ON pr.nconst=p.nconst
WHERE t.tconst='tt3890160' AND pr.category='director';

-- сценаристы
... AND pr.category='writer';

-- актёры
SELECT p.nconst, p.primaryName
FROM title t
JOIN principal pr ON t.tconst=pr.tconst
JOIN person   p  ON pr.nconst=p.nconst
WHERE t.tconst='tt3890160' AND pr.category='actor';

-- персонажи
SELECT pc.nconst, pc.character
FROM title t
JOIN principal pr          ON t.tconst=pr.tconst
JOIN principal_character pc ON pr.nconst=pc.nconst
WHERE t.tconst='tt3890160';

Попытка объединить всё в один запрос даёт декартово произведение (режиссёры×сценаристы) и пропуск записей при отсутствии одной из ролей. Поэтому приходится делать множество отдельных запросов и собирать итоговую структуру на клиенте.

by todsacerdoti • 05 сентября 2025 г. в 06:43 • 94 points

ОригиналHN

#sql#json#postgresql#object-relational-impedance-mismatch#relational-databases#hierarchical-data#mongodb#graphql#orm#nosql

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

  • Обсуждение крутится вокруг «объектно-реляционного несоответствия»: SQL хорошо хранит нормализованные данные, но плохо отдаёт их иерархически.
  • Многие считают, что виноват сам язык: нет встроенных вложенных отношений, агрегация в JSON делается громоздко, JOIN-ы приходится «переделывать» в коде.
  • Часть участников предлагает решать задачу внутри СУБД: Postgres-функции json_agg, LATERAL-подзапросы, денормализованные VIEW и «JSON-проекции».
  • Другие уверены, что проблема надумана: деревья в SQL вполне строятся (adjacency list, nested sets, closure table), просто нужно знать приёмы; ORM и NoSQL лишь откладывают боль.
  • Упоминаются альтернативные пути: GraphQL-слой поверх SQL, графовые СУБД, документные хранилища (MongoDB), event-sourcing с CQRS, но каждый имеет свои trade-off.

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, но таких меньшинство.

SQL Design Patterns (2010) (vadimtropashko.wordpress.com)

  • Счёт (32 стр.)
  • Генераторы целых (24 стр.)
  • Экзотические операторы (40 стр.)
  • Ограничения (19 стр.)
  • Деревья (39 стр.)
  • Графы (41 стр.)

Комментарии

  • Joe Celko: деление использую часто для анализа «корзин» продаж.
  • Михаил: спасибо за книгу! В ссылке на 2-ю главу лишняя «f».
  • AntC: UNION CORRESPONDING = внутреннее объединение реляционной алгебры, обратное Nat Join.
  • Vadim: UNION CORRESPONDING не знал — спасибо!
  • Dave: в примере из главы 1 скалярный подзапрос возвращает 0, хотя должен быть предшественник.

by mci • 27 августа 2025 г. в 04:59 • 138 points

ОригиналHN

#sql#relational-algebra#cte#row-number#union#join#distinct#subquery

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

  • Старые приёмы уступают место ROW_NUMBER() и CTE, убирая декартово произведение.
  • Кто-то советует думать о структуре данных, а не о SQL, другие считают это плохим советом: производительность требует учёта конкретного диалекта и индексов.
  • DISTINCT часто воспринимается как «запах кода» — его злоупотребляют вместо правильных JOIN-ов.
  • SQL всё же красив и компактен, особенно с макросами, но его «декларативность» не освобождает от понимания плана запроса.
  • Разные СУБД имеют синтаксические нюансы (Oracle vs ANSI), что усложняет переносимость.

Show HN: Base, an SQLite database editor for macOS (menial.co.uk) 🔥 Горячее 💬 Длинная дискуссия

Base — компактный и мощный редактор SQLite для macOS.

Скачать бесплатно | Купить

Возможности

  • Инспектор схем
    Быстро просматривайте структуру таблиц, типы столбцов и связи без SQL.

  • Визуальный редактор таблиц
    Создавайте и изменяйте таблицы мышью, без CREATE/ALTER.

  • Браузер данных
    Просматривайте, фильтруйте и правьте записи прямо в таблице.

  • SQL-редактор
    Пишите запросы с подсветкой синтаксиса, автодополнением и сохранением сниппетов.

  • Импорт/Экспорт
    Загружайте CSV и SQL-дампы; выгружайте в CSV, SQL, JSON и Excel.

Системные требования

macOS 15 Sequoia и выше.
Бесплатная версия ограничена; полная — единоразовая покупка.

Документация | Контакты

by __bb • 25 августа 2025 г. в 14:17 • 648 points

ОригиналHN

#sqlite#macos#database#csv#json#sql#excel#duckdb

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

  • Пользователи удивлены, что Base существует уже 15 лет, но плохо заметен в поиске.
  • Хвалят «ремесленный» подход: маленькая команда, узкая задача, высокое качество.
  • Часто сравнивают с TablePlus, Postico и sqlitebrowser, отмечая превосходство в «родном» macOS-UX.
  • Просят добавить DuckDB, UUID, автозагрузку расширений, FK по умолчанию и диаграммы схемы.
  • Покупатели благодарны за возможность покупки вне Mac App Store и за льготную цену.

The two versions of Parquet (jeronimo.dev)

Две версии Parquet

DuckDB недавно описали, как SQL-движки, не реализовав полностью спецификацию Parquet, тормозят её развитие. То же происходит в экосистеме: после выхода моей библиотеки Carpet я включил v2 по умолчанию, но быстро откатил изменение — устаревший Pandas не читал такие файлы.

Почему v2 не внедрён

Спецификация готова, но нет согласия, какие именно фичи считать «ядром» v2. Обсуждение в apache/parquet-format длится четвёртый год. Смешиваются два независимых направления:

  • новые кодировки (RLE_DICTIONARY, DELTA_BYTE_ARRAY) — ломают только столбец;
  • новая структура страниц (Data Page V2) — ломает весь файл.

Логические типы (например, VARIANT) не привязаны к версии формата.

Альтернативы

В ML-среде Parquet и ORC стали тесны, поэтому появились форматы Nimble (Facebook) и LV2 (LanceDB), но в data-engineering Parquet остаётся королём.

Производительность v2

Достаточно выставить WriterVersion.PARQUET_2_0.

Датасет Алгоритм v1, МБ v2, МБ Δ
Италия без сжатия 564 355 –37 %
Италия SNAPPY 220 198 –10 %
NYC без сжатия 760 511 –33 %
NYC SNAPPY 542 480 –11 %

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

by tanelpoder • 21 августа 2025 г. в 09:34 • 193 points

ОригиналHN

#parquet#duckdb#pandas#apache#sql#compression#dataformats#apache-spark#delta-lake#iceberg

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

  • Parquet разделён на две версии: v2 экономит место и ускоряет чтение, но экосистема (Spark, Iceberg, Delta Lake и др.) всё ещё в основном на v1.
  • Справочная реализация — гигантская Java-библиотека с 74 000 строк кода на каждую комбинацию кодировки, что вызывает сомнения в оптимальности.
  • Совместимость между библиотеками (PyArrow, Fastparquet, Spark) долго была проблемой, как и разные версии Scala в Spark.
  • Даже простые оптимизации (мета-данные о сортировке) фактически не используются, а многие разработчики не знали о существовании v2.
  • Несмотря на критику, Parquet всё равно крупный шаг вперёд по сравнению с предыдущими форматами, и вопросы скорее в медленной эволюции стандарта, чем в самой идее.

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, который по логу репликации инкрементально обновляет материализованные представления.
  • Часть участников считает, что современные оптимизаторы должны делать такие оптимизации автоматически, и не понимает, зачем изобретать велосипед.

ClickHouse matches PG for single-row UPDATEs and 4000 x faster for bulk UPDATEs (clickhouse.com)

ClickHouse vs PostgreSQL: UPDATE-скорость

  • Коротко: на одном железе ClickHouse догоняет PostgreSQL в одиночных UPDATE и в 4 000 раз быстрее при массовых.
  • Почему: колоночное хранилище + параллелизм ClickHouse выигрывает у строкового PostgreSQL при поиске и перезаписи миллионов строк.
  • Но: PostgreSQL всегда транзакционен; ClickHouse — нет, поэтому сравнение по «родным» режимам, а не по ACID.

Что мерили

  • 1 строка: UPDATE orders SET status='shipped' WHERE id=1234567
  • 1 млн строк: UPDATE orders SET discount=0.1 WHERE order_date<'2023-01-01'

Аппаратура

  • c6i.8xlarge (32 vCPU, 64 ГБ RAM, gp3 SSD)
  • PostgreSQL 16.4 (дефолт + fillfactor=90, checkpoint_timeout=30 min)
  • ClickHouse 25.7 (дефолт)

Результаты

метрика PostgreSQL ClickHouse
1 строка, мс 0.12 0.11
1 млн строк, сек 120 0.03
CPU, % 100 2800
чтение, ГБ 30 0.8

Почему так

  • Поиск: ClickHouse читает только нужные колонки, фильтрует за счёт индексов и распараллеливает на все ядра.
  • Запись: обе СУБД пишут новые версии строк (MVCC), но PostgreSQL переписывает целые страницы, а ClickHouse — только изменённые куски колонок.
  • Фоновая работа: PostgreSQL ждёт checkpoint’а, ClickHouse сразу сортирует и сжимает куски.

Когда выбирать

  • Нужны транзакции и row-level locks → PostgreSQL.
  • Нужны массовые обновления аналитических данных → ClickHouse.

Код и данные

GitHub

by truth_seeker • 17 августа 2025 г. в 17:52 • 93 points

ОригиналHN

#clickhouse#postgresql#sql#database#performance#benchmark#acid#mvv

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

  • ClickHouse показывает огромный выигрыш в скорости обновлений, но это «яблоки-к-апельсинам»: PostgreSQL по умолчанию полностью транзакционен, а CH — нет.
  • Если данные можно терять или обновления редки, CH идеален; если нужна строгая согласованность, PostgreSQL остаётся безальтернативным.
  • Многие пользователи CH считают обновления адом: приходится использовать ReplacingMergeTree, версии или event-sourcing; прямых UPDATE-ов до недавнего времени вообще не было.
  • Часть комментаторов предлагает сравнивать CH с DuckDB, Vertica или ScyllaDB, а также настроить PostgreSQL (synchronous_commit = off, COPY) для более честного бенчмарка.
  • Авторы поста подчёркивают: цель не «победить» PostgreSQL, а показать, как каждая СУБД решает задачу в своей «родной» модели исполнения.

AI doesn't lighten the burden of mastery (playtechnique.io)

Иллюзия мастерства

Claude выдал прекрасные Go-тесты — и бесполезные: все сводились к true == true.
ИИ дарит облик мастерства без труда. Код выглядит правильно, поэтому легко пролистать детали.

Я не ленюсь, просто использую инструмент. Claude пишет Go, SQL, Svelte, знает сигнатуры API — кажется, что boilerplate решён. Но когда я отлаживал фронтенд, понадобилось 40 минут чтения документации, чтобы заметить, что он смешал синтаксис Svelte 4 и 5. Я проглядел, пока не проследил вручную.

ИИ продвинул меня, но не избавил от работы. Настоящее мастерство — это модель в голове и собственное мышление. Убедительный синтаксис ≠ понимание.

Ловушка

Мы, разработчики, стараемся делать хорошо, и именно поэтому опасна эта иллюзия: ИИ заставляет расслабиться и верить, что результат будет отличным без усилий.

Это как фитнес: пропустил день — легко вернуться, пропустил недели — «и так сойдёт». Инструмент хорош, но привычка тускнеет.
Когда целые команды перестают напрягаться, код превращается в пятна Роршаха: знакомые формы без модели. Это организационный распад.

Сначала ИИ облегчает работу, но уже через пару дней видно: он не несёт когнитивную нагрузку. Финальный рывок остаётся за нами, а поднять «положенное» бремя тяжело.

Требуется усилие

Наш ремесленный труд всегда был в чтении кода, построении моделей, отладке.
Мастерство — это умение нести это бремя. Положил его надолго — не захочешь поднимать.

by gwynforthewyn • 17 августа 2025 г. в 17:03 • 139 points

ОригиналHN

#go#sql#svelte#api#frontend#artificial-intelligence#software-development#coding-practices#llm

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

  • Опытные разработчики подчеркивают: без контроля и понимания архитектуры AI-помощь превращается в «красивый, но бесполезный» код.
  • Многие замечают, что младшие коллеги перестают думать, слепо принимая сгенерированные тесты и решения.
  • AI хорош для рутины, но требует «copilot», а не «main pilot»: человек должен оставаться капитаном.
  • Сравнение с IKEA-шкафами: большинство проектов станут «фабричными», но сложные и критичные системы всё равно останутся ручной работой.
  • Итог: навыки критического мышения и рефакторинга «AI-слякоти» станут новой ценностью.

Claude Code is all you need (dwyer.co.za) 🔥 Горячее 💬 Длинная дискуссия

Установил Claude Code в июне. Попробовал Cursor, Cline, Zed — всё коряво, а тут встроился в привычный vim+терминал. Сразу отменил GPT, перевёл $20 на Anthropic, через пару дней докинул до $100, чтобы не ловить лимиты.

Что успел сделать:

  • «Автономный» стартап-конструктор
  • Однопромптовый SplitWise-клон SmartSplit
  • Генератор постеров
  • Плагин для оценки комментов на HN
  • Мини-Trello и скрипт для переименования банковских выписок

Выводы за пару недель:

  1. Запускайте с --dangerously-skip-permissions и не парьтесь (инфосеки могут закрыть вкладку).
  2. Чем больше контекста — тем лучше результат. Пишите километры текста или пользуйтесь TTS.
  3. Модель неплохо рисует UI, хотя по сути текстовая.

Vibe-кодим CRUD за один промпт

Vibe-coding — пишем без просмотра кода, просто болтаем с моделью. В качестве испытания возьмём SplitWise-клон: просто, но есть нюансы (приглашённые юзеры, расходы, pending-инвайты).

Команда:

claude -p "Read SPEC.md and implement it"

SPEC.md — 500 слов, пример ниже. Результат: 900 строк на PHP, работает сразу (smartsplit.verysmall.site). Прикольные мелочи: имя берётся из профиля, если нет — email.

Та же попытка без чёткого стека привела к NodeJS-аду: 15 файлов, 1000 строк, 500 МБ зависимостей и нерабочая регистрация.


SPEC.md (сокращённо)

Сделай SplitWise-клон. PHP, SQLite, одним файлом.
Функции: регистрация, логин, группы, расходы, долги, приглашения по email.
UI минималистичный, Bootstrap.
Один долг = одна строка в таблице expenses, рассчёт баланса на лету.

by sixhobbits • 11 августа 2025 г. в 14:03 • 772 points

ОригиналHN

#vim#anthropic#llm#cloud#sql#crud

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

  • Кто-то в восторге от эксперимента «дайте Claude VPS и пусть творит», другие пугаются, что кандидаты без AI не справляются даже с простым SQL.
  • Половина треда обсуждает опасность флага --dangerously-skip-permissions и то, что агент может удалить «не трогать»-комментарии и сломать прод.
  • Критика дизайна («всё выглядит плохо»), цены (API жрёт токены по $6-10 за сессию) и отсутствия фикс-тарифа для команд.
  • Вопросы приватности: Claude Code шлёт файлы в облако Anthropic, а поддержка игнорирует пользователей по 4+ дня.
  • Многие сравнивают с Cursor, Copilot, Gemini CLI и ждут, когда появится «Claude Code considered harmful».

The Bluesky Dictionary (avibagla.com)

  • время — 4732 использ.; последнее появл. 08/07/2025 08:49
  • для — 4751; последнее 08/07/2025 08:49
  • медитация — 509; последнее 08/07/2025 08:49
  • неделя — 4017; последнее 08/07/2025 08:49
  • война — 3974; последнее 08/07/2025 08:49
  • трамп — 4711; последнее 08/07/2025 08:49
  • ии — 4565; последнее 08/07/2025 08:49
  • после — 4649; последнее 08/07/2025 08:49
  • просто — 4748; последнее 08/07/2025 08:49
  • последний — 4454; последнее 08/07/2025 08:49
  • как — 4747; последнее 08/07/2025 08:49
  • который — 4514; последнее 08/07/2025 08:49
  • о — 4745; последнее 08/07/2025 08:49
  • the — 4757; последнее 08/07/2025 08:49
  • торговля — 2083; последнее 08/07/2025 08:49
  • эффект — 1653; последнее 08/07/2025 08:49
  • президент — 3584; последнее 08/07/2025 08:49
  • тарифы — 2665; последнее 08/07/2025 08:49
  • io — 2480; последнее 08/07/2025 08:49
  • расширяется — 95; последнее 08/07/2025 08:49
  • пошлины — 639; последнее 08/07/2025 08:49
  • полночь — 1772; последнее 08/07/2025 08:49
  • ошеломляющий — 439; последнее 08/07/2025 08:49
  • страны — 4866; последнее 08/07/2025 08:49
  • взяли — 8866; последнее 08/07/2025 08:49
  • начать — 2796; последнее 08/07/2025 08:49
  • объявил — 3688; последнее 08/07/2025 08:49
  • мужчина — 4577; последнее 08/07/2025 08:49
  • снег — 958; последнее 08/07/2025 08:49
  • анан — 76; последнее 08/07/2025 08:49
  • снеговик — 202; последнее 08/07/2025 08:49
  • развлечения — 3310; последнее 08/07/2025 08:49
  • ich — 3267; последнее 08/07/2025 08:49
  • die — 4390; последнее 08/07/2025 08:49
  • mein — 2276; последнее 08/07/2025 08:49
  • мастурбация — 712; последнее 08/07/2025 08:49
  • sind — 5177; последнее 08/07/2025 08:49
  • сила — 3583; последнее 08/07/2025 08:49
  • сам — 2763; последнее 08/07/2025 08:49
  • друзья — 3607; последнее 08/07/2025 08:49
  • гигант — 1239; последнее 08/07/2025 08:49
  • вместе — 3278; последнее 08/07/2025 08:49
  • месяцы — 2845; последнее 08/07/2025 08:49
  • вещи — 4425; последнее 08/07/2025 08:49
  • смотреть — 4485; последнее 08/07/2025 08:49
  • демократия — 2165; последнее 08/07/2025 08:49
  • однажды — 3766; последнее 08/07/2025 08:49
  • те — 4467; последнее 08/07/2025 08:49
  • что-либо — 4208; последнее 08/07/2025 08:49
  • делаю — 4378; последнее 08/07/2025 08:49

by gaws • 06 августа 2025 г. в 20:43 • 186 points

ОригиналHN

#bluesky#sql#sqlite

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

  • Обсуждают сайт, который сканирует посты Bluesky и отмечает слова из словаря, которых ещё не встречал; часть ложных срабатываний связана с языком (французские посты, имена собственные вроде “Wheal”, названия групп типа “eluvium”).
  • Некоторые удивлены, что среди “невиденных” попадаются вполне обычные английские слова, а также что сайт у некоторых показывает 0 из‑за блокировки скриптов или задержки загрузки.
  • Автор сайта пояснил: бэкенд простой — SQLite с таблицами для статистики и слов; не ожидал популярности.
  • Технически обсуждают использование Jetstream вместо «firehose», способы токенизации и структуры данных: хеш‑таблицы/множества, trie, оценка памяти ~25 МБ на 250–275k слов.
  • Замечают, что проверено лишь ~4.9 млн постов (≈0.28% из 1.7 млрд), поэтому покрытие ограничено; метаданные о языке в Bluesky могут быть некорректны, что ухудшает точность.
  • Есть опасения о пропускной способности и стоимости «firehose», но Jetstream считается достаточно легковесным; у части пользователей всё работает в Firefox без аккаунта.
  • Появляются шутки и критика: кто‑то просто постит словарь, смешные “двойные находки”, замечания о дизайне, а также сомнения к другим проектам автора (ошибочная классификация “right‑leaning”).