Базы данных с ограничениями использования - PullRequest
0 голосов
/ 02 ноября 2010

У меня есть веб-приложение, которое позволяет пользователям создавать собственные сложные запросы, используя упрощенный язык сценариев и графический интерфейс. Проблема в том, что иногда мои пользователи чувствуют себя не очень хорошо. Зачастую они создают запрос, который выполняет массивные объединения или использует бессмысленные сравнения больших наборов данных, которые быстро потребляют большую часть доступных ресурсов на машине. Фактически, небольшое количество людей разрушает партию для всех остальных. Обучить или запретить этих «специальных» пользователей не вариант.

Итак, вот мой вопрос: существуют ли какие-либо базы данных (NoSQL или SQL или что-нибудь еще), которые поддерживают ограничения ресурсов для каждого запроса?

Ограничение использования ЦП было бы минимальным, но другие ограничения, такие как время выполнения, использование памяти и ограничение числа возвращаемых строк, также были бы хорошими. Было бы особенно удобно, если бы я мог программно определять пределы, чтобы я мог ориентироваться на своих проблемных пользователей.

РЕДАКТИРОВАТЬ : дополнительные очки за открытые и / или бесплатные продукты.

EDIT2 : Найдены некоторые связанные вопросы, которые дают понять, что Oracle поддерживает какую-то схему ограничения ресурсов, но есть ли другие продукты, которые это делают? Просто Oracle и SQL Server?

https://serverfault.com/questions/124158/throttle-or-limit-resources-used-by-a-user-in-a-database Есть ли способ ограничить или ограничить ресурсы, используемые пользователем в Oracle?

Ответы [ 2 ]

1 голос
/ 02 ноября 2010

SQL Server 2008 поддерживает регулятор ресурсов:

Resource Governor - новая технология в SQL Server 2008, что позволяет вам управлять рабочей нагрузкой SQL Server и ресурсы путем указания ограничений на потребление ресурсов входящим Запросы. В ресурсе губернатора контекст, рабочая нагрузка представляет собой набор одинаковые по размеру запросы или запросы которые могут и должны рассматриваться как единое целое. Это не требование, но чем более равномерным структура использования ресурсов рабочей нагрузки тем больше пользы вы происходят от управляющего ресурсами. Пределы ресурса могут быть перенастроены в в режиме реального времени с минимальным воздействием на рабочие нагрузки, которые выполняются.

Управляющий ресурсами предоставляет:

  • Возможность классификации входящих соединений и маршрутизации их рабочих нагрузок. к определенной группе.

  • Возможность отслеживать использование ресурсов для каждой рабочей нагрузки в группе.

  • Возможность объединять ресурсы и устанавливать ограничения для конкретного процессора при использовании ЦП. и распределение памяти. Это мешает или сводит к минимуму вероятность Запасные запросы.

  • Возможность связать сгруппированные рабочие нагрузки с определенным пулом ресурсы.

  • Возможность идентифицировать и устанавливать приоритеты для рабочих нагрузок.

Ref .

0 голосов
/ 02 ноября 2010

Ресурсные ограничения могут облегчить вашу проблему, но я думаю, что проблема в этой ситуации заключается в непредсказуемом использовании ресурсов.

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

Если я сталкиваюсь с такой ситуацией, я бы попытался выяснить, что на самом деле нужно пользователю, и предоставить более точный запрос (в некоторой таблице или некоторых условиях данных) для него.

Однако, если ничего не поделаешь, я бы попытался клонировать (реплицировать) базу данных для интенсивно используемого пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...