你真的懂鸿蒙的关系型数据的约束限制吗?
最近在看鸿蒙官方网站关于关系型数据库的使用介绍时,看到关于数据库的一些使用约束,官方地址如下:test.openharmony.cn:7780/pages/v4.0/…
约束限制内容如下(官方内容):
- 系统默认日志方式是WAL(Write Ahead Log)模式,系统默认落盘方式是FULL模式。
- 数据库中有4个读连接和1个写连接,线程获取到空闲读连接时,即可进行读取操作。当没有空闲读连接且有空闲写连接时,会将写连接当做读连接来使用。
- 为保证数据的准确性,数据库同一时间只能支持一个写操作。
- 当应用被卸载完成后,设备上的相关数据库文件及临时文件会被自动清除。
- ArkTS侧支持的基本数据类型:number、string、二进制类型数据、boolean。
- 为保证插入并读取数据成功,建议一条数据不要超过2M。超出该大小,插入成功,读取失败。
看完后,有一些一目了然,易于理解,有些条目理解起来略晦涩,所以在查阅完资料后,特意整理出来当作备忘:
-
日志模式与落盘方式:
- WAL (Write Ahead Log) :系统默认采用WAL模式记录事务日志。在该模式下,任何对数据库的更改(写操作)在实际更新数据文件之前,都会先将更改记录写入日志文件。这样设计能提高系统的可靠性与恢复能力,即使在系统崩溃或电源故障的情况下,也能通过重放日志来恢复未完成的事务,确保数据的一致性。
- FULL模式:系统默认的落盘方式为FULL模式,意味着所有数据库操作都会立即同步到磁盘上,以确保数据的持久化。这种模式提供了最高的数据安全性,但可能会影响写操作的性能,因为它要求每个事务提交后必须等待数据完全写入物理存储。
-
并发控制:
- 连接限制:数据库预设了4个读连接和1个写连接。这意味着最多可以有4个并发的读操作同时进行,而写操作则受到严格限制,同一时间只能有一个写操作执行。这种设计旨在防止并发写冲突,保证数据一致性。
- 资源调配:在读连接不足且有空闲写连接时,系统允许暂时将写连接用作读连接,以提高读取效率和资源利用率。这体现了系统在保证数据安全的前提下,对读操作的相对宽松处理。
-
数据完整性保证:
- 单写原则:为了确保数据的准确性,数据库强制实施单一写操作原则,即不允许同时有两个或以上的写操作进行。这一限制有助于避免并发写导致的数据不一致问题,如丢失更新、脏读等现象。
-
应用程序生命周期管理:
- 卸载清理:当应用程序被卸载时,鸿蒙操作系统会自动清除与之相关的数据库文件及临时文件。这一机制简化了应用卸载后的资源回收,避免了残留数据可能导致的空间浪费或数据泄漏风险。
-
数据类型支持:
- ArkTS侧数据类型:在使用ArkTS编写应用程序时,关系型数据库支持的基本数据类型包括:
number
(数值)、string
(字符串)、二进制类型数据(如用于存储图像、音频等非文本数据)、boolean
(布尔值)。开发者应确保在数据库操作中使用的数据类型符合这些支持范围。
- ArkTS侧数据类型:在使用ArkTS编写应用程序时,关系型数据库支持的基本数据类型包括:
-
数据大小限制:
- 单条记录大小:为保证数据的正常插入和读取,建议单条数据的大小不超过2MB。超过这个阈值时,虽然插入操作可能会成功,但由于潜在的内部限制或性能问题,后续的读取操作可能会失败。因此,开发者在设计数据模型和存储策略时需考虑这一限制,避免存储过大单条记录,或采取分块、压缩等手段来适应这一约束。
综上所述,鸿蒙开发中关系型数据库的约束限制涵盖了日志管理、并发控制策略、数据完整性的保障措施、应用程序生命周期事件处理、数据类型支持以及单条数据大小限制等多个方面。开发者在构建和使用鸿蒙平台上的关系型数据库应用时,应充分了解并遵循这些约束,以确保数据的准确、一致和系统的高效稳定运行。
转载自:https://juejin.cn/post/7360534173717610523