PostgreSQL听起来比较陌生,其实这种关系数据库解决方案自1997年以来一直存在,并且是Ruby,Python,Go等社区中的首选。
将PostgreSQL作为下一个项目的数据库解决方案,您绝不会失望(国内邮储银行开始全面使用PostgreSQL作为oracle的替代品,腾讯正在大量使用PostgreSQL)。市面上已经有大量不错的SQL客户端可用于连接到PostgreSQL数据库进行管理和开发。
与其他关系数据库(特别是MySQL)相比,PostgreSQL具有一些引人入胜的功能,例如:
何时使用PostgreSQL
MariaDB是由开发MySQL的同一人创建的,以替代MySQL。奇怪不?在2010年MySQL被甲骨文接管之后(通过收购Sun Microsystems,这也是甲骨文控制Java的方式),MySQL的追随者们开始了一个新的开源项目MariaDB。
MariaDB是使用与MySQL相同的代码库创建。显而易见,MariaDB可以用作MySQL的完全替代品。从MySQL迁移到MariaDB基本上做到零成本。不过切记,从MariaDB返回MySQL是不可能的,这可能导致永久性数据损坏!
尽管MariaDB本质上是MySQL的克隆,但事实上并非如此。两者之间的差异一直在增长。采用MariaDB必须是您经过深思熟虑的决定。MariaDB中有很多新特性:
何时使用MariaDB
如果您想真正地替代MySQL,希望保持创新并且不打算再次返回MySQL,则应该使用MariaDB。例如可以在MariaDB中使用新的存储引擎来补充项目中现有的关系数据模型。
CockroachDB背后的团队似乎由受虐狂组成。有了这样的产品名称"蟑螂"。
估计“蟑螂”的逻辑是无论发生什么事蟑螂都能生存繁殖。CockroachDB背后的团队(由前Google工程师组成)在使用传统SQL解决方案时感到局限性。因为从历史上看,SQL解决方案应该托管在一台机器上(数据不是那么大)。长期以来,没有运行SQL的数据库集群。即使MySQL,PostgreSQL和MariaDB中使用各种复制技术来实现数据库集群。事实上,通过复制功能来实现集群,使用起来还是复杂。
CoackroachDB希望改变这一点,为SQL世界带来轻松的分片,集群和高可用性。
何时使用CockroachDB
如果您一直使用SQL并且对MongoDB的扩展功能有所了解,那么您会喜欢CockroachDB。CockroachDB可以快速设置集群,对集群进行查询,我们终于不需要使用数据库中间件这种临时产物来实现集群数据库了。
近十年来最重要的发展之一就是关联数据。几乎事物都相互关联。社交网络是一个很好的例子。使用SQL乃至文档数据库构建类似的数据模型就是一场噩梦。这些解决方案的理想数据结构是图形,它是完全不同的结构。您可以考虑Neo4j这样的图形数据库。
图形数据库本身是独特的,Neo4j几乎是使用图形唯一选择。它具有的任何功能都是独一无二的。
如果您需要数据之间基于图形的关系,则需要Neo4j。
MongoDB是第一个在技术行业引起轰动的非关系数据库,并且占据相当大的关注份额。
与关系数据库不同,MongoDB是一个“文档数据库”,这意味着它以大块形式存储数据,而相关数据聚集在同一块中。MongoDB具有一些独特的功能,这些功能使您再也不想使用关系数据库:
何时使用MongoDB
MongoDB是结构化SQL到无序NoSQL的桥梁。您真正需要扩展时。是的,您可以使用云SQL服务来解决数据库扩展问题,最后,有些场景用基于SQL的解决方案根本做不到。例如,如果您正在创建一个像Canva这样的产品,用户可以在其中创建任意复杂的设计,并可以在以后编辑它们,如果选择使用关系数据库,那就呵呵了!
顾名思义,当涉及到实时应用程序时,RethinkDB会 “重新考虑”数据库的思想和功能。
数据库更新后,应用程序将无法及时感知。公认的方法是应用程序在有更新时立即发出通知,该更新通过复杂的网桥推送到前端(PHP-> Redis-> Node-> Socket.io是一个示例)。但是,如果可以将更新直接从数据库推送到前端怎么办?是的,这就是RethinkDB的承诺。
因此,如果您要制作一个真正的实时应用程序(游戏,市场,分析等),Rethink DB值得一看。
提起数据库,很容易忽略Redis。这是因为Redis是一个内存数据库,主要用于缓存等支持功能。
Redis是一个简单的K-V存储,存储的是带有到期时间的字符串(当然,可以设置为无穷大)。Redis丧失了部分实用性,获得性能方面巨大提升。由于它完全位于RAM中,因此读写速度非常快(每秒数十万次操作并非闻所未闻)。Redis具有完善的pub-sub系统,该系统使该“数据库”的吸引力提高了N倍。
如果您有一个可以从缓存中受益或具有一些分布式组件的项目,则Redis是首选。
SQLite是一个轻量级的C库,提供了一个关系数据库存储引擎。该数据库中的所有内容都保存在一个文件中(扩展名为.sqlite),您可以将其放在文件系统中的任何位置。这就是使用它所需要的全部!是的,无需安装任何“服务器”软件,也没有要连接的任何服务。
即使SQLite是MySQL之类的数据库的轻量级替代品,它也带来了很大的冲击。其令人震惊的功能包括:
何时使用SQLite
SQLite是一个非常专业的数据库。如果您的应用程序相对简单,并且您不希望拥有庞大的数据库,那么SQLite是一个不错的选择。对于中小型CMS应用、演示应用程序、嵌入式系统,值得您考虑。
Cassandra属于所谓的“ columnar”数据库家族。Cassandra中的存储抽象是一列而不是一行。它将所有数据物理上存储在磁盘的同一列上,最大程度地减少查找时间。
独特的功能
Cassandra设计时考虑了一个特定的用例——处理写重负载和对停机时间的零容忍。这些成为其独特的卖点。
何时使用Cassandra
Timescale时序数据库是物联网(IoT)需要的最好的开源数据库之一。
与传统数据库的区别在于,它主要关注的是海量数据集的分析和可视化。时间序列数据库很少会看到已有的数据的变化;比如:温室中的传感器发送的温度读数-新数据保持每秒积累,这对于分析和报告很重要。
Timescale DB跟同类的其他数据库相比具有一些令人兴奋的功能:
如果物联网是您的领域,或者您追求类似的数据库特性,那么Timescale值得一看。