Android和iOS崩溃报告的分类和分组

Android和iOS崩溃报告的分类和分组,android,ios,database-schema,crash-reports,Android,Ios,Database Schema,Crash Reports,我们支持的各种移动应用程序都将崩溃报告作为一项附加功能,它比普通设备提供的方法向我们提交更多数据。我们支持iOS和Android应用程序。这些信息被发送给我们,我们将其放入MySQL数据库 这是设计的第一步。现在,我们希望能够按堆栈跟踪、设备类型、应用程序版本、操作系统版本等对这些崩溃报告进行分类、分组和计数 如前所述,我们目前使用的是MySQL数据库,但如果它能为我们的工作提供更好的支持,我们没有理由不迁移到其他数据库。我们正在将系统迁移到AWS,因此DynamoDB显然是第二选择 所以,在我

我们支持的各种移动应用程序都将崩溃报告作为一项附加功能,它比普通设备提供的方法向我们提交更多数据。我们支持iOS和Android应用程序。这些信息被发送给我们,我们将其放入MySQL数据库

这是设计的第一步。现在,我们希望能够按堆栈跟踪、设备类型、应用程序版本、操作系统版本等对这些崩溃报告进行分类、分组和计数

如前所述,我们目前使用的是MySQL数据库,但如果它能为我们的工作提供更好的支持,我们没有理由不迁移到其他数据库。我们正在将系统迁移到AWS,因此DynamoDB显然是第二选择

所以,在我继续之前,如果你有任何建议,请现在回答

更多详情:

我们目前收到了以下数据:

  • 信号(如SIGSEGV)
  • 异常名称(例如
    java.lang.NullPointerException
    NSInvalidArgumentException
  • 异常描述(例如“无法实例化活动…”或“字符串参数为空”)
  • 应用程序名称
  • 手持设备类型(如三星/m0/GT-I9300或iPad)
  • 本机堆栈跟踪(用于本机代码中的Android崩溃)
  • 操作系统版本(例如
    4.1.1(SDK级别16)
    6.1.3
  • 用户ID(如果可用)
  • 应用程序版本
  • 崩溃时间戳
  • 堆栈跟踪
  • 提交日期
  • 其他无关数据
在某种程度上,我可以使用
groupby
对Java堆栈跟踪进行分组,这对于较小的数据集来说非常有效。但是,当您有大约300000个崩溃日志时,它就会停止运行

我的第一个想法是为堆栈跟踪创建一个单独的表,包括一个SHA哈希列并向其中添加一个索引,这将只是堆栈跟踪的哈希。然后,我可以根据需要查找或创建一个堆栈跟踪行。我不知道这是否比简单地依靠数据库服务器对堆栈跟踪进行比较更快我可以包括一个计数器列来计算每个堆栈跟踪发生的频率,不过最好是通过fkStackTraceID从崩溃报告组中选择count(*)来保持堆栈跟踪的计数,这样我就可以通过日期或应用程序版本进行额外筛选

目前,当尝试对iOS崩溃日志或本机Android崩溃日志执行相同操作时,这一切都会崩溃。由于每个堆栈跟踪元素都包含内存位置,因此每个日志都是不同的。我可以费劲地查找偏移量(也包括偏移量)并减去它,这将有所帮助

所以有一些问题:

  • 有没有其他方法可以过滤数据,以便以您认为对堆栈跟踪有用的任何方式更容易查询?我想第一次就把事情做好,所以现在想不起来的任何分离数据进行查询的其他方法都是立即进入
  • MySQL是最好的选择,还是NoSQL选项(即DynamoDB)更有用
  • 我的上一个问题是:是否有任何预先打包的解决方案可以做到这一点(或帮助做到这一点),其功能类似于Google Play控制台和/或iTunes Connect站点的崩溃日志部分

  • 找到了最近的预构建解决方案: