这个问题与应用程序开发并不完全相关,而是从架构的角度来看。假设一个应用程序必须在AWS上托管,这将需要来自多个外部第三方持有数据库的通信(不是强制要求在AWS上,可能是他们自己的数据中心或托管) - 也许一个客户端将是使用MySQL,另一个MSSQL或Oracle等。
因此,这些外部数据库中保存的数据可能会频繁更改,并且应用程序应始终检索更新的数据。我能想到的一种方法是使用另一个RDBMS DB(来自我们这边)专门存储来自外部数据库的所有这些数据,并使我们的数据库始终保持同步。但我不确定这是否是实现这一目标的好方法。
或者我是否需要使用Redshift等任何数据仓库工具来存储实时同步的所有数据,然后在我们的应用程序中使用DW数据?根据这里的架构师的说法,实现这一目标的好方法是什么,主要是多个外部数据库连接和同步?
答案 0 :(得分:2)
对于您的用例,我建议创建一个REST API,它将作为移动应用程序的后端服务。
没有什么理由,您不应该使用移动应用程序直接连接到后端数据库。
安全风险
性能
通过API实现数据的通用视图,您可以连接到多个数据库并相应地检索数据,还可以在API中处理身份验证和授权。
下图说明了在AWS中使用无服务器技术堆栈(API Gateway& Lambda)构建可连接到多个后端数据库的API的架构。
几点要强调
答案 1 :(得分:2)
从那里开始:
所以基本上你需要构建一个移动应用程序,这需要 从不同的数据库中检索数据 数据中心用于读写
最便宜的方法是允许应用直接连接到这些数据库,因此您根本不需要额外的基础设施。缺点:安全性(您必须在mob。客户端上存储数据库凭据)并且不可能实现集中式缓存。
选项2:修改您的应用以使用位于AWS的中介,然后再连接到缓存和原始数据库。也许API Gateway可能会派上用场。如果你需要中介真的很快,我建议不要使用lambda而是使用自动缩放的ec2。需要一些金钱和时间。
选项2.5:除了选项2,您还可以将DB从站作为只读副本添加到您的AWS账户。更快但更贵。
选项3:将数据库移至AWS并在旧位置保留只读副本。从商业角度来看可能是不可能的。
选项4:在ec2上设置原始DB和DB之间的主 - 主复制(RDS不允许主 - 主afaik)。缺点:我不确定稳定性。
不要忘记在传输过程中加密您的数据库流量,默认情况下它不受SSL保护。