代码之家  ›  专栏  ›  技术社区  ›  Redwood

不需要JDBC的Java嵌入式数据库

  •  4
  • Redwood  · 技术社区  · 14 年前

    1. 在磁盘上保留用户列表以备将来加载。每个用户可能有3或4个属性。几十到几百个用户是典型的,必须支持几千个用户(支持一万个以上是没有必要的)。
    2. 在磁盘上保留记录列表以备将来加载。每一张唱片大概有十几个属性。通常会有0到10条记录,但必须支持低千的记录数(以处理由于网络停机等原因导致一段时间内没有处理记录的情况)。

    用户通常作为一个批写入,然后定期搜索以找到具有给定属性的用户(例如,通过提供的密码对用户进行身份验证)。

    这些记录是断断续续地写入和读取的(后者是由一个周期性任务来执行的,该任务在删除记录之前处理并传输这些记录)。

    我面临以下限制:

    1. 这是一个嵌入式设备,仅支持Java 1.1.8/1.2.x的一个子集。包含的软件包如下:
      • java.lang语言
      • java.io文件
      • java.net
      • java.util.zip文件
      • java.数学
      • java.text文件
      • java.security文件
    2. 由于我们的应用程序被放在自己的沙盒中,我们对设备的访问受到限制,因此无法进行全面的数据库安装。我们的沙盒中确实有磁盘访问。
    3. 只有一个应用程序需要访问这些信息,并且可以同步访问,这意味着线程安全/并发访问不一定是必需的。

    我们有一个与我正在开发的应用程序类似的应用程序,但用于不同的设备,该设备对用户名使用专有文本格式(例如哈希分隔),对记录使用ObjectOutputStream。

    我看到当前实现的缺点:

    • 整个文件作为一个整体进行读写,这意味着必须频繁地读取文件,或者必须保留数据的内存副本,并且只有在数据更改时才写回磁盘。当使用后一种选择作为当前应用程序时,意味着内存使用量可以根据数据的大小无限增长。
    • 当前的两种格式都是专有的,前者容易产生坏数据(当用户名中有散列时会发生什么情况?)后者不是人类可读的(或可通过常用工具查询)。

    derby sqlite . 然而,从我目前的研究来看,似乎大多数选项都涉及到JDBC驱动程序,而我没有可用的JDBC驱动程序(java.sql语言*未在此设备上实现)。

    有人知道一个现有的项目,这将是一个很好的适合?

    3 回复  |  直到 14 年前
        1
  •  3
  •   Peter Tillemans    14 年前

    你可以看看 JDBM

    它相对比较老,所以很有可能支持java2之前的平台。

        3
  •  1
  •   Vagaus    14 年前

    db4o ? 它是一个嵌入式对象数据库。它运行在Java1.1上,不需要jdbc。