我想挑选MongoDB作为我的首选数据库。我需要帮助我的桌子的设计。MongoDB架构建议
应用程序背景 - 分析应用程序,其中联系人推送他们自己的事件和相关的自定义数据。联系人可以有很多事件。如:接触这样做,这样做等
EVENT_TYPE,custom_data(JSON),epoch_time
如: 事件1:EVENT_TYPE:page_visited,自定义数据:{网址:定价,引荐:谷歌}, CURRENT_TIME 事件2:EVENT_TYPE:video_watched,定制数据:{URL:VIDEO_LINK},CURRENT_TIME 事件3:EVENT_TYPE:支付,custom_data:{计划:精简版,价格:35}
这些事件是自定义,并且被定义由用户。可伸缩性是一个问题。
这些都是常见的用例:
- 给我,谁是来定价页在过去7天的用户列表
- 给我谁看了视频和付出更多的用户列表50
- 给我谁访问过定价用户观看视频的名单,但没有支付至少20
什么是设计我的表的最佳方法是什么? 在这种情况下使用嵌入式事件是个好主意吗?
感谢您的留言。对于高写入,低读取和实时分析,您会有什么建议? – cloudpre
如果您使用的是AWS,那么DynamoDB速度很快,可能会满足您的事件需求(主键userId,日期范围或事件类型)。卡桑德拉有一些积极的评论(在网络上和我一起工作的人)。我正在研究一些其他的NoSQL数据库 - 我可以消除的大部分数据,尽管我对调查可能会/可能不会有好处的一些数据仍然是Riak或Couchbase。 (但我目前倾向于DynamoDB或Cassandra) –
DynamoDB不支持嵌套的JSON搜索。自定义数据对于每个客户都是完全不同的,他们编写他们的自定义数据。 – cloudpre