使用遗留数据库、新数据库和 Redis 缓存层的新 node.js 应用

New node.js app using legacy database, new database, and Redis caching layer

我们正在使用 Node 开发我们网站的新版本,但我们需要继续按原样使用遗留 mysql 数据库,同时还要通过新数据库中的新表向某些模型添加新字段, 并添加一个缓存层。 最好的方法是什么?我们正在考虑使用 Jugglingdb 并编写我们自己的适配器。它需要做几件事:

  1. 循环法 select 来自我们数据库群中的几台服务器。
  2. 为只读连接缓存到 Redis 中
  3. 了解哪些字段在旧数据库中,哪些字段在新数据库中。
  4. 连接到数据库以进行 CRUD 连接。

这在理论上可以使用 jugglingdb 适配器实现吗?或者有人有其他建议使用另一种更好的技术 and/or 完全不同的 ORM 包吗?

有一个适配器,jugglingdb-redis-hq,它有一个 "backyard" 功能,这几乎是我们想要的,除了它似乎基本上是用于一种向后缓存,即制作持久副本将redis中的过期数据转移到数据库中。我们不想触及数据库 read/write 除非我们正在更改或插入某些内容。

令人惊讶的是,我发布这个问题已经 3 年了。我们最终做了什么,我们终于几乎接受了这个,是这个堆栈:

  • nodejs(当然)
  • hapijs 后端框架
  • Sequelize ORM来谈谈 到 mysql(Sequelize 有内置的连接池!)
  • 用于缓存的 Redis
  • graphql api 使用 graphql-sequelize 模块
  • 在hapi应用层下面写了一个服务层来查询graphql api

至关重要的是,Sequelize 并没有让连接到 2 个不同的数据库变得容易,因此我们决定只向旧模式添加新表,而不对旧表进行任何更改。从那以后,当我们真的不得不做的时候,我们最终做了几个小的 ALTER TABLE。我仍然很好奇我们是否可以用另一种方式来完成这部分,如果另一个 ORM 可以让我们更容易地融合引擎盖下的 2 个数据库。