-
在磁盘上保留用户列表以备将来加载。每个用户可能有3或4个属性。几十到几百个用户是典型的,必须支持几千个用户(支持一万个以上是没有必要的)。
-
在磁盘上保留记录列表以备将来加载。每一张唱片大概有十几个属性。通常会有0到10条记录,但必须支持低千的记录数(以处理由于网络停机等原因导致一段时间内没有处理记录的情况)。
用户通常作为一个批写入,然后定期搜索以找到具有给定属性的用户(例如,通过提供的密码对用户进行身份验证)。
这些记录是断断续续地写入和读取的(后者是由一个周期性任务来执行的,该任务在删除记录之前处理并传输这些记录)。
我面临以下限制:
-
这是一个嵌入式设备,仅支持Java 1.1.8/1.2.x的一个子集。包含的软件包如下:
-
java.lang语言
-
java.io文件
-
-
java.net
-
-
java.util.zip文件
-
java.数学
-
java.text文件
-
java.security文件
-
-
由于我们的应用程序被放在自己的沙盒中,我们对设备的访问受到限制,因此无法进行全面的数据库安装。我们的沙盒中确实有磁盘访问。
-
只有一个应用程序需要访问这些信息,并且可以同步访问,这意味着线程安全/并发访问不一定是必需的。
我们有一个与我正在开发的应用程序类似的应用程序,但用于不同的设备,该设备对用户名使用专有文本格式(例如哈希分隔),对记录使用ObjectOutputStream。
我看到当前实现的缺点:
-
整个文件作为一个整体进行读写,这意味着必须频繁地读取文件,或者必须保留数据的内存副本,并且只有在数据更改时才写回磁盘。当使用后一种选择作为当前应用程序时,意味着内存使用量可以根据数据的大小无限增长。
-
当前的两种格式都是专有的,前者容易产生坏数据(当用户名中有散列时会发生什么情况?)后者不是人类可读的(或可通过常用工具查询)。
derby
或
sqlite
. 然而,从我目前的研究来看,似乎大多数选项都涉及到JDBC驱动程序,而我没有可用的JDBC驱动程序(java.sql语言*未在此设备上实现)。
有人知道一个现有的项目,这将是一个很好的适合?