sqlite是Serverless的
https://www.sqlite.org/serverless.html:什么叫serverless
https://www.sqlite.org/different.html: sqllite的优缺点
以上两篇文章非常好,一句话:sqlite没有服务端进程,它就是在代码运行时由代码进程来操作数据库的。而一般的数据库是有服务端进程的,应用程序通过网络协议对数据库操作。
第一篇文章还介绍了2种serverless,sqlite是Classic Serverless的,而亚马逊S3是Neo-Serverless的。
-
Classic Serverless: The database engine runs within the same process, thread, and address space as the application. There is no message passing or network activity.
-
Neo-Serverless: The database engine runs in a separate namespace from the application, probably on a separate machine, but the database is provided as a turn-key service by the hosting provider, requires no management or administration by the application owners, and is so easy to use that the developers can think of the database as being serverless even if it really does use a server under the covers.
SQLite is an example of a classic serverless database engine. With SQLite, there are no other processes, threads, machines, or other mechanisms (apart from host computer OS and filesystem) to help provide database services or implementation. There really is no server.
Microsoft Azure Cosmo DB and Amazon S3 are examples of a neo-serverless databases. These database are implemented by server processes running separately in the cloud. But the servers are maintained and administered by the ISP, not by the application developer. Application developers just use the service. Developers do not have to provision, configure, or manage database server instances, as all of that work is handled automatically by the service provider. Database servers do in fact exist, they are just hidden from the developers.
It is important to understand these two different definitions for "serverless". When a database claims to be "serverless", be sure to discern whether they mean "classic serverless" or "neo-serverless".