Notebook
Notebook — формат, где SQL разбит на ячейки, каждая выполняется независимо, результаты сохраняются между запусками. Похоже на Jupyter, но без Python — только SQL и Markdown.
Зачем нужно
Обычный SQL-редактор хорош для разовых запросов. Notebook — когда вы:
- Готовите ad-hoc отчёт: 5–10 запросов в логике «загрузил данные → почистил → агрегировал → выгрузил».
- Хотите сохранить разбор инцидента: «вот запрос, который тормозил, вот EXPLAIN, вот фикс».
- Делитесь анализом с коллегой: один файл с SQL + комментарии в Markdown.
Создать
+ New tab → Notebook или из выпадающего меню табов: New Notebook.
Откроется пустой документ с одной пустой ячейкой.
Ячейки
Два типа:
SQL-ячейка
- Кнопка ▶ Run cell или ⌘+Enter — выполнит ячейку и покажет результат под ней.
- Run all — выполнит все ячейки сверху вниз по порядку.
- Результат остаётся между запусками (сохраняется в файле notebook'а).
Markdown-ячейка
- Текстовые заметки с поддержкой markdown: заголовки, списки, ссылки, инлайн-код.
- Кликните дважды — режим редактирования. Снаружи — рендеринг.
Переключение типа ячейки — кнопка вверху-справа (SQL ↔ Text).
Управление ячейками
Иконки слева от ячейки:
- + добавить ячейку выше / ниже
- ↑↓ переместить
- × удалить
- ▶▶ выполнить от текущей до конца
Сохранение
File → Save notebook или ⌘+S. Расширение файла — .ide99-nb (это JSON: список ячеек + последние результаты + ссылка на коннект).
Открыть существующий — File → Open notebook или drag&drop файла на окно ide99.
Что в файле
Файл report.ide99-nb — обычный JSON, можно положить в git:
{
"version": 1,
"title": "Q4 revenue analysis",
"connection_hint": "db_prod",
"cells": [
{ "type": "markdown", "body": "# Daily revenue\n\nLast 30 days:" },
{ "type": "sql", "body": "SELECT ... LIMIT 30;", "result": { "rows": 30, "duration_ms": 142 } }
]
}
connection_hint — имя коннекта на момент сохранения. При открытии notebook'а на другой машине ide99 попробует найти коннект с таким именем; если не найдёт — попросит выбрать вручную.
Что не сохраняется
- Содержимое результатов (только метаданные: количество строк, длительность). Это безопасно для шаринга через git — данные не утекают.
- Пароли подключений (они в keychain, не в файле).
Если хотите выгрузить результат с данными — используйте кнопку Export на конкретной ячейке (CSV, JSON, Excel).
Совет: workflow для on-call
Шаблон notebook для разбора инцидентов:
- Markdown-ячейка: ссылка на инцидент + дата
- SQL:
SELECT * FROM events WHERE event_at BETWEEN ... ORDER BY ts;
- SQL:
EXPLAIN ANALYZE запроса, который тормозил
- Markdown: причина + фикс
- SQL: подтверждение, что после фикса всё работает
Сохранить как 2026-05-22-incident-orders.ide99-nb, закоммитить в репо команды.
Что дальше