私が最終的に目指しているのは、ユーザーがテキストボックスのようなものに入力できるようにし、ユーザーが文字を入力するとさまざまなオプションが表示されるようにすることです。
例として、ユーザーが名前の入力を開始するJam
と、最も近い候補の下James
にJameson
、Jamie
などが表示されます。
SQL を使用すればSELECT LIKE %Jam%
、その仕事ができることはわかっています (ただし、クエリを実行できるようにするには、ユーザーは書き込みを停止する必要があると思います。そのため、ユーザーは入力中に提案を実際に見ることができません。そうですか?)。
しかし、私の範囲では、データが小さく、データ間に実際の関係がないため、RDBMS を使用する必要はありません。
このテクノロジーを調べるために NoSQL ソリューションを使用することを考えましたが (これまで使用したことがありませんでした)、この場合、このような設計にアプローチする方法がわかりません。
ストレージ内のすべてのデータをプリロードするツリーを構築する必要がありますか? では、インメモリとインストレージの両方にデータがありますか? しかし、NoSQL ソリューションを使用すると、通常はインメモリではないでしょうか? メモリ内に同じデータが 2 回ありますか?
このような問題にどのようにアプローチできますか?
2 に答える
DBから同様のアイテムを取得するには、非同期AjaxまたはJQuery Autocompleteコマンドが必要だと思います。
Java Swing の場合は、こちらをご覧ください。
元の質問に対するコメントに基づいて、あなたの目標は矛盾していると思います。
実際にやって学びたいのなら、車輪の再発明をするリスクがあります。また、車輪を再発明しようとするリスクもありますが、転がらない四角い車輪になってしまいます。
これは必ずしも悪いことではありません。この方法で多くのことを学ぶことができますが、この種の学習は次のステートメントと矛盾します。
...物事を再実装せずに標準的なアプローチに従うべきかどうかはまだわかりません。たとえば、NoSQL はこれに適したアプローチですか?
ここで標準的なアプローチに近い唯一の方法は、データをクライアントではなくサーバーに保存することです。それを行うには多くの方法があり、「トリックを実行すると思われるランダムなライブラリ」を選択することに反対する場合は、「トリックを実行すると思われるランダムなデータベース技術」を選択することにも反対する必要があります。
この場合に学習する最善の方法は、データがバックエンドでどのように保存されているかをソフトウェアが認識しないようにソフトウェアを構築することだと思います。そうすれば、フロント エンド コードにまったく影響を与えることなく、テキスト ファイル、SQL dbms、NoSQL dbms など、思いつく限りのものを交換できます。
これは優れたソフトウェア設計です。フロント エンドとバック エンドの間の疎結合です。