mysql - 如何构建一个稳定的系统,每天处理 9000 万行并传输到实时服务器?

标签 mysql google-bigquery bigdata

我有一个公司的员工奖励和跟踪系统。我正在为其开发系统的公司每天通过 FTP 向我提供销售数据。 (不幸的是,他们没有为此提供网络服务。)我必须存储和处理所有新的销售和员工数据,我必须计算员工通过销售赢得了多少积分,他们拥有多少徽章......(基于销售量)。我已经有一个系统可以正常工作,但我正在考虑将这些计算过程转移到云端,并在计算后传输点数据。我的系统读取所有销售数据并将其存储在 MySQL 中。之后,PHP 脚本将原始数据处理为点数据。我的网页不加载原始数据,它们只需要基本的个人信息和员工钱包余额。

在这种情况下,哪个数据库系统更适合这个问题?哪种服务(AWS、Gcloud 等)适合我们的需求?可以做些什么来使这个系统运行得更快?

提前致谢。

最佳答案

首先通过引入消息队列(下载、文件处理、计算等...)使一些进程并行和异步。对于 PHP/MySQL,最简单的建议是 Beanstalkd它有一个很好的admin panel .

对于更大的步骤,您可以选择云服务,例如 Google BigQuery每个月您有 1TB 的免费查询,存储成本低至 10-20 美元/TB(2017 年第一季度)。这需要您通过流式插入或加载作业将数据副本插入 BigQuery。一旦数据进入,您就可以编写更长时间的 SQL 查询,即使是在大型数据集上也是如此。如果您需要通过用户定义函数修改某些行,您也可以在 BigQuery 中执行此操作。

如果您正在寻找 2000 QPS 以上的 MySQL 替代品,您可以查看 Cloud Spanner这是一个Quizlet's great article what is Spanner good for .

关于mysql - 如何构建一个稳定的系统,每天处理 9000 万行并传输到实时服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42253004/

相关文章:

mysql - 插入具有最高值的列的列名

javascript - 我可以在 Bigquery JS UDF 中使用 `TextEncoder` 吗?

google-bigquery - "You have no more apps available to accept this invitation."接受邀请时

hadoop - 如何使用一个 reducer 的输出作为另一个映射器的输入?

bigdata - Apache Nifi 与 Gobblin

mysql - 带加法的 SQL 子查询

mysql - 删除操作锁定 innodb 中的整个表

java - 在 Java 中创建 JDBC 连接池

google-bigquery - BigQuery 有没有办法保存区域中多区域的查询

python - NumPy 读取文件并即时过滤行