是否有任何技术或工具可以在中等大小/流量/并发数据库环境中使用SQLite?

评论

您能说明为什么这将是一件有用的事情吗?否则,我认为应该关闭这不是一个真正的问题。 SQLite不是客户端服务器数据库,实际上是向不需要客户端服务器数据库的人群推销的。

@Eelke尽管从3.7版开始在WAL模式下不再是这种情况-一次只能写入一次,但是“读取器不会阻止写入器,而写入器不会阻止读取器”
为什么?我认为您应该定义您的需求...也许您会找到一个更合适的数据库...

@AK_的主要要求是完整的ACID和非常易于开发和使用的数据库。我们构建了一个自定义版本以用作客户端服务器,其结果简直令人赞叹!人们低估了SQLite的能力,并高估了对小型公司的并发需求。人们需要开放思想。遵循食谱不是唯一的方法。现在,我们的产品在市场上没有竞争。

我做了自己的实现:github.com/afsec/concierge-db

#1 楼

SQLite是一个嵌入式数据库,不能用作客户端/服务器数据库。如果确实愿意,可以使用SQLitening。

什么是SQLitening


SQLitening是非常流行的SQLite数据库的客户端/服务器实现。 />
SQLitening是标准Win32 DLL形式的程序员库。它作为标准Windows服务安装。除了客户端/服务器模式外,该库还允许程序员以本地模式访问SQLite数据库。在任何一种模式下(本地或客户端/服务器),数据库都非常快速和强大。

评论


您能否详细说明或提供“什么是SQLitening”链接?该链接进入一个论坛,但没有透露其实际含义。

–develCuy
2014年9月18日在15:00

#2 楼

如前所述,sqlite不是客户端服务器应用程序,它也不是为高度并发操作而构建的。

,如果使用ssh,则可以“使其成为客户端服务器”。 br />
ssh user@host sqlite3 databasefile select * from table


作品。

评论


因为您已加密连接,这是否被视为“客户端服务器”?

–罗伯特·哈维(Robert Harvey)
18年1月18日在16:06

不,这仅仅是由于托管数据库的计算机与访问数据库的计算机之间的网络。

– ddeimeke
18年1月20日在7:26

#3 楼

不,SQLite不提供网络端点-只能通过文件系统访问。它确实支持从同一台计算机上的多个进程进行并发访问,但是访问级别非常粗(DML锁定整个表)。因此,您可能有十几个Apache httpd进程,并且都在本地磁盘上打开了一个SQLite数据库,所有进程都执行SELECT,并且工作正常。但是实际上,这是工作的错误工具-在这种情况下,我会使用Postgres。

评论


锁定整个表,只有当您在其上书写而不阅读时,许多处理程序才可以从同一张表中读取;)

–ucefkh
2014年8月29日在17:40

#4 楼

Paradigma Software推出了Valentina Server 6.0(现在处于beta测试中),该版本为1:3中的版本。 />
SQLite Server使用SQLite引擎,无需更改,启用WAL。
SQLite Server可在3种操作系统上运行:Mac,Win,Linux。

您可以使用Valentina Studio(免费)应用程序管理此DB Server,以及mySQL,postgreSQL,SQLite,MS SQL。它还可以在3 OS上作为本地C ++制作的应用程序使用。

SQLite Server包含以下功能:SSL,ACL,备份,REST API,通知通道,JSON,XML。

现在可以通过C ++,Xojo和LiveCode访问该服务器。不久将添加PHP,Java,.NET。

Valentina Server的免费版本包括


SQLite数据库的10个连接
Valentina数据库的5个连接
Valentina Reports的5个连接

您可以在本文中阅读的详细信息。

#5 楼

SQLabs提供了一种可能满足您需求的商品名为cubeSQL。

#6 楼

您可以使用netcat一起破解某些东西,但是我无法想象这将是一个非常优雅的解决方案。

#7 楼

您可以使用类似于保管箱的服务。有自托管的解决方案。但是,未为客户端-服务器模型创建SQLite3。您最好使用由客户端-服务器模型完全开发的其他解决方案。

评论


Dropbox和其他文件同步服务不是此问题的解决方案。对于合并多个用户同时写入的数据库中的更改,Dropbox不包含任何逻辑。最终结果将是丢失数据,工作和时间。

– jptros
13年5月7日在17:48