Скоро на экранах: MyHomeLib 1.5
Разработка версии 1.5 вышла на финальную стадию. Все крупные баги отловлены, все возможности, которые планировалось добавить - добавлены (их даже больше, чем планировалось).
Осталось отловить мелкие баги и доработать справку, дабы она соответствовала.
Свежие сборки 1.5 можно найти в этой ветке форума.
Таблицы против запросов
Попробовал перейти от схемы "таблица главная - таблица детальная" к схеме "один сложный SQL запрос". На примере выборки книг одного автора это выглядит так - Таблица авторов (главная) - Список авторов (обеспечивает отношение одна книга один автор и наоборот) - Таблица книг. В MyHomeLib используются три соотвественно связанных компонента TTable. Если заменить это на SQL, получится трижды вложенный запрос типа
Select * FROM Books WHERE Id IN
(Select BookID FROM Author_List WHERE AuthID IN
(SELECT ID FROM Authors WHERE Name = "Петя"));
Так вот, в AbsoluteDB второй вариант на одной и той же базе работает в десятки раз медленнее! Видимо, нечто аналогичное происходит и в Firebird, хотя там запрос отрабатывается несколько быстрее.
Немного истории
Рылся в закромах и нашел свою программку, которая послужила прототипом интерфейса MyHomeLib. Называется это чудо просто и незатейливо - Каталог. Было сделано 3 года назад по заказу одного СТО для автоматизации процесса подготовки счетов:
1.5 бета
Объективная реальность
Такова, что шансы на появление работоспособной "двойки" в обозримом будущем равны нулю. Слишком много нужно сделать, и слишком много нерешенных проблем, особенно с движком БД. "Птица" ведет себя значительно хуже, чем я себе представлял. Есть проблемы со скоростью - на небольших выборках работает в разы медленнее, чем AbsoluteDB...
C другой стороны, возникла насущная проблема добавить в MyHomeLib некоторые вещи "здесь и сейчас". Вот так и появилась ветка 1.5. Движок отсался тот же - AbsoluteDB, структура БД была изменена для реализации новых фич. Фактически, сейчас мы имеем гибрид ветки 1.4 (по функцоналу) и ранней альфы 2.0 (той, котрая на абсолюте) минус поддержа скинов.
В данный момент реализовано все, что было в обоих ветках плюс добавились новые возможности - настраиваемый формат импорта из inpx, поддержка информации о языке и ключевые слова. Пока что 1.5 в статусе "альфа", но в ближайшее время перейдет в "бету".
Самое главное, что в последнем релизе 1.4.1 была добавлена возможность экспорта пользовательских данных для последующего переноса в 1.5. Реализация, возможно, не самая удобная для пользователей (нужно делать экспорт для каждой из коллекции), но с другой строны достаточно простая для меня. Можно было бы чего-нибудь более навороченное придумать, но тогда это заняло бы неопределенное время, и выход "полторашки" пришлось бы отложить на неопределенное время.