对于一个简单的任务管理应用程序(例如),存储和查询数据的最佳方式是什么?目标是在单个EC2实例中以最小的资源消耗(CPU、磁盘、RAM)获得最大的性能。
这也取决于用例——它是有很多读还是很多写的数据库?当你在谈论任务管理时,你必须知道你期望有多少条记录,如果你期望更多的insert或更多的select,等等。
关于SQL数据库,可以在这里找到有趣的基准:
- https://www.sqlite.org/speed.html
基准测试表明,SQLite在很多情况下非常快,但在某些情况下效率也很低。(不幸的是,基准测试不是最新的,但仍然可能有帮助)
SQLite也很好,因为它只是磁盘上的一个文件,包含整个数据库,您可以使用SQL语言访问数据库。
可以在这里找到非常长的和筋疲力尽的No-SQL基准测试:
- http://www.datastax.com/wp content/themes/datastax - 2014 08/files/nosql_benchmarks_endpoint.pdf
了解数据库引擎也是很好的,例如,当使用MySQL时,在MyISAM和InnoDB之间仔细选择(好的答案是这里MyISAM和InnoDB的区别是什么?)
如果你只是想优化性能,你可以考虑优化使用硬件资源(如果你从数据库读很多,你没有那么多的写,你可以缓存数据库(innodb_cache_size) -如果你有足够的RAM,你可以从RAM读取整个数据库。
所以长话短说-如果你正在为一个非常简单和小的数据库选择引擎,SQLite可能是你想要使用的最简约的方法。如果你想建立更大的东西,首先要明确你的需求。