История изменений
Исправление den73, (текущая версия) :
Почему и где используешь лисп
Где:
- поддержка ЖЦ базы данных (хранение сорсов, сборка процедур и вьюх, раздача прав, макросы для SQL, генерация некоторых триггеров, процедур удаления дубликатов). Всё это можно было бы сделать и на самом SQL, но на смеси SQL и лиспа - намного удобнее.
- генерация метаданных для GUI из расширенного лиспового описания метаданных БД. Зная комменты полей и внешние ключи таблиц, автоматически генерирую некий текст, из которого клиент строит формы работы с данной таблиц. Тоже можно было бы сделать на SQL, но на лиспе - удобнее.
- сервер приложений, слушает порт, открывает сокет, создаёт тред, подключается к базе данных, выполняет код, возвращает результат, возвращает ошибку, следит за освобождением ресурсов на сервере. Также умеет вызывать коллбеки на клиента. В общем-то, это - аналог веб-технологии, но вместо JavaScript используется Remobjects PascalScript, имеющий биндинги к нужным функциям и классам клиента. Ситуация та же, что и с остальным: можно было сделать и на чистом SQL, но на лиспе удобнее из-за двух причин:
1. можно падать в отладчик в контексте приложения и видеть контекст
2. можно свободно писать в логи, в файлы, на консоль, иметь несколько транзакций и т.п.
3. можно решать проблемы ограничения доступа, которые на уровне SQL сервера бывают неразрешимыми.
4. горячая замена более горячая, чем на сервере SQL (Firebird блокирует испольуземые объекты).
Расплатой за это является скорость исполнения,т.к.данные нужно таскать между SQL-сервером и сервером приложений.
рассматривались ли другие альтернативы
Я довольно консервативен. В своё время рассматривал схему, но лисп более развит, гибок, быстрее, позволяет долезть до больших глубин реализации. Насколько я понимаю, и по отладке лисп лучше.
Исходная версия den73, :
Почему и где используешь лисп
Где: - поддержка ЖЦ базы данных (хранение сорсов, сборка процедур и вьюх, раздача прав, макросы для SQL, генерация некоторых триггеров, процедур удаления дубликатов). Всё это можно было бы сделать и на самом SQL, но на смеси SQL и лиспа - намного удобнее. - генерация метаданных для GUI из расширенного лиспового описания метаданных БД. Зная комменты полей и внешние ключи таблиц, автоматически генерирую некий текст, из которого клиент строит формы работы с данной таблиц. Тоже можно было бы сделать на SQL, но на лиспе - удобнее. - сервер приложений, слушает порт, открывает сокет, создаёт тред, подключается к базе данных, выполняет код, возвращает результат, возвращает ошибку, следит за освобождением ресурсов на сервере. Также умеет вызывать коллбеки на клиента. В общем-то, это - аналог веб-технологии, но вместо JavaScript используется Remobjects PascalScript, имеющий биндинги к нужным функциям и классам клиента. Ситуация та же, что и с остальным: можно было сделать и на чистом SQL, но на лиспе удобнее из-за двух причин: 1. можно падать в отладчик в контексте приложения и видеть контекст 2. можно свободно писать в логи, в файлы, на консоль, иметь несколько транзакций и т.п. 3. можно решать проблемы ограничения доступа, которые на уровне SQL сервера бывают неразрешимыми. 4. горячая замена более горячая, чем на сервере SQL (Firebird блокирует испольуземые объекты). Расплатой за это является скорость исполнения,т.к.данные нужно таскать между SQL-сервером и сервером приложений.
рассматривались ли другие альтернативы
Я довольно консервативен. В своё время рассматривал схему, но лисп более развит, гибок, быстрее, позволяет долезть до больших глубин реализации. Насколько я понимаю, и по отладке лисп лучше.