选择 Node.js 数据库
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
原文发布于atdatabases.org
在启动大多数 Node 项目时,首先要做的事情之一就是选择数据库和数据库库。通常情况下,你应该先选择数据库,然后再选择数据库库,但 @databases 支持几种不同的数据库,所以你有一定的选择余地。
SQL 与 NoSQL
近年来,NoSQL 数据库发展迅速,但随后其受欢迎程度有所下降。与 SQL 数据库相比,NoSQL 数据库通常更容易上手,因为无需学习任何新语言,也无需预先定义模式。此外,理论上,NoSQL 数据库在可扩展性方面也优于传统的 SQL 数据库。
虽然在某些情况下可扩展性很重要,但您应该记住,Facebook 将其绝大部分数据存储在少数几台 MySQL 服务器上。除非您是像 Google 或 Facebook 那样的大型科技公司,否则 Postgres 或 MySQL 很可能足以满足您的需求,不会出现任何问题。
认为在 NoSQL 数据库中可以不用像在传统数据库中那样仔细考虑模式设计的想法也常常是错误的。最终,你得到的模式定义通常同样僵化,只不过没有人把这个模式具体写出来而已。
学习 SQL 的观点固然重要,但其实无需投入太多精力就能入门,而且这项技能非常实用。如果你一定要使用 NoSQL 数据库,MongoDB 仍然是最流行的选择之一,但我希望你至少先尝试使用 SQL 数据库。
选择 SQL 数据库
SQL Server 和 Oracle 都被许多企业所使用,但它们的许可和定价模式使得部署和管理变得困难且昂贵,而且它们相对于 MySQL 或 Postgres 并没有任何真正的优势,因此我不会在这里深入探讨它们。
SQLite
如果你需要在小型项目中存储数据,并且该项目将在用户本地机器上运行,而不是在服务器上运行,那么 SQLite 是个不错的选择。它非常便携、轻量级,并且可以在 Node.js 进程内运行。如果你正在构建 Electron 应用,它同样非常适用。
它无法在您的应用程序的多个实例之间共享,因此对于大多数服务器端应用程序来说,它并不是一个好的选择。
如果您决定使用 SQLite,接下来应该阅读《SQLite 和 Node.js 入门指南》。
MySQL
MySQL 被广泛使用和部署。您可以轻松地从任何主流云服务提供商处获取托管版本。如果您已经在使用 MySQL,当然无需为此感到担忧。但我不会在新项目中选择 MySQL,因为:
- 它在处理时区和日期/时间戳方面存在严重问题。
- 它没有合适的类型
BOOLEAN,这导致0/1和true/之间的转换混乱false。 - 它对 JSON 的支持也远不如 Postgres。
如果您决定使用 MySQL,接下来应该阅读《MySQL 和 Node.js 入门指南》。
Postgres
Postgres 是功能最齐全的数据库之一,对日期和时间有很好的处理能力,并且在需要时对存储和查询非结构化 JSON 也提供了出色的支持。
如果您决定使用 Postgres,接下来应该阅读Postgres 和 Node.js 入门指南。
文章来源:https://dev.to/forbeslindesay/choosing-a-node-js-database-498f