architect/research/DOCS_SYSTEMS_RESEARCH.md

Document Management Systems Research

Дата: 2025-01-02
Версия: 1.0
Статус: Completed


Аннотация

Исследование пяти ведущих Document Management Systems (DMS):
- Confluence (Atlassian) — энтерпрайз-решение для команд
- Notion (Notion Labs) — все-в-одном workspace с блок-архитектурой
- GitBook (GitBook) — документация с git-синхронизацией
- Outline (Open Source) — открытая wiki для команд
- BookStack (Open Source) — простая альтернатива Confluence

Фокус: Модели данных, UI паттерны, хранение документов (критическое!)


1. CONFLUENCE (Atlassian)

1.1 Модель данных

Основные сущности

Сущность Описание Характеристики
Space Контейнер для контента Top-level организация
Page Основная единица контента Содержит body, metadata, версии
Attachment Загруженный файл Версионирован, хранится отдельно
Blog Post Временной контент Похож на Page, но с датой публикации
Database Структурированные данные v2025: новая структура для контента
Comment Комментарий на странице Древовидная структура

Версионирование

1.3 Хранение документов

Компонент Хранилище Формат
Page Content MySQL/PostgreSQL БД HTML в CONTENT_BODY
Attachments Filesystem + S3 Binary files
Revisions БД + Filesystem HTML snapshots
Search Index Embedded (Lucene) Inverted index

Особенность: Каждый версион — полный снимок (не diff-based)


2. NOTION

2.1 Модель данных: Block-based

Ключевая идея: Всё в Notion — это блок.

Основные сущности (API 2025)

Сущность Описание
Workspace Корневой контейнер
Page Блок типа page
Database Контейнер данных (переструктурировано в 2025)
Data Source Источник данных (NEW 2025!)
Block Базовая единица всего

Масштаб (Notion's Scale)

Период Блоков Размер Архитектура
2021 20 billion ~100 TB (compressed) Single Postgres
2023 100+ billion ~500 TB Sharded Postgres
2025 200+ billion ~1+ PB Distributed

2.3 Хранение документов

Postgres (Live)
  ↓
Debezium CDC
  ↓
Kafka (Event Stream)
  ↓
Apache Hudi
  ↓
S3 (Data Lake)
  ↓
Spark/Presto (Analytics)

Версионирование


3. GITBOOK

3.1 Модель данных

Основные сущности

Сущность Описание
Space Корневой документ-сборка
Page Страница с контентом
Subpage Вложенная страница (3-4 уровней макс)
Revision Версия контента (Git-like)
Change Request Branch для редактирования (как PR)

3.3 Хранение документов

Источник         | Формат         | Примечание
-----------------|-----------------|------------------
Git Repository   | .md files       | Если Git Sync включен
GitBook Database | Markdown + JSON | Если визуальный редактор
Local FS         | .md files       | Для self-hosted
S3 / Cloud       | Markdown + JSON | Масштабируемое

Версионирование


4. OUTLINE

4.1 Модель данных

Основные сущности

Сущность Описание
Workspace Корневой контейнер
Collection Группировка документов (как папка)
Document Основная единица контента
Revision Версия документа
Comment Комментарий на документе
Backlink Автоматическая связь между docs

4.3 Хранение документов

PostgreSQL Database (Primary)
├── documents table (content as markdown)
├── revisions table (версионирование)
├── attachments table (file references)
└── Full-text search index

Версионирование


5. BOOKSTACK

5.1 Модель данных

Основные сущности

Сущность Описание
Shelf Группировка книг (опционально)
Book Основной контейнер
Chapter Группировка страниц в книге (опционально)
Page Основная единица контента
Attachment Загруженный файл к странице
Revision Версия страницы

Структура: Shelf → Book → (Chapter) → Page

5.3 Хранение документов

├─ MySQL / PostgreSQL Database
  ├─ pages table (html column = основной контент)
  ├─ pages table (markdown column = исходный markdown)
  ├─ revisions table
  └─ attachments table (metadata only)

├─ Filesystem (Images)
  └─ storage/uploads/images/

├─ Filesystem (Attachments)
  └─ storage/uploads/files/

└─ [Optional] S3 / S3-Compatible
   └─ MinIO compatible

Форматы контента

Формат Хранение Примечание
Rich Text (WYSIWYG) HTML в pages.html TinyMCE output
Markdown Markdown в pages.markdown CommonMark + tables
HTML Standard HTML в БД Портируемо
Attachments Filesystem + metadata Versioned

Версионирование


6. СРАВНЕНИЕ СИСТЕМ

6.1 Таблица сравнения: Модели данных

Параметр Confluence Notion GitBook Outline BookStack
Иерархия Space → Page (no limit) Workspace → Page (unlimited) Space → Page (3-4 max) Workspace → Collection → Doc Book → Chapter → Page
Основная единица Page Block Page Document Page
Версионирование DB snapshots Optimistic locking Git branches DB revisions DB revisions
Связи Links + Mentions Relations + Rollups Links + External Backlinks + Wiki Links
Rich Text HTML Block-based Markdown + Rich Markdown + Rich HTML + Markdown

6.2 Таблица сравнения: Хранение

Параметр Confluence Notion GitBook Outline BookStack
БД MySQL/PostgreSQL PostgreSQL (шардированная) Notion DB PostgreSQL MySQL/PostgreSQL
Файлы Filesystem + S3 S3 Git + CDN S3 / FS Filesystem / S3
Версионирование DB snapshots Optimistic locking Git history DB revisions DB revisions
Export HTML, PDF, XML Markdown, HTML, CSV Markdown, PDF, HTML Markdown, HTML, ZIP HTML, PDF, Markdown
Масштаб Enterprise 200+ billion blocks Teams Teams Teams

6.3 Таблица сравнения: UI/UX

Параметр Confluence Notion GitBook Outline BookStack
Search Full-text + advanced Cmd+K с фильтрами Full-text Full-text + popularity Full-text
Navigation Breadcrumbs + Sidebar Page tree + Favorites TOC Tree + Recent Breadcrumbs
Editor WYSIWYG (Rich) Block-based visual WYSIWYG + Markdown Markdown + Rich WYSIWYG + Markdown
Collaborative Real-time Real-time Change Requests Real-time Drafts-based
Comments Inline + page Inline None (PR-based) Thread Tree-structured
Mobile Good Good Limited Limited Limited

7. АРХИТЕКТУРНЫЕ РЕШЕНИЯ

7.1 Document Storage Model

Database-Centric (Confluence, Notion, Outline)
├─ Content в БД
├─ Быстрый поиск (FTS index)
├─ Сложное версионирование
└─ Scaling требует шардинга

File-First (GitBook)
├─ Content в .md файлах (Git)
├─ Version control из коробки
├─ Markdown портируемо
└─ Scaling простой (git clone)

Hybrid (BookStack)
├─ Content в БД (HTML + Markdown)
├─ Files на Filesystem или S3
├─ Баланс простоты и функциональности
└─ Средний scaling

7.2 Block-Based vs Page-Based

Block-Based (Notion)
├─ Гибкость: всё модуляризировано
├─ Сложность: больше кода
├─ Мощность: Relations, Rollups
└─ Performance: требует careful indexing

Page-Based (Confluence, GitBook, BookStack)
├─ Простота: страница = единица
├─ Performance: быстрее для большинства case
├─ Масштаб: проще горизонтально
└─ Гибкость: меньше, чем блоки

7.3 Версионирование

Database Snapshots (Confluence)
├─ Full copy каждой версии
├─ Simple restore
├─ Storage: требует много места
└─ Query: быстрый поиск

Git History (GitBook)
├─ Diff-based
├─ Full Git workflow
├─ Storage: компактнее
└─ Query: нужно reconstruct

Incremental Snapshots (Outline, BookStack)
├─ Full copy, но optimized
├─ Balance между простотой и storage

8. РЕКОМЕНДАЦИИ ДЛЯ СОБСТВЕННОГО DMS

Архитектура для масштабируемого DMS

Уровень 1: API Gateway
└─ REST / GraphQL для CRUD операций

Уровень 2: Document Engine
├─ Page/Document model
├─ Hierarchical storage (BookChapterPage)
├─ Rich Text + Markdown support
└─ Real-time collaborative editing

Уровень 3: Storage Layer
├─ PostgreSQL (основной контент)
├─ S3 (files, images, exports)
├─ Elasticsearch (FTS index)
└─ Redis (cache, locks for editing)

Уровень 4: Versioning
├─ Content snapshots в БД
├─ Git integration (опционально)
└─ Revision table с metadata

Уровень 5: Permissions
├─ Role-based (Admin, Editor, Viewer)
├─ Scope: Workspace, Collection, Document, Field
└─ Cache permission checks
Layer Technology Reason
Frontend React + ProseMirror Rich editor
Backend Python/FastAPI или Node.js API stability
Primary DB PostgreSQL Reliable, ACID, JSON support
Search Elasticsearch Fast FTS + aggregations
Cache Redis Edit locks, user sessions
Files S3 (MinIO for self-hosted) Scalable
Versioning Git + DB snapshots Best of both
Realtime WebSocket + CRDT Collaborative editing

9. ВЫВОДЫ

Key Takeaways

  1. Database-Centric (Confluence, Notion, Outline, BookStack) лучше для enterprise
    - Быстрый поиск
    - Сложное версионирование
    - Real-time collaborative editing
    - Требует шардинга для масштаба

  2. File-First (GitBook) лучше для documentation
    - Git workflow (version control)
    - Markdown portability
    - Простой scaling
    - Не подходит для real-time collab

  3. Storage Strategy определяет масштабируемость:
    - Маленькие teams (10-100): Filesystem OK
    - Medium teams (100-1000): S3 нужен
    - Large teams (1000+): Sharded DB + CDN

  4. Content Format:
    - Rich Text (Confluence, Notion) → большая гибкость
    - Markdown (GitBook, Outline) → портируемость
    - Hybrid (BookStack) → баланс

  5. Для Pirotehnika Scale рекомендуется:
    - PostgreSQL + S3 hybrid model
    - Hierarchical document structure (как BookStack)
    - Rich Text + Markdown support
    - Real-time editing для больших teams
    - Git integration для documentation/workflows


Документ завершён: 2025-01-02
Версия: 1.0
Статус: Ready for architecture decisions