Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQLite与tomcat中的并发访问_Java_Sqlite_Tomcat_Database Connection_Tomcat6 - Fatal编程技术网

Java SQLite与tomcat中的并发访问

Java SQLite与tomcat中的并发访问,java,sqlite,tomcat,database-connection,tomcat6,Java,Sqlite,Tomcat,Database Connection,Tomcat6,我正在研究在Tomcat中部署的Wep应用程序中使用SQLite的可能性。 通过谷歌搜索,我发现以下答案是: 不幸的是,您无法在Tomcat上创建SQLite连接池 SQLite为每个用户都有一个数据库文件 我不知道这是什么意思 这是否意味着我不能通过web应用程序的许多部分同时访问数据库文件? 或者这仅仅意味着性能 我在这里感到困惑 这是否意味着我不能通过web应用程序的许多部分同时访问数据库文件 不,你不能。SQLite并不打算在这种情况下使用 看看 如果有许多客户端程序通过网络访问公共数据

我正在研究在Tomcat中部署的Wep应用程序中使用SQLite的可能性。
通过谷歌搜索,我发现以下答案是:

不幸的是,您无法在Tomcat上创建SQLite连接池 SQLite为每个用户都有一个数据库文件

我不知道这是什么意思

这是否意味着我不能通过web应用程序的许多部分同时访问数据库文件?
或者这仅仅意味着性能

我在这里感到困惑

这是否意味着我不能通过web应用程序的许多部分同时访问数据库文件

不,你不能。SQLite并不打算在这种情况下使用

看看

如果有许多客户端程序通过网络访问公共数据库,则应该考虑使用客户机/服务器数据库引擎而不是SQLite。SQLite将在网络文件系统上工作,但由于与大多数网络文件系统相关的延迟,性能将不会很好。此外,许多网络文件系统实现的文件锁定逻辑包含bug(在Unix和Windows上)。如果文件锁定无法正常工作,则两个或多个客户端程序可能会同时修改同一数据库的同一部分,从而导致数据库损坏。因为这个问题是由底层文件系统实现中的bug引起的,所以SQLite无法阻止它

编辑:对于Java工作,我喜欢。它不是SQLite,但也很好,很小

这是否意味着我不能通过web应用程序的许多部分同时访问数据库文件

不,你不能。SQLite并不打算在这种情况下使用

看看

如果有许多客户端程序通过网络访问公共数据库,则应该考虑使用客户机/服务器数据库引擎而不是SQLite。SQLite将在网络文件系统上工作,但由于与大多数网络文件系统相关的延迟,性能将不会很好。此外,许多网络文件系统实现的文件锁定逻辑包含bug(在Unix和Windows上)。如果文件锁定无法正常工作,则两个或多个客户端程序可能会同时修改同一数据库的同一部分,从而导致数据库损坏。因为这个问题是由底层文件系统实现中的bug引起的,所以SQLite无法阻止它


编辑:对于Java工作,我喜欢。它不是SQLite,而是小巧美观。

SQLite支持同一文件的多个读卡器,但只支持一个编写器。单个应用程序可以创建到同一数据库的多个连接。您提到的问题提到,该应用程序希望为每个用户创建一个单独的数据库,并为所有用户使用一个连接池。它与访问数据库本身无关

SQLite在文件级别锁定数据库,这意味着写入程序将阻止数据库的所有读卡器。您可以通过使用预写日志来缓解这种行为,该日志允许读卡器读取数据,即使编写器正在进行修改

您应该检查的优点和缺点,以确保您可以在您的web应用程序中使用它。至少,您需要SQLite 3.7+,并且您的数据库必须与web应用程序位于同一台计算机上。对于小场景,这可能是可以的


不过,我同意Tichodroma的观点,SQLite不适用于web场或在单独的服务器上托管。

SQLite确实支持同一文件的多个读卡器,但只支持一个编写器。单个应用程序可以创建到同一数据库的多个连接。您提到的问题提到,该应用程序希望为每个用户创建一个单独的数据库,并为所有用户使用一个连接池。它与访问数据库本身无关

SQLite在文件级别锁定数据库,这意味着写入程序将阻止数据库的所有读卡器。您可以通过使用预写日志来缓解这种行为,该日志允许读卡器读取数据,即使编写器正在进行修改

您应该检查的优点和缺点,以确保您可以在您的web应用程序中使用它。至少,您需要SQLite 3.7+,并且您的数据库必须与web应用程序位于同一台计算机上。对于小场景,这可能是可以的


不过我同意蒂乔德罗马的说法,SQLite不适用于web场或在单独的服务器上托管。

非常奇怪的说法。这似乎与他们在同一链接中声称SQLite适用于中等级别的网站这一事实相矛盾。这不是矛盾吗?这在很大程度上取决于您如何连接到SQLite数据库。连接池是连接通常用于重负载站点的一种连接方式。<代码>如果有许多客户端程序通过网络访问公共数据库,则应该考虑使用客户机/服务器数据库引擎而不是SQLite。< /代码>。一个中等级别的网站不属于这一类。请询问开发SQLite的人。抱歉,这句话的意思是什么?你也同意吗?我没有抓住要点吗?什么?非常奇怪的说法。这似乎与他们在同一个链接中声称SQLite可以作为中级网站的事实相矛盾。这不是矛盾吗?这在很大程度上取决于你如何连接到SQLite数据库。连接池是连接通常用于重负载站点的一种连接方式。<代码>如果有许多客户端程序通过网络访问公共数据库,则应该考虑使用客户机/服务器数据库引擎而不是SQLite。< /代码>。一个中等级别的网站不属于这一类。请询问开发SQLite的人。抱歉,这句话是什么意思?你也同意吗?我是不是漏掉了重点?什么?