我想知道我的以下方法是否有意义,或者是否存在我错过的缺陷:
问题:SQL查询很慢。内存缓存不是持久的。
我的想法是在以下事项中编写我的nodejs进程:
通过这种方法,我可以完全消除SQL在多个表上运行复杂查询,并且可以使用id作为对象键轻松有效地检查内容。
由于NodeJS是单线程的,我甚至拥有高效的“事务”功能,因为内存变量的更新将以原子方式进行。
虽然这种方法不允许横向缩放,但我觉得这对我的大部分项目都足够了。
我错过了一些根本性的缺陷吗?
答案 0 :(得分:0)
我想到的事情:
您的内存限制:您计划在这些变量中保留多少数据?这些数据会随着时间的推移而变大吗如果是这样,如何管理可用内存?
如果您执行复杂的“查询”,则不会获得索引(B-Trees)的SQL优势。所以你的查询必须是简单的查找。对于更复杂的查询,您可以考虑数据的临时/内存表。在SQLite中,您可以使用:rc = sqlite3_open(":memory:", &db);
(https://www.sqlite.org/inmemorydb.html)。
我会利用节点child_process功能让你的新机制远离你的主线程(https://nodejs.org/api/child_process.html)。