amazon-web-services - 无法获取仪表板的数据(100k+ 行)
问题描述
对 dynamoDb 和整个 AWS 来说非常新,这非常令人兴奋,但我觉得学习曲线有点陡峭。无论如何,这是我的情况和我的问题。
我们有一个移动反应原生应用程序,每次用户进行搜索时,它都会在 dynamoDb 表中存储一行。(数据库是带有 UUID 的搜索历史记录,然后是搜索条件)。平均而言,我们每天对表进行数千次新搜索。该表只有一个主键,即搜索 ID。
该应用程序非常新,但我们已经达到了表中的几十万行,并且预计在接下来的几个月中会有一百万行。数据是简单的简单数据,在其他属性中具有唯一的 id 和字符串和数字。没有联系,没有关系,等等......那时我已经觉得 DynamoDb 可能不是最好的选择,但我仍然在任何地方阅读,如果管理得当,它可以适用于任何东西。
在此旁边有一个 webapp 仪表板,它 - 感谢使用 nodejs lambdas 的 rest api - 查询 dynamoDB 以对搜索进行统计:每天搜索多少次,最后搜索列表......问题是 DynamoDb 不是真的合适查询数十万条数据(1mb 限制、查询限制、积分...)。当我进行扫描时,我只得到 3000 次搜索。我尝试使用请求的最后一个索引对扫描进行循环,但经过几次测试后我没有得到数据并且我阻止了最大吞吐量。很明显,我没有正确的方法将所有这些搜索带到我的网络应用程序中。那么现在正确的方法是什么?我的想法如下,但我愿意接受更有经验的人:
切换到 SQL 数据库(使用 aws 迁移?)。那真的会更容易吗?
创建 lambdas 以每晚执行预定的作业以每天进行统计,这样我就不必一直查询完整的数据库,而只需查询一些最近的搜索和统计行?可行吗?您可能知道的任何关于此的 node.js / lambdas 教程?
更好地管理索引?我对这些仍然很迷茫。
期待您的意见。
解决方案
添加另一个图层以进行全文搜索。
例如,使用 Elasticsearch、Algolia 或其他类似工具。
笔记:
如果比较 dynamodb 的成本,Elasticsearch 可能会花费你很多
参考: https ://aws.amazon.com/about-aws/whats-new/2015/08/amazon-dynamodb-elasticsearch-integration/
推荐阅读
- haskell - 是否可以定义您自己的 Persistent / Esqueleto 镜片?
- elasticsearch - Search Guard 5 - ][WARN][cfscPrivilegesEvaluator] 无法处理复合请求
- php - 内连接3个不同的表codeigniter
- c# - 从模型错误中获取数据
- python - Flatlib - bdist_wheel 错误
- r - 计算R中数据框中每一列的百分位数
- c# - 在 App.xaml 的 EventSetter 上出现错误 CS1061
- scala - 使用 nth 进行 2D 插值
- css - CSS 没有完全应用在影子 DOM 上
- excel - 在excel中使用Find方法后如何访问相邻单元格数据?