我想在某些节点上使用流行的 YCSB 基准工具对一些 NoSQL 数据库进行基准测试(CRUD 操作)。
但在我这样做之前,我想了解这些数据库在 CRUD 基准测试方面的关键机制是什么。例如,像 MVCC 这样的并发控制对性能有很大的影响吗?或者...
我想在某些节点上使用流行的 YCSB 基准工具对一些 NoSQL 数据库进行基准测试(CRUD 操作)。
但在我这样做之前,我想了解这些数据库在 CRUD 基准测试方面的关键机制是什么。例如,像 MVCC 这样的并发控制对性能有很大的影响吗?或者...
制作一个好的性能测试很难,制作一个可靠的测试就更难了。话虽这么说,你是对的,一个人需要
了解此类数据库的关键机制是什么
关键瓶颈始终是磁盘 I/O。当您了解某些 NoSQL DB 的工作原理时,请查看它是如何以及何时写入磁盘的,并将其追踪到真正的fsync()
调用。你可能会感到不愉快的惊讶。然后看看CAP 定理。看看受损的数据库作者做了什么。如果他们另有主张,请查看代码以证明他们是错误的。清楚地了解这个 DB 是哪对 CAP。您无法比较 CP 与 AP 并得出任何有意义的结论。可以稍微按摩和更改您的业务案例,以便它更适合特定的数据库。反过来也是如此 - 如果您的用例可以说最终一致性,那么您可以选择一个 NoSQL 数据库,如果不是 - 您还有另一个。
这取决于您要测试的特定 NoSQL 数据库。如果它们在内存中具有持久性,例如 Redis、CouchBase、Tarantool、Aerospike,那么 CRUD 操作应该非常快,因为它们所做的只是写入文件的末尾(通常称为预写日志)并更改内存中的结构.
当涉及到并发性时,它也取决于。例如 Tarantool 是完全非阻塞的,Redis 是单线程的,所以你应该并行发出大量的 CRUD 操作来测试它。