Jas*_* L. 11 sqlite android oodb object-oriented-database
我目前正在开发一个基于Android的项目.在没有了解许多细节的情况下,该软件将在定制的设备上运行.硬件永远不会改变,并且永远都是一样的.这是一个明确的加:)
话虽如此,该项目要求我们在设备上存储负载和数据负载 - 在某些表中超过3米的行.SQLite处理扫描这么多行对我们来说很好,当我们开始进行复杂的连接以带回我们需要的所有相关数据时,问题就出现了.我们已经考虑过对数据库进行非规范化,但是担心会将数据库推到可用的范围之外.
我们正在研究使用面向对象的数据库,比如db4o或NeoDatis.我们希望通过存储对象,我们可以在行级别上删除我们的关系并将它们存储在对象上(就像OOP一样).问题是我们无法找到在Android上运行和使用的这些ODB的任何性能相关基准(至少不是最近的基准).
有没有人对Android上的OODB和/或存储和访问这些大量数据有任何经验?如果是这样,您可以提供的任何建议将不胜感激.
- 编辑
这是我们面临的问题的一个例子.它与我们的应用程序无关(我的NDA说我不能发布任何具体内容),但这个例子很好地代表了这个问题.
想象一下,我们正在构建一个应用程序来监控在任何时候在新泽西收费公路上行驶的每辆车.对于任何给定的汽车,我们需要跟踪汽车制造和模型,汽车中有多少人以及汽车中人员的人口统计数据.所以基本上你最终得到的数据看起来像 -
id | 颜色| make_id | in_toll_lane | MODEL_ID
id | 名称
id | 名字| make_id
id | 年龄| 性别 is_driver | car_id
id | cars_in_line | ideal_cars_in_line | ideal_occupants
这些数据将经常变化.它也会变得相当庞大,因为毫无疑问很多人都会在任何时候驾驶NJ Pike.
根据这些数据,我们需要能够根据需要快速拍摄任何驾驶梭子鱼的人.我们还需要能够快速拍摄所有正在驾驶的男性或收费公路上的所有女性.我们还需要能够按年龄,性别,品牌,模型等进行搜索.
现在想象一下,我们需要弄清楚每辆车应该根据车内人数,理想的乘员数量,已经排队的车辆数量以及应该排队的理想车辆数来进入哪个收费车道.
这是一个非常简单的例子,虽然很能代表我们的问题.
- 结束编辑
提前致谢!
小智 3
以下是一些观察结果,但我怀疑它不会直接帮助您。
我认为主要问题是:当事件生成或更改数据时,您是否要通过应用程序运行时逻辑发现复杂的关系,或者您是否必须将数据转储到存储中,然后通过查询发现意外的关系?
如果您的业务逻辑将填充模型,那么您可以轻松地创建基于模型的数据模型不同部分的视图,例如知道所有具有男性/女性驾驶员的汽车的集合。在这种情况下,基本上,您的关系是半静态的,很少发生变化(而这些关系另一端的数据值可能会发生很大变化)。如果是这种情况,那么为什么要尝试将数据存储在数据库技术中,这会迫使您不断重新计算关系(JOIN)。这只是对 CPU 的浪费,也是为什么随着模型变得复杂,您会看到性能不佳的原因。所以,一旦你回答了这些问题,ODB还是RDB是最好的选择就很清楚了。
现在的问题是,什么将在 Android 上运行并处理海量数据?这是我认为我无能为力的地方。我在Versant 工作,他们拥有(db4o 和Versant)ODB。现在 db4o 将在 Android 上运行,但对于大数据来说,它确实是正确的选择...不。除非您有非常孤立的数据,这些数据可以位于单独的数据库中并且只能单独访问,而且对我来说这听起来不像是您的情况。我们的另一个数据库Versant并不是要近乎实时地处理海量数据,但只有客户端是100% Java,服务器是用C编写的,所以它不能在Android上运行。
我认为你需要做一些研究,看看谁拥有可以在 Android 上处理海量数据的 ODB。
最好的,-罗伯特
| 归档时间: |
|
| 查看次数: |
1601 次 |
| 最近记录: |