我编写了一个与Sqlite非常合作的Windows桌面应用程序.它是一个单用户应用程序,数据库就位于运行应用程序的计算机上.
但是,应用程序已经增长,现在多个用户应该能够运行应用程序并连接到一个共享数据库.
我想能够在网络驱动器上共享sqlite文件,但这显然会导致数据损坏,除非有人有任何想法.
我想我可能需要安装数据库服务器,但商业MySQL许可证没有意义,PostgreSQL与我不得不重写我的应用程序.我根本没有和Firebird合作,所以我不确定这是不是一个好的解决方案.
是否有可以安装的Sqlite数据库服务器来处理Sqlite数据库文件上的传入事务?
如果我要求客户自行下载和安装MySQL,我是否必须拥有商业许可证?
任何建议或方向都会很棒,谢谢.
您可以在共享网络驱动器上使用Sqlite文件,具体取决于底层文件系统:
http://www.sqlite.org/faq.html#q5
多个进程可以同时打开同一个数据库.多个进程可以同时执行SELECT.但是,只有一个进程可以随时对数据库进行更改.
SQLite使用读取器/写入器锁来控制对数据库的访问.(在Win95/98/ME下,缺少对读取器/写入器锁的支持,而是使用概率模拟.)但请注意:如果数据库文件保存在NFS文件系统上,则此锁定机制可能无法正常工作.这是因为许多NFS实现都会破坏fcntl()文件锁定.如果多个进程可能同时尝试访问该文件,则应避免将SQLite数据库文件放在NFS上.在Windows上,Microsoft的文档说如果您没有运行Share.exe守护程序,则在FAT文件系统下锁定可能不起作用.对Windows有很多经验的人告诉我,网络文件的文件锁定是非常错误的,并且不可靠.如果他们说的是真的,在两台或多台Windows机器之间共享SQLite数据库可能会导致意外问题.
我认为Firebird可以是一个非常好的选择
免费
嵌入式版本存在