【问题标题】:H2 Database vs SQLite on AndroidAndroid 上的 H2 数据库与 SQLite
【发布时间】:2011-03-21 17:56:51
【问题描述】:

因为lack of Unicode support on the embedded SQLite database in Android

我最感兴趣的是 H2 Database 与 Android SQLite 的性能和稳定性

你们在用吗? 我应该注意任何 H2 数据库的缺点吗?

【问题讨论】:

    标签: android database sqlite embedded-database h2


    【解决方案1】:

    事情比我预期的要好得多。我现在有一部 Android 手机(HTC Desire,Android 2.2),我进行了第一次测试。

    到目前为止,打开和关闭数据库相对较慢(第二次打开现有数据库需要 0.2 秒,关闭大约 0.2 秒),但在其他方面看起来 H2 在 Android 上表现相当不错,即使 Dalvik VM 是还没有像桌面 JVM 那样优化。现在给出具体数字还为时过早,但 Android 现在是一个受支持的平台。

    【讨论】:

    【解决方案2】:

    我也会对 Android 上的 H2 数据库的实际性能测试非常感兴趣。我认为H2会比SQLite慢很多,主要是Android上的虚拟机还没有那么好。这在 Android 2.2 中变得更好了,但我认为还是有很大的不同。我的猜测是 H2 目前慢了大约 10 倍。但这只是猜测。

    关于 Unicode 问题:在将字符串存储到 SQLite 之前将字符串转换为 UTF-8 怎么样?

    【讨论】:

    • 我的问题是像 LOWER 和 UPPER 这样的函数只能使用 ASCII 字符,因为 Android 上的 SQLite 没有链接 libicu。
    • 我知道这很痛苦,但是如何存储一个带有“大写”版本数据的附加列呢?所以不是 CREATE TABLE ADDRESS(NAME VARCHAR(255)) 你有 CREATE TABLE ADDRESS(NAME VARCHAR(255), NAME_UPPER VARCHAR(255))
    • 你可以只使用 TEXT 列; SQLite 无论如何都会忽略 VARCHAR 长度。
    • 对于 SQLite,数据类型 TEXT 与 VARCHAR 相同,但对于其他数据库则不同(TEXT 通常表示 CLOB,它存储在外部,因此速度较慢 - 这包括 H2)。 SQLite 和 H2 都支持将列定义为 VARCHAR(没有长度限制),但大多数其他数据库都需要它,其中一些有 255 个字符的限制(我知道这很奇怪)。
    • 其实 SQLite 并不关心它是否是 VARCHAR/INT/MY_TYPE/OLOLO 它没有使用类型检查并且可以在同一列中存储不同的类型。取决于你放什么。类似于 SQL Server 中的 sql_vatiant
    猜你喜欢
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多