Firestoreを使ってみて感じたデメリット

タグ: ,

仕事でfirebaseを一通り使っており、大体仕組みやらメリットデメリットがわかったので書き残したいと思います。

今回はfirestoreについて書いていきたいと思います。

 

Firestoreの良いところ

データベースの設定をしなくてもAPIを叩けばデータのCRUDが出来るところです。

RDBやらNoSQLを使うにはインストール作業からセットアップまで自分でやらないといけませんが、firestoreは発行された変数を渡してAPIを叩くだけです。

非常に簡単なので手間なくさくっとデータ保存の仕組みを利用できます。

残念ながら今まで触ってきて良いと思った点はこれしかないです。

もちろんベータ版なのでこれからに期待です。

 

Firestore悪いところ

クエリがしんどい

and検索しかできません。

or検索できないLike検索できないという大きなデメリットがあります。

or検索できないので例えば論理削除したものを除外して抽出できません。

 

この時点でメインDBとしての利用は避けるべきかと思います。

また、複雑な検索するには全文検索エンジンを利用するのが前提で結局サーバー構築が必要になり、それなら最初からMySQLでいいのでは?と思いました。

 

joinすると遅い

firestoreにはjoinがないのでデータをjoinさせたい場合、各ドキュメントにidをキーにしたオブジェクトを持たせて、このキーを利用してデータを取得します。

{
  id: string
  users: {
    taro: boolean
    ziro: boolean
  }
}

このようなオブジェクトになります。

実際にクエリを投げる場合は、

usersドキュメントに対してn回クエリを発行するか、

ある程度絞り込んだユーザー一覧を取得してプログラムでjoinさせるか

の二択です。

 

このようにjoinさせたいデータがある時に、複数クエリを発行するしか方法がないのでjoinが多くなるとかなり遅くなります。

大量にjoinするシステムの場合は避けたほうがいいかもしれません。

 

まとめ

検索が弱いのが一番のネックです。

 

検索がいらないものやシンプルなデータ構造のシステムや一部機能でのみ使うことがおすすめです。

例えば、チャットとかは良さそうです。

私だったらfirestore使うくらいならNeo4jや他NoSQLを使うと思います。

お仕事の相談

フリーランスエンジニアをお探しでしたらこちらよりご連絡ください お仕事の相談