产品型号包含两种不同的价格,这些价格以相应的本国货币(约20种货币中的任何一种)存储。然后,用户将搜索具有用户货币(可能是世界上任何货币)的价格范围的产品。即用户可以搜索价格在 x 和 y USD之间的产品,但产品的价格为欧元,瑞士法郎或英镑等。问题显然在于每日更换外汇率。
我在Postgres上使用Rails。最终将有大约50k产品实例和合理的期望(最终)每天100k或更多查询。最初我希望在Heroku上运行~5k产品,每天约10k次查询。
我找到了有关SQL CASE的信息。鉴于数据库记录有大约20种不同的货币,因此生成的SQL查询会很长。我可以期待上述用例的合理表现吗?
或者,我正在考虑宣布一种主要货币 - 例如欧元 - 并且每天运行一个cronjob并使用当时有效的外汇汇率将国内货币的价格转换为欧元。然后,当用户运行搜索并希望“所有产品介于2,000和4,000美元之间”时,我会首先将用户的USD转换为EUR并对已存储的最大值EUR值运行查询。 1天大。 (关于如何实际执行此操作的建议是受欢迎的。我对Rails相对较新,并且从未设置过cron作业。)
在描述的场景中,我应该选择以下两个选项中的哪一个?或者有更好的方法吗?