DynamoDB是Amazon基于《Dynamo: Amazon’s Highly Available Key-value Store》实现的NoSQL数据库服务。它可以满足数据库无缝的扩展,可以保证数据的持久性以及高可用性。开发人员不必费心关注DynamoDB的维护、扩展、性能等一系列问题,它由Amazon完全托管,开发人员可以将更多的精力放到架构和业务层面上。
本文主要介绍作者所在团队在具体业务中所遇到的挑战,基于这些挑战为何最终选型使用Amazon DynamoDB,在实践中遇到了哪些问题以及又是如何解决的。文中不会详细讨论Amazon DynamoDB的技术细节,也不会涵盖Amazon DynamoDB的全部特性。
背景与挑战
TalkingData移动广告效果监测产品(TalkingData Ad Tracking)作为广告主与媒体之间的一个广告投放监测平台,每天需要接收大量的推广样本信息和实际效果信息,并最终将实际的效果归因到推广样本上。
举个例子,我们通过手机某新闻类APP浏览信息,会在信息流中看到穿插的广告,广告可能是文字形式、图片形式、视频形式的,而不管是哪种形式的广告它们都是可以和用户交互的。
如果广告推送比较精准,刚好是用户感兴趣的内容,用户可能会去点击这个广告来了解更多的信息。一旦点击了广告,监测平台会收到这一次用户触发的点击事件,我们将这个点击事件携带的所有信息称为样本信息,其中可能包含点击的广告来源、点击广告的时间等等。通常,点击了广告后会引导用户进行相关操作,比如下载广告推荐的APP,当用户下载并打开APP后,移动广告监测平台会收到这个APP发来的效果信息。到此为止,对于广告投放来说就算做一次成功转化。