Совместный редактор SQL
Пишите SQL-запросы вместе в режиме реального времени, видя курсоры друг друга, а также проверяйте, форматируйте и минифицируйте запросы для всех участников.
Документация
Что такое совместное редактирование SQL?
Совместное редактирование SQL позволяет нескольким людям одновременно писать и проверять запросы в браузерах. Это удобно, чтобы вместе с коллегой составить запрос, проверить миграцию или обучать SQL — без демонстрации экрана и отправки запросов в чате.
Чтобы у всех была одна и та же версия документа, изменения передаются небольшими фрагментами, а не целым текстом, и сервер определяет порядок их применения. Изменения, сделанные одновременно, согласуются друг с другом, поэтому сохраняются оба.
Описание инструмента
Этот инструмент — общий редактор SQL с подсветкой синтаксиса. Откройте его и отправьте ссылку: все участники комнаты редактируют одни и те же запросы в реальном времени, видят курсоры друг друга, а также могут одним нажатием проверить, отформатировать или сократить SQL для всех.
Проверка выполняет разбор SQL с помощью node-sql-parser. При форматировании каждый основной раздел запроса (SELECT, FROM, WHERE, JOIN и так далее) размещается на отдельной строке, при этом строки и комментарии не затрагиваются. Сокращение помещает запрос в одну строку. Новый текст заменяет только изменившиеся строки, поэтому введённый за это время текст других участников остаётся на месте.
Возможности
- Редактирование в реальном времени — изменения всех участников появляются мгновенно и объединяются, если люди печатают одновременно
- Курсоры и выделения — видно, где находится каждый участник; цвет курсора указан рядом с его именем
- Проверка — проверяет, разбирается ли SQL, и показывает сообщение анализатора, если это не так
- Форматирование и сокращение — упорядочьте запрос по разделам или поместите его в одну строку; изменения отобразятся у всех участников комнаты
- Копирование и скачивание — сохраните копию запросов в виде файла .sql
Как это работает
Когда страница открывается, на сервере синхронизации создаётся комната, а её ссылка помещается в адресную строку. Все, кто откроет ссылку, присоединятся к одной комнате и увидят один и тот же документ.
Каждое изменение отправляется на сервер в виде краткого описания того, что изменилось: какие символы и где были вставлены или удалены. Вместо этого не отправляется весь текст целиком. Сервер упорядочивает изменения от всех участников, перемещает изменение, созданное на основе более старой версии, за изменениями, поступившими раньше, а затем передаёт результат всем остальным. Введённый вами текст отображается сразу, а изменения других участников объединяются с ним, поэтому при одновременном редактировании ничего не теряется.
Документ хранится только в памяти сервера, пока комната открыта. Если вы перезагрузите страницу, то снова войдёте в комнату и увидите текст в прежнем виде. Когда все участники выйдут, комната и её текст будут удалены.
Ограничения
- В комнате могут находиться не более 20 человек, а документ может содержать не более 100 000 символов.
- После закрытия комнаты данные не сохраняются. Скачайте текст, прежде чем выйдет последний участник.
- Слишком быстрые или масштабные изменения, например многократная вставка всего документа подряд, отклоняются, и редактор перезагружает текст комнаты.
- Если открыть ссылку на комнату в другом редакторе для совместной работы (например, комнату SQL в редакторе JavaScript), появится сообщение «Комната не найдена»: каждая комната предназначена для одного языка.
- Проверка анализирует только синтаксис. Запросы никогда не выполняются в базе данных.