использование sqlite в сценарии tcl поверх nfs (или .. как создать автономный sqlite3, который можно запустить через nfs) - PullRequest
0 голосов
/ 15 мая 2010

Я хочу использовать встраивание базы данных sqlite в существующее приложение tcl (перенесено из простого файла).

В настоящее время; наш интерпретатор tcl запускается из сетевого расположения; <nfs share>/bin/tclsh8.3

У меня уже есть nfs $PATH для исполняемых файлов, установленных для всех пользователей; Я предполагаю, что я могу разместить отдельный исполняемый файл sqlite3; хотя мне пока не удалось найти простой способ компилировать локальный независимый от lib sqlite ... (все клиенты linux, работающие от red hat 9 до ubuntu 10.04)

Кто-нибудь может подтолкнуть меня в правильном направлении при создании автономного двоичного файла sqlite3, который я могу использовать в моей установке nfs tcl?

1 Ответ

2 голосов
/ 17 мая 2010

Во-первых, Tcl 8.3.5 древний и относительно медленный. Обновление до 8.4 или 8.5 (если вы можете) приведет к улучшению производительности (что зависит от того, что делает ваш сценарий, и то, что быстрее).

Во-вторых, поддержка SQLite обычно осуществляется через загружаемый пакет (условно называемый sqlite3). Вы захотите получить сборку, которая работает с самой старой версией Tcl, которую вы поддерживаете (простая компиляция в режиме с заглушками - в любом случае я думаю, что это по умолчанию - с самой старой версией Tcl, которую вы хотите поддерживать, должно быть в порядке), а затем поместите это в каталоге (в виде полной установки пакета), который имеется в вашем коде auto_path. Один из самых хороших способов сделать это - получить tclkit исполняемый файл с одним файлом для Linux и встроить пакет sqlite3 вместе с вами в него; это хорошо, потому что вы можете собрать все вместе в одном месте, чтобы пользователи не могли легко нарушить их, установив переменные среды или другие подобные глупости. Есть больше справки по этому вопросу на https://stackoverflow.com/questions/1379577/…

В-третьих, смешивание баз данных и NFS (или любой другой сетевой файловой системы) не рекомендуется из-за трудностей с распределенной блокировкой и обеспечения надлежащего сброса в постоянное хранилище во время транзакции COMMIT. Обеспечить целостность данных в этих условиях просто сложно!

...