首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据建模问题

数据建模问题
EN

Stack Overflow用户
提问于 2015-06-23 14:04:16
回答 2查看 189关注 0票数 1

刚开始使用Keen.IO…非常好的产品。我有一个关于数据建模的问题:

我正在跟踪具有以下属性的移动应用注册事件:

设备Id,

平台、制造商、营销版本、

语言和

纬度和经度

问题是,每当设备更改位置时,移动应用程序都会发送此注册。在某种程度上,它是为了维护设备的最新位置并跟踪历史变化。我为设备创建了一个新的集合,它看起来很好,因为我可以通过select_unique keen.location.coordinates在地图上绘制设备。

但问题是,我如何知道最新的位置更新?因此,现在我在同一设备的集合中有几个事件(由设备id唯一标识),但无法找到最新的事件!

谢谢你的指点。

你好,哈立德

EN

回答 2

Stack Overflow用户

发布于 2015-06-23 21:37:37

从技术上讲,可以根据需要使用现有的Keen查询类型来检索设备的最新位置,问题是这样做效率低,伸缩性不好(主要是因为Keen是designed to store/query event data,而不是实体数据)。您必须将从select_unique检索到的设备Id插入到每个设备的单独查询中,才能找到最新的位置。这样做会让你很快遇到concurrency and/or rate limiting

话虽如此,这给你留下了几个选择:

  1. 使用Keen的S3集成。此功能将所有原始事件写入S3,以供您根据自己的喜好进行消费。您可以使用此数据创建到单独实体数据库的管道,这将允许您检索设备的最新位置。注意:此功能需要额外收费。
  2. 将设备/位置数据发布到单独的实体数据库,同时将事件发送到time,并将该数据库用作设备最新位置的来源。

这两个选项中的任何一个都可以工作,这取决于您希望如何在应用程序中实现/管理数据收集。

票数 1
EN

Stack Overflow用户

发布于 2015-06-24 12:06:58

我认为您可以通过将select_unique查询与group_by子句相结合并查看结果中的最后一项来实现这一点。

然而,正如terrhorn所指出的那样,这不是一个可扩展的解决方案。除了仪表板,我不会用它做任何事情。

下面是一个简单的例子:

代码语言:javascript
复制
 `var query = new Keen.Query("select_unique", {         eventCollection: "devices",         targetProperty: "location",         group_by: "device_id"     });` 

结果将如下所示:

代码语言:javascript
复制
 `{         "result":  [             {                 "device_id": "4252f729-7bdc-a487-be15-984999a96683",                 "result": [                     "location_1",                     "location_2"                 ]             }         ]     }` 

注意:这只是理论上的--我不确定Keen是否按照事件发生的顺序对group_by的结果进行了排序--但这是一个很好的测试假设。我不明白他们为什么不这么做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30994990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档