MongoDB用于流量非常低但有机会快速扩展的小型生产项目



我遇到过DB(特别是MongoDB(的问题。

起初,我想将其部署到MongoDB Atlas Cloud,但生产集群(M30及更高版本(对于像我这样的小项目来说相当昂贵。

现在我正在考虑在Heroku Dyno或AWS实例上的某个地方部署MongoDB副本集。

你能不能建议一种成本不高的生产方式/解决方案?

正如我所看到的,AWS为DB提供了一些免费层(Amazon RDSAmazon DynamoDB和其他(,但它真的是免费的还是陷阱?因为我听说AWS定价政策并不像定价页面上看起来那么甜蜜(事实上(

欢迎任何建议或帮助!

尝试MongoDB的最便宜方法是获得一个免费的EC2层实例,如t2.micro,并自己在上面安装MongoDB社区。Linux 64位发行版可在此处获得:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-5.0.5.tgz.只需在该tarfile上运行tar xf,就会提取mongod服务器和mongoCLI可执行文件。不需要其他配置,几乎可以这样启动:

$ mkdir -p /path/to/dbfiles
$ mongod --dbpath /path/to/dbfiles --logpath /path/to/dbfiles/mongo.log --replSet "rs0" --fork

您不需要副本集来使用聚合、事务等。
此解决方案还将使您了解许多重要内容,如网络安全、数据库安全、日志管理、驱动程序兼容性、密钥保管库,以及使用AWS控制台(也许还有AWS CLI(来操作环境。您可以升级到一台更大的机器上,稍后创建成员并将其添加到副本集中,也可以冒险使用MongoDB Atlas。但在这一点上,你会对功能感到满意,尤其是聚合管道、文档模型、驱动程序等,所有这些都是在零成本平台上学习的。

性能在这里并不是一个真正的问题,但使用方便的负载生成器POCDriver(https://github.com/johnlpage/POCDriver)在一个没有特殊设置、文档大小为0.28Kb的t2.micro实例上,在默认为4个线程的情况下,90/10读取/插入混合,并删除了批更新(-b1(,我们在主键_id上获得了大约450次插入/秒和4200次读取/秒。

java -jar POCDriver.jar --host "mongodb://localhost:27017" -k 90 -i 10 -b 1

当然,负载生成器正在与DB引擎本身竞争资源,但作为第一步,最好了解独立于网络考虑因素的性能。从启动EC2实例到运行测试(包括安装javasudo yum -y install java-1.8.0-openjdk-devel.x86_64(大约需要5分钟。

最新更新