AWS Redshift:mock/mirror redshift 的库
AWS Redshift : libraries for mock/mirror redshift
是否有用于 mocking/mirroring Redshift SQL 接口的库以在隔离的开发环境中进行 运行 测试?
如果没有,请指出此类测试的最佳实践建议?
Amazon Redshift 是专门为 运行 在 AWS 基础设施上创建的。它不可下载。 (有趣的是,Amazon DynamoDB 确实有一个用于开发目的的可下载版本。)
成本最低的选择可能是每晚和周末关闭您的开发和测试实例。删除集群前拍个快照,第二天早上根据快照创建集群。这可以通过 AWS 命令行界面 (CLI) 自动执行,从而可以轻松地使用 cron 或计划任务进行计划。
您还可以拥有测试数据的快照,并在每天早上恢复该快照,这意味着测试数据库不会填满测试用例。
另一个成本节约可能是减少非生产系统的节点数量。查询将 运行 变慢并且存储总量将减少,但它可能更具成本效益。或者甚至使用一个 "Dense Storage" 2TB 节点而不是几个 "Dense Compute" SSD 实例——它们将在更少的节点上提供更多的存储空间。
Redshift SQL 庸医大多像 PostgreSQL 我已经 'some' 成功地使用了一个模拟数据库,它只是 postgres。 TBH 我最终把它撕掉了,主要是因为 window 函数在两者之间实在是太不同了。
如果您的应用程序是用 Java 编写的,您可以通过自定义 JDBC 驱动程序拦截和模拟 Redshift 特定命令。
自定义 JDBC 驱动程序将按如下方式工作。
- 解析给定的语句。
- 如果语句是COPY,从S3下载数据然后插入。
- 如果语句是 UNLOAD,select 来自目标 table,然后上传到 S3。
我刚刚发布了 redshift-fake-driver,一个 JDBC 驱动程序模拟了 Redshift 特定的命令。
希望对您有所帮助。
是否有用于 mocking/mirroring Redshift SQL 接口的库以在隔离的开发环境中进行 运行 测试?
如果没有,请指出此类测试的最佳实践建议?
Amazon Redshift 是专门为 运行 在 AWS 基础设施上创建的。它不可下载。 (有趣的是,Amazon DynamoDB 确实有一个用于开发目的的可下载版本。)
成本最低的选择可能是每晚和周末关闭您的开发和测试实例。删除集群前拍个快照,第二天早上根据快照创建集群。这可以通过 AWS 命令行界面 (CLI) 自动执行,从而可以轻松地使用 cron 或计划任务进行计划。
您还可以拥有测试数据的快照,并在每天早上恢复该快照,这意味着测试数据库不会填满测试用例。
另一个成本节约可能是减少非生产系统的节点数量。查询将 运行 变慢并且存储总量将减少,但它可能更具成本效益。或者甚至使用一个 "Dense Storage" 2TB 节点而不是几个 "Dense Compute" SSD 实例——它们将在更少的节点上提供更多的存储空间。
Redshift SQL 庸医大多像 PostgreSQL 我已经 'some' 成功地使用了一个模拟数据库,它只是 postgres。 TBH 我最终把它撕掉了,主要是因为 window 函数在两者之间实在是太不同了。
如果您的应用程序是用 Java 编写的,您可以通过自定义 JDBC 驱动程序拦截和模拟 Redshift 特定命令。
自定义 JDBC 驱动程序将按如下方式工作。
- 解析给定的语句。
- 如果语句是COPY,从S3下载数据然后插入。
- 如果语句是 UNLOAD,select 来自目标 table,然后上传到 S3。
我刚刚发布了 redshift-fake-driver,一个 JDBC 驱动程序模拟了 Redshift 特定的命令。 希望对您有所帮助。