[官文翻译]Futter超快数据库Isar - 概念 - 局限性 & FAQ

468 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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 修复它💪。