1

我正处于 android 笔记应用程序的早期阶段,我希望有人能指出一个很好的解决方案来存储笔记数据。

理想情况下,我希望有一个解决方案:

  • 每个笔记文档都是一个单独的文件(用于保管箱同步)
  • 一个便笺可以由多个页面组成
  • 笔记页面可以有二进制数据(例如图像)
  • 可以加载单个页面,而无需将整个文档解析到内存中
  • 线程安全:可以同时发生多个读/写。

XML 已经过时了(至少对于整个文件来说),因为我没有一个好的方法来一次提取一个页面。我考虑过使用 zip 文件,但是(特别是在压缩时)我认为它们也会被卡住加载整个文件。

似乎应该有一个 Java 库可以做到这一点,但我的 google-fu 让我失望了。我能想到的唯一其他选择是为每个笔记创建一个单独的 sqlite 数据库。

有人知道解决这个问题的好方法吗?谢谢!

4

2 回答 2

2

似乎关系数据库可以在这里工作。您只需要稍微使用一下模式即可。

也许制作一个 Pages 表,其中每个页面包括,例如,它所属的文档的一个字段和它在文档中的顺序的一个字段。页面还可以有一个二进制数据字段,该字段可能包含在另一个表中。如果文档本身有额外的数据,也许你也有一个文档表格。

我没有在 Android 设备上使用过 SQLite 事务,但这似乎是解决线程安全问题的好方法。

于 2011-04-03T03:38:37.897 回答
1

我建议使用 SQLite 来存储文档。最终,这将比每次访问便笺时都尝试处理文件 I/O 更容易。然后,当有人想上传到保管箱时,您可以即时生成文件并上传。至少有一个 Notes 表和一个 pages 表是有意义的。这样,您可以单独加载每个页面,并且注释只是页面的集合。此外,您可以将图像作为 BLOBS 存储在特定页面的数据库中。基本上,如果您只需要每页一种类型的内容,那么您将在 pages 表中拥有类似 id 列和 content 列的内容。或者,如果您想支持更复杂的内容,例如多种类型的内容,那么您需要让您的页面成为其他内容的集合,例如“实体”。

IMO,关系数据库将是满足您从特定页面读取的要求而无需加载整个文件的最简单方法。

于 2011-04-03T04:07:30.617 回答