2

我有一个大约 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 实例类型。

4

1 回答 1

1
  1. 如果您不需要连接,请绝对使用 cassandra。
  2. 如果成本是一个问题,EC2 对于它所提供的东西来说真的很贵。您可以以一半的成本轻松获得 4 倍性能的服务器,您可以考虑像 hetzner 或 hosteurope 这样的想法。
  3. 如果速度是一个问题,请完全避免使用 EC2,并尝试获得合适的服务器,而不是虚拟实例。或者至少来自主机的虚拟实例,不是所有东西都运行得像糖浆一样慢。37gb 对于一台好服务器来说并不多,你最终每月要为此支付 40-60 欧元
  4. 在这种大小的平面数据上,mysql 的表现会很差。Postgres 将是更好的免费 sql 选项,但 NOSQL 会在性能方面胜出。
于 2013-10-25T08:38:15.493 回答