我想使用一个SQLite数据库嵌入现有的TCL应用程序(从平面文件迁移)。
目前,我们的tcl解释器是从网络位置运行的;<nfs share>/bin/tclsh8.3
我已经为所有用户设置了一个nfs$PATH
的可执行文件集;我假设我可以在那里放置一个独立的sqlite3可执行文件;尽管我还没有找到编译本地独立于lib的sqlite的简单方法。。。(所有linux客户机,运行从red hat 9到Ubuntu10.04的任何内容)
有没有人能让我朝着正确的方向构建一个sqlite3独立二进制文件,我可以在我的nfs tcl安装中使用它?
最佳答案
首先,TCL8.3.5是古老的,而且速度相对较慢。升级到8.4或8.5(如果可以的话)将看到性能的提高(具体哪个更快取决于脚本正在做什么)。
其次,SQLite支持通常通过一个可加载的包(通常称为sqlite3
)完成。您将需要一个与您支持的最旧版本的Tcl一起工作的构建(只需在存根模式下编译——我认为这是默认的——与您希望支持的最旧Tcl版本相比应该没问题),然后将它放在您的代码auto_path
上的目录(作为包的完整安装)中。最好的方法之一是获取tclkit单文件可执行文件for Linux并将sqlite3
包与您的包一起嵌入其中;这很好,因为您可以将所有内容都放在一个位置,这样用户就不会通过设置环境变量或其他此类无意义的操作来轻松地中断工作。有关此操作的更多帮助,请访问https://stackoverflow.com/questions/1379577/…
第三,混合数据库和NFS(或任何其他联网文件系统)是不推荐的,因为分布式锁的困难,并确保在事务提交期间正确刷新到永久存储。在这些条件下确保数据完整性是非常困难的!
关于linux - 在NFS上的tcl脚本中使用sqlite(或..如何制作可在nfs上运行的独立sqlite3),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2837528/