我有文本数据,想要将其加入AWS

时间:2018-02-11 03:19:52

标签: sql-server database amazon-web-services aws-lambda alexa

我的本​​质上是一个传统的关系数据库,由四个表组成,所有表都与ID相关。目前,此数据库位于S3存储桶中的四个制表符分隔文本文件中。很少(如果有的话)数据将被添加到这些表中。它是一个不变的参考数据库。所以它将被独家阅读,从未添加或编辑。

我想以Alexa技能访问此数据库。我已经使用NodeJS构建了一些技能,所以我知道这一切是如何工作的。但我急于学习如何将技能与后端数据库联系起来。此技能需要根据用户提供的参数对此DB执行SQL SELECT语句,并且基于查询过滤器能够将一组记录拉入可由我的技能的lambda函数使用的数组中。

每个当前文本文件都包含四个表中的一个。最大的表大约是35k行。整个DB可能是5 Mb,其中90%是四个中的一个。就像我说的,它们都像传统的RDBMS一样与ID列相连。这不是出于商业目的。可能。

我已经熟悉SQL Server,它是我所知道的数据库,我对SQL Server Express很满意并可以在那里鞭打一些东西,但是如果它更合适,我愿意学习NoSQL或其他方法。这个用例。因为这主要是一种学习练习,如果某些事情“同样好”,我对你有好处。

我最好的数据库解决方案是什么? * NoSQL如DynamoDB? *某种MySQL? * SQL Server? *将它们保留为制表符分隔的文本并直接在Lambda函数中使用它们?

谢谢,我不想在这里走错路。

1 个答案:

答案 0 :(得分:0)

一些选择......

S3选择

S3 Select(在撰写本文时的预览版中)"使应用程序能够使用简单的SQL表达式从对象中仅检索数据的子集。通过使用S3 Select仅检索应用程序所需的数据,您可以大幅提升性能 - 在许多情况下,您可以获得高达400%的改进。"

<强> DynamoDB

使用DynamoDB的好处是不需要运行数据库服务器 - 它是一个完全托管的服务。虽然它不支持SQL语法,但速度非常快,可以适应许多用例。

事实上,除非有特殊原因要使用SQL(例如业务报告),否则大多数项目都应该考虑在每种情况下使用像DynamoDB这样的NoSQL数据库。

成本取决于存储和配置容量(可根据需求进行扩展和缩放)。

SQL数据库

是的,您当然可以通过Amazon RDS(关系数据库服务)或您自己的EC2实例(例如MySQL甚至Apache Derby)运行SQL数据库。但是,您甚至在为服务器付费时它没有被使用。

使用Microsoft SQL Server可能对您的用例来说太多了(并且比使用开源产品更昂贵)。

我想知道你是否可以在你的应用程序中加入SQLite,这会提供SQL功能而不需要太多开销?

在内存中执行

坦率地说,5 MB的数据并不多。您可以简单地将所有数据加载到内存中并从那里进行操作。虽然负载可能会消耗几个周期,但之后数据访问将非常快。