【发布时间】:2018-06-02 17:43:57
【问题描述】:
我想知道我的以下方法是否有意义,或者我是否遗漏了一些缺陷:
问题:SQL 查询很慢。内存中的缓存不是持久的。
我的想法是把我的nodejs进程写在下面的事情上:
- 初始化
- 从 sql db 中获取当前状态并保存在变量中
- 对变量运行所有请求查询
- 更新和更改变量,然后更新 sql
- 只有在 sql 成功更新后才响应
通过这种方法,我可以完全消除 SQL 对多个表运行复杂查询的情况,并且可以使用 id 作为对象键轻松高效地检查内容。
由于 NodeJS 是单线程的,我什至拥有高效的“事务”功能,因为内存变量的更新将自动发生。
尽管这种方法不允许水平缩放,但我觉得它足以满足我的大多数项目。
我是否遗漏了一些基本缺陷?
【问题讨论】:
-
一些问题要问自己:某些数据丢失可以吗? (即录制中的丢帧)。是否可以在有限的时间内提供陈旧的数据?为了性能,你能负担得起多少破坏你的架构? (如果 SQL 很慢,为什么不购买更快的服务器?或者具有更多缓存的服务器)
-
“内存中的缓存不是持久化的。”是什么意思?
-
@Bergi 如果服务器崩溃,数据就会消失。通过存储到 sql 并在初始化后获取,我的应用程序将在服务器崩溃中幸存
-
根本缺陷:你基本上说你想在node.js中实现你自己的数据库引擎。这可能有什么问题?
-
@ThatBrianDude 这就是为什么它被称为“内存中 缓存”,而不是“内存中持久存储”。缓存已经完全符合您的描述,为什么要重新实现它?
标签: javascript node.js