0

私は約236000語の完全な辞書を持っています。

テキストファイルのすべての単語をSQLサーバーDBとMongoDbに挿入し、単語フィールドの両方のDBのインデックスを確保しました。

すべてのmongoドキュメントをループして、各単語をC#の辞書に挿入します。2.5秒かかります。時々少し少ない時々少し多い。

テキストファイル内のすべての単語をループして、C#の辞書に挿入します。0.9秒かかります。時々少し少ない時々少し多い。

SQL DB内のすべての単語をループして、C#の辞書に単語を挿入します。1.1秒かかります。時々少し少ない時々少し多い。

MongoDBをもっと速くする必要がありますか?

MongoDB:

var connectionString = "mongodb://localhost";
            var client = new MongoClient(connectionString);
            var server = client.GetServer();
            var database = server.GetDatabase("test");
            var collection = database.GetCollection<Entity>("entities");

            var cursor = collection.FindAll();

            foreach (Entity book in cursor)
            {
                string name = book.Name;
                string a = Alphabetize(name);
                string value;
                if (dictionary.TryGetValue(a, out value))//http://www.dotnetperls.com/anagram
                {
                    dictionary[a] = value + " " + name;
                }
                else
                {

                    dictionary.Add(a, name);

                }
            }

「本」と「名前」と書かれているのは無視してください。まだ変更していません。

SQLサーバー:

 connection.ConnectionString = ConnectionStrings.connectionString1;
            using (connection)
            using (SqlCommand command = new SqlCommand())
            {
                command.Connection = connection;
                command.CommandText = "SELECT Word FROM Dictionary";
                if (connection.State != ConnectionState.Open) connection.Open();
                using (SqlDataReader sqlReader = command.ExecuteReader())
                {
                    while (sqlReader.Read())
                    {
                        string line = sqlReader.GetString(0);

                        // Alphabetize the line for the key
                        // Then add to the value string
                        string a = Alphabetize(line);
                        string value;
                        if (dictionary.TryGetValue(a, out value))//http://www.dotnetperls.com/anagram
                        {
                            dictionary[a] = value + " " + line;
                        }
                        else
                        {

                            dictionary.Add(a, line);

                        }

                    }

}}

SQLサーバーがMongoDBよりも高速に実行され、テキストファイルアプローチが両方よりも高速に実行されるたびに。

ただし、mongoの場合、すべての単語の挿入が高速であることに気付きましたが、それは私が探していることではありません。

mongoのコレクションをループするより速い方法はありますか?

特定の単語のテキストファイルのクエリは明らかに非常に遅くなりますが、mongoとSQLのパフォーマンスの違いはそれほど重要ではありませんでした。0.0450026-mongoを使用しているようです。通常、SQlサーバーを使用すると0.0480027っぽくなります

このモンゴループで何か違うことをしませんか?SQLサーバーより2倍以上遅い...

4

1 に答える 1

0

SQL サーバーと MongoDB の両方が、クライアントへのネットワーク接続をセットアップし、クエリを実行し、結果をシリアル化/非シリアル化する必要があります。インデックスを使用しないか、より複雑なクエリを実行しない場合、これはプレーン ファイルからの読み取りよりも常に遅くなります。また、データベースのかなり無意味な使用例です。MongoDB の場合、スキーマのないデータベースであるためパフォーマンスがさらに低下し、固定テーブル スキーマに従うのではなく、結果に動的にレコードを作成する必要があります。

于 2012-12-05T09:11:30.830 に答える