持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第19天,点击查看活动详情
Isar:用于 Futter 可跨平台的超快数据库
官方文档:Home | Isar Database
pub:isar | Dart Package (flutter-io.cn)
本文翻译自:
Limitations | Isar Database
FAQ | Isar Database
译时版本:3.0.2
局限性
如你所知,Isar 在移动端设备、桌面和Web 上是运行在 VM(虚拟机)上。 各个平台都有很大的不同,也有不同的限制。
VM 局限性
- 对于前缀 Where 子句,只有字符串的前1024个字节可以使用。
- 对象大小限制为 16MB 。
Web 局限性
因为 Isar Web 依赖 IndexedDB ,使用 Isar 时有更多的局限但不是很明显。
- 同步方法不支持。
- 现在,
Isar.splitWords()和.matches()过滤器还未实现。 - Schema 的改变不像 VM 中那样严格检查所以要谨慎以遵循规则。
- 所有的数字类型都存储为 double (仅有的 js 数字类型) 所以
@Size32不起作用 - 索引的表现是不同的,所以哈希索引不会使用更少的空间(它们还是会相同地工作)
col.delete()和col.deleteAll()会正确工作但是返回的值不对。col.clear()不会重置自增的值。NaN不支持作为值。
常见问题
关于 Isar 和 Flutter 数据库常见问题的随机收集。
为什么我需要数据库?
我在后台数据库中存储我的数据,为什么还需要 Isar ?
即使今天,如果在地铁或飞机上,或去你没有 WiFi 和蜂窝信号很差的外婆家,无数据连接也很普遍。不应该由于差的信号而使你的应用变成残废!
Isar vs Hive
答案很简单:Isar 已经 The answer is easy: Isar was 开始作为 Hive 的代替 ,并且现在的状况正是建议总是选择使用 Isar 而不是 Hive 。
Where 子句?!
为什么 我 必须选择使用哪一个索引?
这有多种原因。 一些数据库使用探索法为给定查询选择最佳索引。 这些数据库需要收集额外的用法数据(->架空的数据)可能仍然会选择错误的索引。 它也会减慢创建查询的过程。
开发者,没有人比你更了解你的数据。 所以你可以选择最优的索引然后决定想使用的索引,例如决定用于查询或排序的索引。
我必须使用 索引/where 子句吗?
不是的!看上去 Isar 只依靠过滤也足够快。
Isar 够快吗?
Isar 是移动端最快的数据库之一,所以大多数场合它都足够快。 如果碰到了性能问题,大概率是有什么地方做得不对。
Isar 会增加应用的大小吗?
是的,一点儿。 Isar 会增加应用下载的大小约 1 - 1.5 MB。 Isar Web 只会增加几KB。
文档有错误/有拼写错误。
噢不,不好意思。请 提出 issue 或更好的是 提出 PR 修复它💪。