-1

node.js と MongoDB/Express でデータ フィード REST サービスを構築しているため、クエリ結果が小さい場合に非常にうまく機能します。ただし、クライアントが 100 万行などの大規模なデータセットをクエリすると、サーバーがハングします (既に圧縮に gzip を使用しています)。これは node.js のシングル スレッド設計が原因ですか?  

これを処理するためのアイデアについて相談したいと思います。

どんなコメントでも大歓迎です:)

以下は、サービスに関するコードです (JayData OData サーバー モジュールを使用)。

app.use('/d.svc', $data.ODataServer({
    type: TYPE,
    CORS: true,
    database: 'odata',
    responseLimit: -1,
    checkPermission: function (access, user, entitySets, callback) {
        logger.info('Check Access Permission for User');// + JSON.stringify(user));
        if (access & $data.Access.Create) {
            if (user == 'admin') callback.success();
            else callback.error('Auth failed');
        } else callback.success();
    },
    provider: {
        name: 'mongoDB',
        databaseName: 'odata',
        address: settings.host,
        port: settings.port,
        username: USER,
        password: PASSWORD
    }
}));

どうもありがとうございました。

ルーク。

4

1 に答える 1

0

1 回のクエリでこの量のデータを送信しないでください。クライアント側のメモリに結果を保持する必要があると想像してください。使用するテクノロジーに関係なく、ページ化されたダウンロードをお勧めします。JayData の場合は、このブログ投稿 - Synchronized Online/Offline data applications, part 2: Syncing large tables and tables with Foreign Relations に基づいて実装できます。

于 2013-09-30T05:25:50.540 に答える