2020年MongoDB的三大替代方案,各自的优缺点比较( 二 )


从NoSQL迁移到SQL可能很困难 。从根本上说,它们是一种不同类型的数据库结构 。NoSQL是具有键值对的文档存储,而SQL由表和行组成 。
其中一个选项,也是The Guardian在迁移中使用的,是PostgreSQL中的JSONb列类型 。然而,使用JSON blobs感觉有点像黑客,就像把NoSQL数据库塞进了SQL格式 。
MongoDB替代方案3:DynamoDB

2020年MongoDB的三大替代方案,各自的优缺点比较

文章插图
 
DynamoDB是亚马逊网络服务(AWS)的NoSQL产品 。MongoDB和DynamoDB都可以存储类似JSON的数据,具有任意的模式 。
DynamoDB最近增加了一个名为rest加密的特性,现在它仍然是一个NoSQL数据库,与MongoDB竞争非常激烈 。
这意味着从MongoDB迁移到DynamoDB确实非常容易 。
/ DynamoDB的优点 /
DynamoDB是AWS上的旗舰NoSQL数据库,所以它的先天优势是AWS平台的成本、速度和可靠性 。
作为AWS产品,它可以轻松地与AWS Lambda和API Gateway集成 。
对于目前使用Mongo的人来说,DynamoDB的最大优势就是用户可以直接从MongoDB进行实时迁移到DynamoDB 。
最好的部分是没有可管理的基础架构——Amazon负责管理 。
/ DynamoDB的缺点 /
如果我认为NoSQL丢失记录的可能性太大,那么DynamoDB对我来说不是一个好选择 。
DynamoDB可能存在可扩展性问题,比如那些与所谓的hotkeys相关的问题,这些记录的评估频率远远高于其他记录 。
此外,与MongoDB相比,DynamoDB支持较少复杂的数据类型,并且是AWS专有的产品 。
/ DynamoDB不是MongoDB /
Samantha Atkins和Fredrik Erasmus等有益的读者花时间对本文进行了回复,并提出了DynamoDB的其他缺点 。
  • 用DynamoDB做索引是很困难的,没有全表扫描就没有一般的查询支持 。
  • DynamoDB使得很难从集合中检索甚至简单的文档计数,并且它不使用游标 。
  • DynamoDB的热键和热分区需要专业技术才能有效使用 。
  • 使用AWS上的DynamoDB,你必须用RCU(读容量单位)和WCU(写容量单位)来指定“吞吐量容量”,这给你的项目增加了很大的复杂性 。
DynamoDB被称为“我曾经使用过的最不友好的持久化解决方案” 。事实上,MongoDB自己的广告文案列出了MongoDB相对于DynamoDB的十几项优势 。
所以,在从MongoDB切换到DynamoDB之前,一定要三思而后行,尽管两者之间有明显的相似之处 。
我的看法JAM Stack是当今最酷的技术之一 。它的速度快得离谱,易于访问,对SEO也很友好,另外静态文件在AWS上是免费托管的 。
然而,JAM Stack只有对于那些有能力有一个构建步骤并重新编译每一个变化的应用程序才是正确的选择 。
如果你问我,我会说,即使是非常大的网站也可以通过预定的编译,比如说每小时一次,在JAM Stack上构建 。JAM Stack很激进 。
它可能不适用于新闻站点,但是许多动态站点不需要比这更频繁地更新内容,静态站点当然也不需要 。
SQL vs. NoSQL如果说需要编译步骤是一个项目的决定性因素,那么就会归结为SQL与NoSQL:PostgreSQL或DynamoDB 。
PostgreSQL不一定要托管在Amazon上,不过可以托管在Amazon RDS上 。DynamoDB是由亚马逊开发的,是亚马逊的独家产品 。
SQL数据库本身功能更强大,但也更复杂 。它们的优势在于业务分析和搜索 。
NoSQL数据库更容易设置,对很多项目来说足够了 。这也是为什么The Guardian考虑用DynamoDB来写他们的230万篇文章 。
最终,他们选择了PostgreSQL,因为DynamoDB在2017年的时候并没有提供加密功能,但如果他们今天考虑从MongoDB转移到PostgreSQL,他们很可能会做出不同的决定 。
总结JAM Stack(无服务器架构)是一个很好的选择,特别是对于任何一个以静态为主的网站,也是一个很好的技术,需要注意 。
PostgreSQL拥有一个庞大的社区,并在一个可靠的、功能丰富的、性能卓越的开源软件包中提供了SQL的所有功能 。
DynamoDB是MongoDB的即插即用的替代产品,它为你提供了规模、安全性和速度,而无需维护任何基础设施 。




推荐阅读