许多树莓派项目需要一个数据库系统来存储各种数据,以便后续使用。在树莓派上,托管数据库可以成为一个独立项目,因为有许多选项可供选择,而且做出选择并不是那么简单。在本文中,我将介绍最流行的解决方案,并解释每种方案的优缺点,以帮助你做出决定。
总体而言,树莓派上没有适用于所有用例的完美数据库管理系统。这是一个个人选择:每个系统都有优缺点,因此决定将根据项目目标和开发人员的技能而有所不同。
作为一名Web开发人员,我倾向于使用相同的技术(编程语言和数据库系统)。这并不是因为它们是“最佳”选择,而是因为使用我熟悉的技术可以更快地构建一切。不过,如果你还没有特别喜欢的技术,那就应该考虑用哪些选项。
MariaDB (MySQL)
MariaDB是MySQL的一个免费开源分支,是在几年前甲骨文公司收购Sun公司(以及MySQL)时创建的。从那时起,它有了很大的改进,因此在安装新的MySQL服务器时,MariaDB几乎是默认选择。
尽管有许多其他选项试图挑战MySQL在数据库层级中的领导地位,但它仍然是最受欢迎的选项之一。我在YouTube频道上做了一个调查,近70%的粉丝仍然推荐在树莓派上使用它:
MariaDB是存储大量数据的绝佳选择,特别是当你需要管理具有不同权限集的多个用户时。它通常用于Web项目(通常与PHP语言一起使用)。
它在近期树莓派型号上运行良好,适用于中小型数据库,但对于较旧的型号或树莓派Zero来说可能有点重。
当你查看谷歌趋势时,MySQL仍然是最受欢迎的解决方案,因此在使用这个数据库系统进行项目时,你很容易找到文档、论坛和帮助。
MariaDB/MySQL使用SQL进行查询,SQL也是最流行的语言,因此当你尝试进行复杂查询时,找到相关资源是不会有任何问题的。
作为一名Web开发人员,我多年来主要使用MySQL和PHP,因此它通常是我开始新项目时的默认选择。我很少因为这个陷入困境,所以在大多数情况下我都会推荐它。
安装
MariaDB在树莓派操作系统和大多数其他发行版的默认软件源中都有提供,因此安装应该很简单。它是这个列表中少数几个以客户端/服务器模式运行的解决方案之一,这意味着你必须先安装服务器。
顺便说一下,如果需要,你可以在不同的树莓派(或计算机)上安装MySQL服务器。如果你的项目使用非常有限的树莓派型号,但可以访问运行MySQL服务器的另一台设备,这也是可行的。
要检查是否已安装MySQL,你可以阅读我写的另一篇关于这个主题的文章。
https://raspberrytips.com/check-if-mysql-is-installed/
如果尚未安装,请按照以下步骤在树莓派上安装它:
在安装服务器之前,先进行系统更新:
sudo apt updatesudo apt upgrade
然后安装MariaDB:
sudo apt install mariadb-server
但之后还有一些额外的步骤来创建root密码和第一个用户。
我在这篇关于如何在树莓派上使用MariaDB的完整教程中解释了这些。
https://raspberrytips.com/install-mariadb-raspberry-pi/
由于MariaDB/MySQL可以处理不同级别的权限,因此对于初学者来说可能有点复杂,但通过阅读我的教程,你可以很快掌握它。我还分享了一个图形工具,你可以用它来管理MySQL服务器,而无需输入大量命令和SQL查询。
使用
一旦安装了服务器,就几乎可以用任何语言访问MySQL服务器。你可能需要安装额外的软件包来使用它,并且你会很容易找到针对你喜欢的语言的帮助。
例如,如果你使用PHP创建Web项目,则必须安装此软件包才能连接到新的MySQL服务器:
sudo apt install php-mysql
完成后,你可以使用PHP网站上列出的所有PHP函数。
https://www.php.net/manual/en/book.mysqli.php
在Python中,你可以使用PIP安装MariaDB连接器,如下所示:
sudo pip3 install mariadb
MariaDB官方网站上有一个很好的教程,可以帮助你开始使用MariaDB和Python。
https://mariadb.com/resources/blog/how-to-connect-python-programs-to-mariadb/
SQLite
SQLite是MySQL的一个有趣替代品,特别是在树莓派上。这个数据库系统要轻得多(因此得名)。安装它需要不到1MB的空间,而MariaDB需要近200MB的各种软件包。
SQLite是一个无服务器的独立数据库系统。它有许多限制,对于较大的项目来说可能是个问题(例如,单用户无身份验证),但对于家庭中的小型项目来说,它通常是最简单的入门方式。
简而言之,SQLite非常适合使用有限数据量且没有任何网络连接的小型独立项目。
注意:TinyDB是另一个值得考虑的替代品,与SQLite非常相似。我不会对它进行详细介绍,但基本上,它比SQLite还要轻。对于小型树莓派项目,你大多数时候都不需要它缺失的一些功能。
安装
要在树莓派操作系统(以及任何基于Debian的发行版)上安装SQLite,你可以简单地运行以下命令:
sudo apt install sqlite3
然后,你可以使用sqlite3命令来创建数据库并与之交互。
以下是我树莓派上测试时的完整日志示例:
如你所见,我只需在“sqlite3”命令后指向数据库文件即可。如果文件不存在,它将创建该文件。
然后你可以直接使用SQL命令来创建表、插入数据并进行查询。这再简单不过了。你需要知道如何使用SQL语言,并且其他一切都很简单。
使用
与MariaDB类似,然后你需要安装一个连接器,以便从项目代码中访问SQLite数据库:
使用PHP:
sudo apt install php-sqlite3
安装后,你可以使用SQLite3函数。
https://www.php.net/manual/en/book.sqlite3.php
使用Python,它应该可以直接工作,以下是一个基本示例:
请记住,这个解决方案没有安全性、用户和权限。它很棒,因为它很容易设置和入门,但不要将其用于存储敏感数据的大型项目。
MongoDB
MongoDB与本文中列出的先前选项非常不同。它是一个非关系型数据库管理系统,意味着数据存储非常灵活。基本上,它是键和值的组合,可以是任何类型(字符串、数组、对象等)。
它不使用SQL语言或其任何变体。它使用MQL(MongoDB查询语言),这与你可能习惯的语言完全不同。
总体而言,当你没有MySQL经验时(有些人会认为从MongoDB开始比从MySQL开始更容易),并且需要更多灵活性时(例如,如果你的项目没有完全定义,并且可能会随着时间的推移而发生很大变化),它是一个不错的选择。
我并不是MongoDB的忠实粉丝。我在安全性和基本理解如何查找其他开发人员在数据库中创建的内容方面遇到了很多问题。但这可能是因为我比基于SQL的解决方案了解得更少。
安装
在树莓派操作系统上安装MongoDB特别复杂,因为它不在默认软件源中,而且他们的网站上也没有任何可下载的编译好的软件包。
唯一的选择是按照他们的文档中的说明从源代码编译。
https://github.com/mongodb/mongo/blob/master/docs/building.md
这花了我一段时间,最后还导致系统崩溃,所以我真的不推荐这样做,但如果你想尝试一下,可以查看他们的文档。我还在GitHub上找到了一个Mongo for Pi项目,但我没有测试过,所以也不能真正推荐它。
在Pi上获取MongoDB的最简单方法是先安装Ubuntu。
https://raspberrytips.com/install-ubuntu-desktop-raspberry-pi/
然后你可以按照他们文档中的这一页来添加软件源并遵循其他配置步骤。
https://www.mongodb.com/zh-cn/docs/
使用
一旦安装了MongoDB并创建了第一个数据库,在树莓派上使用它与先前的解决方案没有太大不同。
例如,要使用Python连接到Mongo数据库,你首先需要安装这个库:
sudo apt install python3-pymongo
然后你可以在脚本中导入“pymongo”并使用所有这些函数。
PostgreSQL
PostgreSQL是企业环境中最受欢迎的数据库之一。与MySQL的主要区别在于PostgreSQL是一个面向对象的数据库,而MySQL是一个关系型数据库。PostgreSQL还推荐用于复杂查询、大型数据仓库和数据分析。
它与MySQL已经竞争了很长时间。看起来MySQL/MariaDB正在获胜,但PostgreSQL在趋势中非常稳定,所以我想仍然有很多开发人员在使用它:
PostgreSQL并不完全符合传统的树莓派用法,后者通常用于小型项目。但如果你习惯使用PostgreSQL,我理解你可能也有兴趣在树莓派上使用它。
安装
与MariaDB一样,PostgreSQL在树莓派操作系统的默认软件源中也有提供,因此你可以使用以下命令安装它:
sudo apt install postgresql
然后你需要使用以下命令创建第一个用户:
sudo su postgrescreateuser $USER -P --interactive
然后使用psql命令连接到你的数据库,并使用SQL语言来管理一切:
psql
如果你需要更多细节,这里有一篇关于在树莓派上设置PostgreSQL的完整教程。
https://raspberrytips.com/postgresql-on-raspberry-pi/
使用
PostgreSQL非常受欢迎,几乎可以与任何语言一起使用。如果你想在Python中使用它,最常用的库是psycopg2:
sudo pip3 install psycopg2
然后你可以将其导入脚本中,并使用该类连接到你的数据库。以下是一个开始使用Python和PostgreSQL的很好的教程。
InfluxDB
我要在这个列表中介绍的最后一个选项是InfluxDB,一个时间序列数据库。尽管它像任何其他数据库一样存储和查询大量数据,但InfluxDB针对时间戳数据进行了更多优化;换句话说,当键索引是时间时。
时间序列数据库传统上用于金融市场分析和工业自动化设置。然而,它们对于系统监控任务、DevOps、物联网监控和传感器数据监控也非常方便。
与我们之前介绍的关系型数据库不同,InfluxDB从一开始就作为时间序列数据库构建,因此为此目的进行了优化。InfluxDB还有一个针对低功耗设备(如树莓派)进行了优化的边缘版本。
安装
无法从树莓派操作系统的默认软件源中安装InfluxDB。你需要手动添加其软件源来安装它。
以下是在树莓派上安装InfluxDB的快速摘要:
通过粘贴以下一个长命令来添加GPG安全密钥和软件源:
curl --silent --location -O https://repos.influxdata.com/influxdata-archive.keygpg --show-keys --with-fingerprint --with-colons ./influxdata-archive.key 2>&1| grep -q '^fpr:+24C975CBA61A024EE1B631787C3D57159FC2F927:$'&& cat influxdata-archive.key| gpg --dearmor| sudo tee /etc/apt/keyrings/influxdata-archive.gpg > /dev/null&& echo 'deb [signed-by=/etc/apt/keyrings/influxdata-archive.gpg] https://repos.influxdata.com/debian stable main'| sudo tee /etc/apt/sources.list.d/influxdata.list
刷新软件源以查看新软件包:
sudo apt update
安装InfluxDB软件包:
sudo apt install influxdb2
安装后,你还需要启动InfluxDB服务:
sudo systemctl start influxdb
使用
你可以从图形界面或命令行使用InfluxDB。图形界面使管理更加容易。只需从浏览器访问Web面板:
http://<IPADDRESS or HOSTNAME>:8086
如果你喜欢手动操作,你可以随时从命令行调用命令:
influx
我有一篇关于在树莓派上开始使用InfluxDB的完整教程,如果你想了解更多细节,可以查阅这篇教程。
https://raspberrytips.com/influxdb-on-raspberry-pi/
相关问题
SQL Server能在树莓派上运行吗?
SQL Server是微软为Windows服务器创建的数据库管理系统。他们一段时间前发布了适用于Linux服务器的版本,但它仅设计用于x86架构,意味着它与树莓派不兼容。
一个替代方案是在Docker中运行Azure SQL Edge,或者让另一台运行Windows的计算机托管服务器。然后你可以使用ODBC与大多数语言从树莓派连接到SQL服务器。
总体而言,微软产品(Windows或SQL Server)可以工作,但并未针对树莓派进行优化,因此我目前不推荐使用它们。
如何在树莓派上查看和管理数据库?
每个数据库管理系统都有一套工具,你可以使用这些工具来更轻松地管理数据库和权限,从图形界面进行操作。MariaDB/MySQL有PHPMyAdmin,SQLite有DB4S,MongoDB有Compass等。
因此,即使你需要输入一些命令来安装它们,但之后你很可能会使用图形用户界面进行日常操作。
官方网站:https://edatec.cn/zh/cm0
淘宝店铺:https://edatec.taobao.com/
264