Об этом проекте
Lithoglyph (греч. lithos «камень» + glyphein «высекать») описывается как ядро базы данных с приоритетом повествования, обратимости и аудита. Его заявленный тезис состоит в том, что схемы, ограничения, миграции, блоки и журналы являются повествовательными артефактами, а не непрозрачным субстратом, и что данные высечены в камне: постоянны, поддаются аудиту и обратимы.
Статус проекта объявлен активным, но второстепенным по приоритету. В README говорится, что он движется к production для специализированного использования в журналистике, повествовательных искусствах и медиа/коммуникациях, тогда как VeriSimDB назван текущим основным проектом. Утверждается, что Lithoglyph и его язык запросов GQL, вероятно, являются правильным выбором для большинства журналистских, повествовательных и медийных рабочих процессов, а VeriSimDB и VCL/VCL-UT становятся актуальными для кросс-источниковой журналистской верификации, крупномасштабного отслеживания сущностей, долгосрочной согласованности идентичности или доказательства того, что данные в разных базах данных не разошлись.
Заявленные основные ценности ставят аудируемость выше производительности, смысл выше функций и обратимость выше пропускной способности, при этом требуется понимание агентом. Перечисленные целевые области: журналистские расследования, управление/комплаенс, агентные экосистемы и передача между несколькими репозиториями, а также долгосрочные культурные или институциональные архивы.
Репозиторий организован в spec (спецификации в формате AsciiDoc и обоснования), core-forth (Form.Blocks и Form.Model, описываемые как ядро истины), core-zig (Form.Bridge, ABI и портирование), core-factor (Form.Runtime, GQL и интроспекция), control-plane (опциональный шлюз Elixir/OTP), tools (утилиты render/inspect/doctor), test-vectors (эталонные байты и эталонные рендеры) и stories (повествовательные примеры и артефакты онбординга).
Архитектура разделена на слои по языку и ответственности. Form.Blocks на Forth обеспечивает детерминированное хранение, журнал и примитивы обратимости: блоки фиксированного размера с символьными заголовками, журнал только для добавления, восстановление после сбоев и проверки целостности, а также рекомендации по восстановлению. Form.Model на Forth — это многомодельный логический слой, охватывающий коллекции документов, коллекции рёбер, метаданные схем и ограничений и артефакты миграций. Form.Bridge на Zig предлагает стабильный Zig ABI без зависимости от C, непрозрачные дескрипторы, байтовые буферы и явные коды ошибок, выполняя только маршалинг и используя callconv(.C) для совместимости с FFI без инструментальной цепочки C. Form.Runtime на Factor обрабатывает разбор/планирование/выполнение GQL, explain и интроспекцию, интроспекцию шагов планировщика, поверхности объяснения ограничений и поверхности происхождения. Form.Normalizer объединяет Factor и Lean 4 для автоматического обнаружения функциональных зависимостей (DFD/TANE/FDHits), типового кодирования FD в GQL-DT, предикатов нормальных форм от 1NF до BCNF, доказательно сопровождаемой эволюции схемы и повествовательных объяснений решений по нормализации. Form.ControlPlane на Elixir/OTP является опциональным и предоставляет внепроцессное ядро через порт, сессии, супервизию и координацию границ кластера.
Основные инварианты представлены как не подлежащие обсуждению: истина на диске принадлежит слою блоков/журнала, и более высокие слои не обходят его; каждая мутирующая операция журналируется до того, как считается зафиксированной; каждая зафиксированная операция должна иметь определённую обратную операцию или быть явно помечена как необратимая с историей; блоки и записи журнала должны детерминированно рендериться в форму, читаемую человеком/агентом; результаты запросов могут опционально включать указатели происхождения на журнал и блоки; и ограничения объяснимы, при отклонениях возвращаются причины, указатели и повествовательное обоснование.
GQL (Glyph Query Language) — это нативный интерфейс запросов. Подмножество proof-of-concept охватывает INSERT документа в коллекцию, INSERT ребра с from, to, type и props, SELECT с простыми предикатами, EXPLAIN, возвращающий план и причины, INTROSPECT схемы и ограничений, и опциональный вывод происхождения.
Явные нецели включают замену Postgres без изменений, победу в микробенчмарках и поставку полного распределённого консенсуса в первом PoC. Критерии приёмки PoC включают открытие/закрытие одного узла, журнал только для добавления с детерминированным рендерингом, вставку/выборку документов и рёбер, отклонение ограничения с возвратом полезной нагрузки объяснения, записанный и обратимый артефакт миграции, прохождение эталонных тестовых векторов и прохождение проверок швов (B↔M, M↔R, B↔R) при заморозке.
Открытые вопросы отслеживаются в машиночитаемом файле передачи, охватывая минимальную компоновку заголовка блока, минимальную схему записи журнала, выбор кодирования blob для ABI, грамматику GQL PoC, время внедрения Elixir/OTP и несколько самонормализующихся тем, таких как алгоритм обнаружения FD по умолчанию, обработка приблизительных FD, область денормализации, интеграция доказательств GQL-DT и переписывание запросов.
README ссылается на документацию по быстрому старту, версионированию, журналу изменений, архитектуре, дорожной карте, философии, спецификации GQL, зависимым типам GQL, самонормализующейся базе данных, форматам блоков и журнала, развёртыванию, наблюдаемости, безопасности и аутентификации, справочнику API, миграции из RDBMS, шаблонам интеграции и интерактивному рабочему пакету документального/журналистского направления. Среди связанных проектов перечислены GQL-DT, Lithoglyph Studio, BoFIG, Zotero-Lithoglyph, Lithoglyph Debugger и FormBase. Код распространяется под MPL-2.0, документация — под CC-BY-SA-4.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.