0

MongodbとNode.jsを使用して単純なログインシステムを実装しようとしましたが、面倒であることがわかりました(誰もが数百のフレームワークで物事を構築しており、コードの半分を説明していません)。たぶんできたのですが、シンプルなマルチプレイヤーゲームだけを作りたいので、手間がかかりすぎてしまいます。

データベースに代わるものはプレーンテキストファイルです。もちろん、パスワードをハッシュする予定です。私が頭に浮かんだ最初の問題は、ファイルが大きくなりすぎる可能性があることと、サーバーがファイルを読み取ろうとすると完全に遅くなることでした(架空の状況では、私のゲームにそれほど多くのユーザーがいるとは思えません)。解決策は、サーバー上にフォルダーを作成しusers/、大きなファイルを多くの小さなファイルに分割することです。それらの名前はユーザー名に対応し、ハッシュ化されたパスワードと電子メールが保持されます。これで速度の問題が解決し、データベースがどのように必要かわかりません。

私は何かが足りないのですか?データベースを使用することに他の利点はありますか?また、誰かがログインMongodbの例で答えてくれれば、私のすべての問題が解決することをとても嬉しく思います。できるだけシンプルにしてください。

4

4 に答える 4

4

ハッキングされた、中途半端なファイル実装の代わりに実際のデータベースを使用する理由はたくさんあります。いくつかの大きなもの:

  • ACID(これは本当に4つの理由です)
  • パフォーマンスと安定性(データベースは、現在も使用されている最も成熟したソフトウェアの一部です)
  • 標準化

「軽量」が必要な場合は、SQLiteから始めることをお勧めします。


関連している:

于 2012-06-13T17:27:15.653 に答える
2

UserName(10)、Password(32)のような認証情報があるとします。これらは42文字になります。各文字が4バイト(ユニバース内のすべての文字で構成される)であるとすると、各ユーザーは42 * 4=168バイトを消費します。100.000人のユーザーがいる場合でも、必要なメモリは16MBだけです。RAM全体に収まり、ディスクに変更を加えて、プログラムの起動時にすべてを読み取るだけで済みます。もちろん、オーバーヘッドはわずかですが、大したことではありません。

ただし、ファイルの処理が問題になる可能性があるため、車輪の再発明を行う必要はありません。これがデータベースの目的です。私は同意します。Mongoを使用すると、MySQLはやり過ぎになる可能性がありますが、認証にデータベースのみを使用する場合は、より軽量なソリューションを使用できます。ファイルのみ、最大270KBのクライアント、優れたSQLiteを使用できます。 NodeJSライブラリ。この素敵な投稿を見てください

于 2012-06-13T17:29:04.437 に答える
1

mongoを使用している場合は、Mongooseライブラリを使用することを強くお勧めします。Mongoに優れたORMを提供します。そのORMを使用することにした場合は、mongoose-authと呼ばれる確立された認証ライブラリがあります。自分のサイトのデフォルトのパスワードの例を使用しました。

于 2012-06-13T17:26:49.693 に答える
1

NodeJSを使用している場合は、mongoDBが適切に機能し、redis、couchなどのオプションもあります。MongoDBは、開始するのに最適な場所であり、少し遊んだことがある場合も同様です。それにこだわります。

cloudfoundryまたはMongolab(両方とも無料)mongoDbサーバーを使用しているこのリポジトリをご覧ください。

https://github.com/daithiw44/Node_Authenticated_MongoDB

デモには、クリックするとデータベースにヒットして値を取得するボタンがあります。ユーザー名とパスワードのテキストフィールドの値をハードコードされた値に置き換えると、ユーザーを認証してexpressjsセッションを設定できます。

これは古いバージョンのノードで書かれていますが、package.jsonを微調整することで、始めるのに適した場所になるはずです。

お役に立てば幸いです。

于 2012-06-13T20:13:06.640 に答える