将大数据保存到数据库

时间:2016-07-16 18:16:09

标签: android sqlite

在我的游戏中,我为每个级别设置了一组点,称为“积分”,“积分1”和“积分2”

例如在第1级我有这些要点:

等级1:

Poitns:(0.3,0.04),(0.2,0.25),(1.5,0.5),(0.2,0.5),(0.3,0.04)

Poitns1:(0.5,0.04),(0.6,0.35),(0.5,0.5),(0.2,0.5),(0.3,0.04),(0.2,0.04)

Poitns2:(0.3,0.04),(0.6,0.34),(0.5,0.5),(0.2,0.5),(0.3,0.04),(0.3,0.04)

等级2:......

等级3:......

我的游戏中有大约90个关卡,每个都有自己的数据,

问题是,我如何将数据保存到DataBase?

一个选项是为每个,Point1.x,Point1.y,Point2.x和......创建一个表。

这将是一个大型数据库,有6个表。

另一个选项是将表中的所有Point1数据的数据保存为String,并通过解析拉出浮点数(例如,为points.x保存0.3,0.2,1.5,0.2,0.3,0.04然后解析数据对于每一行并检查它何时到达“,”......) 但对于Android来说,这是一项非常繁重的操作。

什么是最好的选择?除了数据库之外还有其他方法吗?

如果不是,我应该如何保存这些数据以使用更少的内存进行计算和到达数据?

1 个答案:

答案 0 :(得分:1)

我认为你可以使用SQLite db来做到这一点。它是保存和处理文本的好工具。我不熟悉其他数据库,但如果您使用SQLite数据库,我可以告诉您如何解决这个问题。希望其他人能够回答和讲述替代数据库,以便您将它们全部进行比较。

正如您所说,您可以将一个Point的所有浮点数存储在单个字符串中。然后只创建一个表来存储所有数据。它看起来像这样。

 _id  | Points  |  Level 1  |  Level 2  |  Level 3  | ... | Level 90
----------------------------------------------------------------------
  1   | Point1  | "0.3,..." | "0.4,..." | "0.3,..." | ... | "0,6,..."
  2   | Point2  | "0.2,..." |    null   | "0.1,..." | ... |   null
  3   | Point3  | "0.3,..." | "0.5,..." | "0.4,..." | ... | "0.2,..."
...
...

null我指的是特定点不适用的等级。或者你可以改为编写空字符串""_id是PRIMARY KEY AUTOINCREMENT列,用于管理新Point行的自动插入(不会影响您的数据)。

这个想法是,通过这种方式,您可以拥有任意数量的行和固定数量的列(在本例中为90)。但是,表格可能还有其他更好或类似的解决方案。

考虑到现代处理器(1-2GHz /核心)的速度,您可以在一秒钟内完成高达十亿次操作。将此数字与字符串元素的大小进行比较。我确信你的Points字符串不会太长,以便在从db中提取时获得处理它的大量时间。因此,您无需担心速度。您甚至可以在后台启动此流程,以免影响您的用户界面。

<强>缺点:

通过在SQLiteOpenHelper内部onCreate内部对所有列进行硬编码来创建90列并不容易。但这只是一次性工作。

这就是我的解决方案。希望它能以某种方式帮助你。我也很想知道其他可以帮助解决这个问题的数据库,如果可能的话。