我正试图找到一个像样的关系数据库,它可以在小型服务器上运行,易于管理并且受到社区的喜爱。
我的个人 Ubuntu 服务器需要一个轻量级关系数据库,只有 1Gb 内存。它会用于偶尔的读写,因此不需要高性能。
我考虑过流行的选项,如 MySQL 和 PostgreSQL,但它们消耗太多资源,甚至 MariaDB 也可能太重,因为其他项目也应该在我的服务器上运行。
我考虑过 Firebird,但事实证明它对我来说不是很直观,而且如果没有很多社区生成的指南,故障排除也很困难。
我想知道是否值得为小型宠物项目学习像 Firebird 这样的利基数据库。是否有需要最少 RAM、具有直观管理、驱动程序和 ORM 以及社区支持的替代方案?
你可以试试SQLite。
在我看来,它是最轻量级的关系数据库系统,具有足够的支持、文档和用户群,可以被视为主流。它易于学习并且主要遵循 SQL 标准。因此,您将能够将获得的大量语法知识应用到其他关系数据库系统。
它实际上也意味着便携,因为它的主要用例之一是用于将移动设备上的数据库内部化的移动应用程序。因此,它旨在以轻量级的方式运行。
尽管即使是智能移动设备刚问世时也能运行超过 1 GB 的内存。我个人认为任何试图在这么小的硬件上运行任何东西的人都是在打一场不必要的艰苦战斗。
SQLite 是一个嵌入式数据库,这意味着您的实际应用程序进程与数据库文件进行交互,并且不涉及服务器。您可以获得允许您通过网络进行查询的程序,就像普通的数据库服务器一样,但 SQLite不是为此设计的。
当我看到这个主题时,我首先想到的是Firebid。这是一个非常酷的数据库,但并不那么流行,因为它是最近从 Interbase 开源的,当时 MySQL 已成为 Web 开发的事实标准。我使用它 15 年,在几 GB 上使用一个相当大的数据库,服务器上有大约 2Gb 的 RAM。它为 7 个持续连接的客户端提供服务。
它有很好的 SQL 语法和存储过程。作为 GUI,您可以使用 IBExpert,它可能是处理数据库的最佳应用程序。
通过微不足道的设置更改,仅
innodb buffer pool
,并删除number of io threads
,此处的 MariaDB 实例以 200MB 的常驻集大小运行。作为一个技巧.. 无论你碰巧使用什么数据库,找到它显示所有默认和当前设置的任何方法,并将它们全部复制到配置文件中。
向下浏览列表,寻找明显是内存大小(缓冲区/池/缓存)或暗示它(最小线程数等)的任何内容,然后将每个数字减掉一个数字,或者将它们全部除以同一个除数 -您只是想大致均匀地缩小规模。
如果数据库有关于整数大小或设置之间比率的规则,您可能需要进行一些迭代,但您通常会在日志中看到明显的错误或完全无法启动 - 但更有可能会没事。
如今,大多数 OTB 配置都假设有数百个(如果不是数千个)并发会话,您只需要将其恢复即可。