
Super Schema Architecture
Balek 35 минут назад Super Schema Architecture Средний 10 мин 1.2K Программирование * Базы данных * Проектирование API * Проектирование и рефакторинг * Анализ и проектирование систем * Перевод Автор оригинала: Alexey...
GPT-5.6 31 Temmuz 2026'da yayınlanacak mı?
Значимый прорыв формирует отрасль ИИ: Balek 35 минут назад Super Schema Architecture Средний 10 мин 1. 2K Программирование * Базы данных * Проектирование API * Проектирование и рефакторинг * Анализ и проектирование систем * Перевод Автор оригинала: Alexey Balekhov В статье описывается подход к разработке прикладных приложений, основанный на едином максимально подробном формате описания доменных сущностей и контрактов. Приводятся практические примеры использования такого описания.
В том числе показано, как декларации могут привнести удобства low-code решений в обычные full-code программы. Описанный подход работает независимо от используемого на проекте стека технологий и особенно полезен в гетерогенных системах. Поэтому я стараюсь приводить примеры из разных языков программирования и технологий: Java, Python, TypeScript, REST, GraphQL, protobuf.
Технические детали
ВведениеВсякая программа оперирует какими-то данными. Обычно в проекте содержится множество декларативных описаний данных. Это могут быть определения классов в ООП, схемы таблиц базы данных, схемы GraphQL, protobuf и так далее.
Каждое такое описание решает свою техническую задачу. Схема таблицы в PostgreSQL нужна, чтобы СУБД могла хранить данные, а описание этой же таблицы для ORM-библиотеки нужно, чтобы работать с БД в коде. Несмотря на то, что они описывают одну и ту же информацию, нельзя сказать, что эти описания эквивалентны и взаимозаменяемы.
ORM-схема может, например, не уметь задавать constraint, но при этом иметь какую-то свою вспомогательную информацию, не содержащуюся в самой БД. Но сильная логическая связь между этими схемами очевидна. Как минимум имена и типы столбцов должны соответствовать друг другу.
Отраслевые последствия
Схема ORM Схема PostgreSQL:CREATE TABLE users ( id UUID PRIMARY KEY, email TEXT NOT NULL UNIQUE, birth_date DATE NOT NULL, CONSTRAINT birth_date_in_past CHECK (birth_date < CURRENT_DATE) );Prisma-схема не умеет описывать contraint. Однако она содержит дополнительное дефолтное значение столбца id, используемое ORM. Остальную информацию схемы, по сути, дублируют.
Похожие рассуждения можно применить и к слабее связанным друг с другом метаданным. Представим себе OpenAPI-спецификацию в том же проекте. Сущности в API могут не иметь ничего общего с моделями базы данных.
Связь между БД и API есть, она описывается кодом реализующим эндпоинт, но код этот может быть самым разнообразным. Однако в случаях, когда код лишь передаёт данные без преобразований, схемы API и базы данных могут так же дублировать метаинформацию. OpenAPI:paths: /users/{id}: get: parameters: - name: id in: path required: true schema: type: string format: uuid responses: "200": description: User content: application/json: schema: type: object required: - id - email - birth_date properties: id: type: string format: uuid email: type: string birth_date: type: string format: dateВ отличие от примера с ORM, эта схема описывает самостоятельную сущность.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





