私のアプリケーションは、各ユーザが固有のナチュラルナンバーIDコードを作成して、短い文字列 "と同じ方法です。 「短い紐」部分はゲームにとって非常に重要です。多くのアクティブユーザがいるFirebase-DatabaseでカスタムショートIDを作成する方法
自然数インデックス&ショートストリングを格納するauto-idキーと、自然数をキーと前のauto-idキーとして含む別の子ノードを作成することを考えました。
私は2人のユーザーが同時に新しいIDを作成することはほとんどありません。理想的には、短い文字列を非常に短くするために、1000から始まるIDをインクリメントすることができます。
firebase-databaseを使用してこのタイプの問題を解決する方法は誰にも分かりますか?
長さが6文字以下の「短い文字列」を使用し、数字、大文字、ハイフンのみを使用したいと考えています。
これはできないかもしれません。乱数を生成してすべてのキーに追加するために、50文字のアルファベットを使用する必要があります。
ひとつのアイデアは、現在の最高のキーをチェックし、それに追加する乱数を生成することでしたが、2人のユーザーが同じ番号を取得することはできません保証はまだありません。
これまでのところ、私は2人のユーザーがオンラインユーザーのそれぞれの子ノードでの内部リストを保持していると同時に、新しいキーを生成しようとすると、おそらく競合状態を防ぐために持っている唯一の他のアイデアデータベースに投稿する前にキーを作成しておくと、ユーザーは他のすべてのユーザーの要求されたキーを確認する必要があります。
最後のアイデアは、オンラインで最後に接続が失われた場合にユーザーが再接続するたびにリストをチェックするコードが必要な、複雑なエラーが発生する可能性があるようです。
idを短い文字列に変換するのは簡単です。ユーザーID 1001が "ABC123"の文字列を返し、1002が "ABC124"の文字列を返しても大丈夫ですか?または、1002が「Z7QJ48」になるようにそれらを「ランダムに見える」ようにしたいですか? –
ランダムに見える必要はありません... 2人のユーザーが同時に1人を作成する場合、2人のIDが同じでないことを保証できるようにしたいだけです。 –
答えはトランザクションを使用しているようです。 Firebaseのトランザクションは、2人のユーザが同じデータを同時に書くのを防ぎます。問題の解決策を作成したら、より詳細な回答を投稿します。 –