Оснащение доступа к базе данных

Часть ответа заключается в том, чтобы хранить индекс имен пользователей, которые вы проверяете в своих правилах безопасности:

app : {
    users: {
       "some-user-uid": {
            email: "test@test.com"
            username: "myname"
       }
    },
    usernames: {
        "myname": "some-user-uid"
    }
}

Таким образом узел usernames сопоставляет имя пользователя с uid. Он по существу читает, что «имя пользователя« myname »принадлежит« some-user-uid ».

С помощью этой структуры данных ваши правила безопасности могут проверить, есть ли уже запись для данного имени пользователя:

"users": {
  "$uid": {
    ".write": "auth !== null && auth.uid === $uid",
    ".read": "auth !== null && auth.provider === 'password'",
    "username": {
      ".validate": "
        !root.child('usernames').child(newData.val()).exists() ||
        root.child('usernames').child(newData.val()).val() == $uid"
    }
  }
}

Это подтверждает, что имя пользователя еще не заявлено кем-либо еще, или оно заявлено текущим пользователем.

6
задан Whisk 5 September 2008 в 13:10
поделиться

7 ответов

Если Вы пишете запросы в Studio управления SQL, можно войти: SET STATISTICS TIME ON и SQL-сервер скажет Вам, сколько времени отдельные части запроса взяли для парсинга, скомпилируйте и выполнитесь. Вы смогли регистрировать эту информацию путем обработки события InfoMessage класса SqlConnection (но я думаю с помощью SQL Profiler, намного легче.)

0
ответ дан 17 December 2019 в 20:36
поделиться

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

Это могло бы показать Вам шаблоны использования, которые Вы не ожидали. Это могло бы показать, где Ваш доступ "строки строкой" использования вместо "набора основывал" операции.

Лучший инструмент для использования является SQL Profiler, и проанализируйте количество "Reads" по сравнению с ЦП и продолжительностью. Вы хотите избежать высоких запросов ЦП, и долгие продолжительности высокого Read (понятное дело!).

"Группа чтениями" является полезной функцией для обеспечения к вершине самых противных запросов.

1
ответ дан 17 December 2019 в 20:36
поделиться

Если запросом является больше затем просто простой ВЫБОР на единственной таблице, я всегда прокручиваю его, ОБЪЯСНЯЮТ, нахожусь ли я на MySQL или PostgreSQL. При использовании SQL Server затем, Studio управления имеет Дисплей Предполагаемый План выполнения, который является по существу тем же. Полезно видеть, как механизм получит доступ к каждой таблице и что индексирует его, будет использовать. Иногда это будет удивлять Вас.

1
ответ дан 17 December 2019 в 20:36
поделиться

Я думал бы, что важная вещь спросить вот, "какую платформу базы данных Вы используете?"

Например, в Sybase, устанавливая таблицы MDA мог бы решить Вашу проблему, они обеспечивают целый набор статистики от использования вызова процедуры до среднего логического ввода-вывода, процессорное время и индексируют покрытие. Это может быть столь умно, как Вы хотите, чтобы это было.

0
ответ дан 17 December 2019 в 20:36
поделиться

Если Вы в Firebird, можно хотеть смотреть sinatica.com.
Мы скоро запустим контрольный инструмент в реальном времени для Firebird DBAs.

</бесстыдный разъем>

0
ответ дан 17 December 2019 в 20:36
поделиться

Я определенно вижу значение в использовании SQL Profiler, в то время как Вы - приложение, работает, и ОБЪЯСНИТЕ или УСТАНОВИТЕ СТАТИСТИКУ, даст Вам информацию об отдельных запросах, но делает любого обычно помещаемые измерительные точки в их код для сбора информации о продолжающихся запросах базы данных - который взял бы на, например, запрос на таблице, которая работает прекрасный первоначально, но поскольку количество строк растет, становится медленнее и медленнее.

Если Вы используете MySQL или Postgre, там различные инструменты для наблюдения действия запроса в режиме реального времени, но я не нашел инструмент столь же хорошим как SQL Profiler для измерения производительности запросов со временем.

Я задаюсь вопросом, существует ли (или должен быть?) что-то подобное ELMAH в способе, которым это просто включает и дает Вам информацию без большого дополнительного усилия?

0
ответ дан 17 December 2019 в 20:36
поделиться

Если вы используете Hibernate (я использую версию для Java, я полагаю, что у NHibernate есть что-то подобное), вы можете настроить Hibernate для сбора статистики о множестве разных вещей. См., Например:

http://www.javalobby.org/java/forums/t19807.html

0
ответ дан 17 December 2019 в 20:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: