【问题标题】:How to populate DynamoDB tables如何填充 DynamoDB 表
【发布时间】:2018-09-28 18:23:48
【问题描述】:

首先,我对 DynamoDB 和一般的 AWS 服务非常陌生 - 所以当我被所有细节轰炸时,我发现很难。

我的问题是我有一个包含 CSV 格式数据的 excel 文件,我希望将所述数据添加到 DynamoDB 表中,以便轻松访问我要构建的 Alexa 函数。表格格式如下:

ID, Name, Email, Number, Room

1534234,    Dr Neesh Patel, Patel.Neesh@work.com,   +44 (0)3424 111111, HW101

有些行有空字段。

但是我在网上看到的任何地方,似乎都没有一种简单的方法可以真正实现这一点 - 我也找不到任何官方方法。因此,以我对这一领域的有限知识 - 我质疑我是否以完全错误的方式进行这一切。所以首先,我是不是想错了?我应该为后端数据库寻找完全不同的解决方案吗?我原以为这是一项常见任务,但缺乏支持或简单的解决方案 - 我错了吗?

其次,如果我要处理这一切都很好 - 怎么办?我知道 DynamoDB 需要特定的 JSON 格式——而且似乎没有一种直接的方法可以将我的 CSV 转换为上述格式。

谢谢各位。

【问题讨论】:

    标签: database amazon-web-services aws-lambda amazon-dynamodb alexa


    【解决方案1】:

    我在开始使用 DynamoDB 时遇到了同样的问题。当您来到分布式大数据系统时,您确实需要设计如何跨系统移动数据。这是你开始的地方。

    这里有清楚的记录,

    https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SampleData.LoadData.html

    添加更多细节以了解流程。

    第 1 步:将 csv 转换为 json 文件。

    如果数据量少,可以使用在线工具。

    http://www.convertcsv.com/csv-to-json.htm

     {
       "ID": 1534234,
       "Name": "Dr Neesh Patel",
       "Email": "Patel.Neesh@work.com",
       "Number": "+44 (0)3424 111111",
       "Room": "HW101"
     }
    

    您可以看到它的格式有多好,删除空格等,选择正确的选项并执行您的转换。

    如果您的数据量很大,那么您需要使用大数据工具来并行处理这些数据以进行转换。

    第 2 步:使用 CLI 上传小型一次性上传

    aws dynamodb batch-write-item --request-items file://data.json

    如果要定期上传文件,则需要创建数据管道或不同的进程。

    希望对你有帮助。

    【讨论】:

    【解决方案2】:

    DynamoDb 很酷。但是,在使用它之前,您必须了解您的数据使用模式。对于您的情况,如果您只打算按 ID 查询 DynamoDb 表,那就太好了。如果您需要通过任何一个列或列组合进行查询,那么有解决方案:

    • Elastisearch 与 DynamoDb(可能很昂贵)结合使用,在 DynamoDb 表(了解每个二级索引都在创建一个 包含您选择存储的列的 DynamoDb 表的完整副本 在索引中),
    • Elasticache 与 DynamoDb 结合使用(用于将搜索绑定回 ID 列),
    • RDS 而不是 DynamoDb(因为 sql-ish db 在以下情况下更好 你不知道你的数据使用模式,你只是不想 考虑一下),

    这实际上取决于您拥有多少数据以及如何查询应该定义您的架构的数据。对我来说,这将归结为权衡每个可用选项的成本和性能。

    在将数据放入 DynamoDb 或 RDS 表方面:

    • AWS Glue 或许可以为您工作
    • AWS Lambda 以编程方式将数据获取到您的数据存储中
    • 也许是其他人

    【讨论】:

    • 嗯,比如会根据用户的语音输入来查询数据。用户不太可能说“ID 1534234 在哪个房间?”,而是会问“Neesh Patel 在哪个房间?”...根据我的解释,这意味着“名称”列将是最常用的列通常用于查询,我正确吗?我的问题是我正在寻找可以与我的 Alexa 应用程序无缝集成的东西,因此尝试将其与 AWS 保持在内部......
    • 是的,这是有道理的,问题可能是任何问题。如果它是任何东西并且您有大量数据并且查询是针对未索引的列,那么您必须处理它会非常慢。看看这个链接,因为它更详细地了解了可能的情况:stackoverflow.com/questions/37875050/… .. 最后一个问题,您将存储多少数据?
    • 现在我对存储的数据量有点模糊。有了这个特定的表,CSV 文件中只有 69 行,但将来我可能会添加另一个可能有更多列和几百行的表......我不认为它归类为“大量数据” '?但我正在寻找它可能会自动将其记录不断更改为最新数据。
    • 少于 300 条记录,那就不用担心使用 DynamoDb。并且不需要 Elastisearch、Elasticache、RDS 等……对那一小组数据的表扫描可以忽略不计。而且会很便宜。您可以将 DynamoDb 自动缩放降低到 1 次写入和 3 次读取,上限为 5 和 100。可能每月花费不会超过 1 美元。但这取决于您读取数据的频率。
    • 您必须在“每秒每个查询”的上下文中考虑它。 DyanmoDb“每秒读取单位”包含 4k 数据。如果您的约 264 行数据总共包含少于 4k 的数据,那么每个 Alexa 查询将消耗一个读取单元(过于简单的数学,请参阅此以获取更多详细信息:techtraits.com/cloud/nosql/2012/06/28/…)。当您的 DynamoDb 表的总大小增长到执行表扫描的时间和成本比替代方案更昂贵的程度时,您将需要担心替代方案。
    猜你喜欢
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 2020-10-29
    相关资源
    最近更新 更多