Arhn - архитектура программирования

Оптимизация выбора записей БД веб-службы .NET

Я планирую веб-сервис (.NET asmx), который мне нужно максимально оптимизировать. Веб-служба возвращает 10 случайных записей (каждый вызов от клиента должен быть случайным) из базы данных (Mysql) в соответствии с параметром, переданным от клиента. Каждый параметр (1-12) содержит ~2000 записей в БД.

решения:

  1. Запрашиваем БД (которая будет проиндексирована по параметру) и просто возвращаем результат.
  2. Кэшируйте таблицу из БД в .net Datatable и выбирайте с помощью Linq (~ 15 000 записей).
  3. Кэшируйте БД в 12 .net DataTables, каждый для возможных параметров, и запрашивайте Datatable с помощью Linq.

Как лучше выполнить это задание? Я хотел бы услышать другие идеи!

С уважением, Уди.

07.10.2012

  • Зачем вам использовать asmx? В настоящее время предпочтительным сервисным стеком является WCF. 07.10.2012
  • @rene - На самом деле WebApi начинает заменять wcf для простых запросов. 07.10.2012
  • Я добавляю новую функциональность (метод) в существующую веб-службу. 07.10.2012

Ответы:


1

Кэшируйте данные в 12 строго типизированных массивов. Это удаляет всю обработку, кроме выбора 10 случайных записей из простого массива. Это не становится быстрее, чем это.

Не используйте таблицы данных. Почему ты? Они могут быть только медленнее, чем строго типизированные списки/массивы пользовательского класса.

Как оптимизировать выбор 10 случайных элементов — это другой вопрос, на который уже наверняка дан ответ.

07.10.2012
  • Спасибо! Мне нужно вернуть результат клиенту в виде Json. Будет ли эффективным сохранение каждого объекта в виде строки json в массиве, а затем объединение N случайных строк Json и отправка этой строки клиенту? 08.10.2012
  • @UdiI, это звучит как очень хорошая идея, если предположить, что вам действительно нужно получить максимально возможную производительность. Я рекомендую это. Сериализация может быть дорогостоящей. Мы оптимизировали это сейчас в значительной степени. Вероятно, вам следует выполнить нагрузочное тестирование сайта и запустить на нем профайлер. Вы заметите, что накладные расходы ASP.NET больше, чем ваш собственный код! Попробуйте избавиться от некоторых из них. 08.10.2012
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..