【发布时间】:2014-12-14 15:30:51
【问题描述】:
我们正在使用 Rails 为餐厅构建 SaaS 后端。我们直接与 POS 集成,因此每个 POS 都会不断发送我们存储的客户订单以供以后处理。我们在大约 1,000 个地点进行了这种 POS 集成,每月向我们发送大约 300 万份个人客户订单。 对于这个写繁重的应用程序,我们将所有订单存储在运行良好的 redis 中。我们正在以令人难以置信的速度增长,我们不断增加拥有数百个地点的新餐厅,不断向我们发送大量数据。除了有一个问题——redis 每个月都会内存不足!因为,所有不必在内存中的东西都在内存中。
这就是我们考虑切换到mysql的原因。因为我们真的不需要将所有数据都保存在内存中。这是我们当前 redis 数据库的编号:
used_memory_human:39.83G
dbsize: 34706870
这是我们在 redis 中存储为 Hash 的内容:
id - integer
location_id - integer
stored_at - timestamp
token - string
transaction_no - integer
menu_items - string(comma seprated list of all menu items that customer ordered along with their price & Qty)
order_amount - decimal
order_subtotal_amount - decimal
order_amount_payable - decimal
order_datetime - timestamp
employee_id - integer
employee_name - string
pos_type - string
post_version - string
restaurant_id - integer
所以,在以下方面寻求一些建议:
从 redis 迁移到 mysql 是个好主意吗?从长远来看,它将如何影响我们,因为我们需要不断更新索引和分区方案以满足巨大的需求。
除了 redis 之外,还有哪些其他数据库(关系型或非关系型)适合此用例?
或者我们都错了,因为 redis 是为存储这种类型的数据而设计的。所以,我们只是继续使用 redis 并每个月升级我们的机器?
【问题讨论】:
标签: mysql ruby-on-rails redis nosql