小编bar*_*olo的帖子

DynamoDB:如何在一个月内分配工作量?

TL; DR

我有大约200万写入一个表月和0读取.每个月的第一天,我需要阅读上个月写的所有行并生成CSV +统计信息.

如何在此方案中使用DynamoDB?如何选择READ吞吐量?

详细描述

我有一个记录客户端请求的应用程序.它有大约200个客户.客户需要在每个月的第一天收到一份CSV,其中包含他们所做的所有请求.他们还需要收费,为此我们需要根据他们提出的请求计算一些统计数据,按请求类型进行分组.

因此,在本月底,客户收到如下报告:

完整的请求列表

结算摘要

我已经找到了两个解决方案,但我仍然不相信它们中的任何一个.

第一个解决方案:好的,每月的最后一天我增加READ吞吐量,然后运行map reduce工作.作业完成后,我将容量减少回原始值.

缺点:未完全自动化,在作业启动时无法使用DynamoDB容量的风险.

第二个解决方案:我可以在日常或每小时的例行程序中将CSVs +统计数据的生成分解为小型工作.我可以在S3上存储部分CSV,并且在每个月的第一天我可以加入这些文件并生成一个新文件.统计数据将更容易生成,只是从每日/每小时统计数据中得出一些计算结果.

缺点:我觉得我正在把一些简单的东西变成复杂的东西.

你有更好的解决方案吗?如果没有,你会选择什么解决方案?为什么?

database mapreduce amazon-dynamodb

13
推荐指数
1
解决办法
285
查看次数

如何在可配置的超时内响应Rails请求

我希望在没有使用Timeout模块的情况下在控制器的操作中实现以下行为:

class AdminController < ApplicationController
  def example
    Timeout.timeout(params[:timeout].to_i) do
      ... # try to process the request within params[:timeout] seconds
    end
  rescue Timeout::Error
    render nothing: true, status: :gateway_timeout
  end
end
Run Code Online (Sandbox Code Playgroud)

我想避免使用Timeout,因为它导致我的应用程序中出现许多错误,包括数据库连接泄漏.报告的其他一些问题:http: //www.mikeperham.com/2015/05/08/timeout-rubys-most-dangerous-api/

ruby timeout ruby-on-rails thread-safety

9
推荐指数
1
解决办法
1062
查看次数

如何在授权后正确重定向到Facebook页面选项卡URL

我改变了我的Facebook页面标签应用程序要求权限的方式.

我正在使用FB Dialog的javascript方法,现在我正在使用重定向方法(其中用户被重定向到FB页面,其中要求权限,然后被重定向回到Facebook页面选项卡).

改变的原因是我相信这种方法比使用javascript对话框会带来更少的错误和问题.

使用重定向方法时,我需要指定在提供权限后用户将被重定向的URL.我想这个网址是安装了应用程序的Facebook页面标签的网址.

构建重定向的URL时,我知道当前的page_id和我的app_id.有了这些信息,我需要构建facebook页面选项卡url,它应该如下所示:

https://www.facebook.com/pages/PAGE-SLUG/ {#APP_ID}?sk = app _ {#APPL_ID}

问题是我不知道什么是PAGE-SLUG.我用上面的url运行的测试(使用PAGE-SLUG作为任何东西)最终重定向到正确的URL.但是,知道Facebook是一个非常不稳定的平台,我想知道有更好的方法来构建这个重定向网址.

编辑:上述方法有问题.默认情况下,当facebook用户不使用SSL时,重定向会丢失SSL协议并使用HTTP链接.

facebook facebook-page facebook-graph-api

2
推荐指数
1
解决办法
6087
查看次数

AngularJS ngResource:如何始终使用相同的catch功能?

每次我使用任何$资源命中服务器时,我都希望在用户失败时向我的用户显示相同的警报.

今天看起来像:

function tryAgain() { alert("try again") }
myResource.query().$promise.catch(tryAgain);
myResource.update(...).$promise.catch(tryAgain);
myResource.delete(...).$promise.catch(tryAgain);
otherResource.query().$promise.catch(tryAgain);
Run Code Online (Sandbox Code Playgroud)

有没有办法为ngResource配置默认错误处理功能?我正在寻找类似的东西:

$resource.somethingMagicHere.defaults.catch(tryAgain);
Run Code Online (Sandbox Code Playgroud)

angularjs ngresource

2
推荐指数
1
解决办法
2694
查看次数