likes
comments
collection
share

你真的懂鸿蒙的关系型数据的约束限制吗?

作者站长头像
站长
· 阅读数 2

最近在看鸿蒙官方网站关于关系型数据库的使用介绍时,看到关于数据库的一些使用约束,官方地址如下:test.openharmony.cn:7780/pages/v4.0/…

约束限制内容如下(官方内容):

  • 系统默认日志方式是WAL(Write Ahead Log)模式,系统默认落盘方式是FULL模式。
  • 数据库中有4个读连接和1个写连接,线程获取到空闲读连接时,即可进行读取操作。当没有空闲读连接且有空闲写连接时,会将写连接当做读连接来使用。
  • 为保证数据的准确性,数据库同一时间只能支持一个写操作。
  • 当应用被卸载完成后,设备上的相关数据库文件及临时文件会被自动清除。
  • ArkTS侧支持的基本数据类型:number、string、二进制类型数据、boolean。
  • 为保证插入并读取数据成功,建议一条数据不要超过2M。超出该大小,插入成功,读取失败。

看完后,有一些一目了然,易于理解,有些条目理解起来略晦涩,所以在查阅完资料后,特意整理出来当作备忘:

  1. 日志模式与落盘方式

    • WAL (Write Ahead Log) :系统默认采用WAL模式记录事务日志。在该模式下,任何对数据库的更改(写操作)在实际更新数据文件之前,都会先将更改记录写入日志文件。这样设计能提高系统的可靠性与恢复能力,即使在系统崩溃或电源故障的情况下,也能通过重放日志来恢复未完成的事务,确保数据的一致性。
    • FULL模式:系统默认的落盘方式为FULL模式,意味着所有数据库操作都会立即同步到磁盘上,以确保数据的持久化。这种模式提供了最高的数据安全性,但可能会影响写操作的性能,因为它要求每个事务提交后必须等待数据完全写入物理存储。
  2. 并发控制

    • 连接限制:数据库预设了4个读连接和1个写连接。这意味着最多可以有4个并发的读操作同时进行,而写操作则受到严格限制,同一时间只能有一个写操作执行。这种设计旨在防止并发写冲突,保证数据一致性。
    • 资源调配:在读连接不足且有空闲写连接时,系统允许暂时将写连接用作读连接,以提高读取效率和资源利用率。这体现了系统在保证数据安全的前提下,对读操作的相对宽松处理。
  3. 数据完整性保证

    • 单写原则:为了确保数据的准确性,数据库强制实施单一写操作原则,即不允许同时有两个或以上的写操作进行。这一限制有助于避免并发写导致的数据不一致问题,如丢失更新、脏读等现象。
  4. 应用程序生命周期管理

    • 卸载清理:当应用程序被卸载时,鸿蒙操作系统会自动清除与之相关的数据库文件及临时文件。这一机制简化了应用卸载后的资源回收,避免了残留数据可能导致的空间浪费或数据泄漏风险。
  5. 数据类型支持

    • ArkTS侧数据类型:在使用ArkTS编写应用程序时,关系型数据库支持的基本数据类型包括:number(数值)、string(字符串)、二进制类型数据(如用于存储图像、音频等非文本数据)、boolean(布尔值)。开发者应确保在数据库操作中使用的数据类型符合这些支持范围。
  6. 数据大小限制

    • 单条记录大小:为保证数据的正常插入和读取,建议单条数据的大小不超过2MB。超过这个阈值时,虽然插入操作可能会成功,但由于潜在的内部限制或性能问题,后续的读取操作可能会失败。因此,开发者在设计数据模型和存储策略时需考虑这一限制,避免存储过大单条记录,或采取分块、压缩等手段来适应这一约束。

综上所述,鸿蒙开发中关系型数据库的约束限制涵盖了日志管理、并发控制策略、数据完整性的保障措施、应用程序生命周期事件处理、数据类型支持以及单条数据大小限制等多个方面。开发者在构建和使用鸿蒙平台上的关系型数据库应用时,应充分了解并遵循这些约束,以确保数据的准确、一致和系统的高效稳定运行。