我有一个大约 4000 万行的 MySQL 数据库(包括索引在内的 37 GB 数据)。在 DB 上执行的任务主要是读取,并且每隔一两个月更新一次 DB。我希望查询延迟不超过 50 毫秒。我对黑白 Cassandra 和 MySQL 感到困惑,因此考虑以下方面寻找一些指导。
1.) 查询不会有任何“JOINS”,但它可以在多个字段上,并可选择包含“OR”子句。主键没有单个字段,而是多个字段。查询如下所示:
SELECT * FROM routes
WHERE origin='XYZ' AND (destination='ABC' OR destination='PQR')
AND startTime <= '14:00:00' AND startTime >= '10:00:00'
AND flight=false AND monday=true
2.) 数据库将托管在 ec2 上。成本、可扩展性和容错性(即副本数量)也是主要问题。假设 50 次查询/秒,请建议我应该选择的实例数和 ec2 实例类型。