Какие основные навыки DBA разработчик должен изучить? - PullRequest
7 голосов
/ 24 августа 2009

Создание таких объектов, как таблицы и индексы, довольно важно, даже если код должен быть авторизован или создан dba. Какие еще области обычно выполняет dbas, о которых должен знать опытный разработчик?

Ответы [ 7 ]

9 голосов
/ 24 августа 2009

Разработчик несет ответственность за все, что делает его код a) правильным и b) быстрым.

Это, конечно, включает создание индексов и таблиц.

Делать DBA ответственным за индексы - плохая идея. Что делать, если код работает медленно? Кого винить: разработчика с плохим кодом или DBA с плохим индексом?

A DBA должен передавать операции поддержки базы данных, такие как создание резервных копий, создание инфраструктуры и т. Д., И сообщать о нехватке ресурсов.

Он или она не должен быть единственным лицом, принимающим решения, влияющие на производительность всей системы баз данных.

Реляционные базы данных, как и сейчас, еще не находятся в таком состоянии, которое позволило бы разделить ответственность, чтобы разработчики могли выполнять запросы вправо , а DBA могло бы их быстро . Это миф.

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

Теперь пришло время принимать решения. Что нам нужно больше, быстрый запрос или быстрая вставка?

Это решение должно быть принято руководителем программы (а не DBA или разработчиком).

И когда решение будет принято, разработчику следует дать новое задание: «сделать запрос SELECT как можно быстрее, учитывая, что у вас нет этого индекса». Или «сделайте запрос INSERT как можно быстрее, учитывая, что у вас будет этот индекс».

Разработчик должен знать все о как работает база данных, когда она работает нормально .

A DBA должен знать все о , как заставить базу данных работать нормально .

Последнее включает в себя возможность делать резервную копию, возможность восстановления из резервной копии и возможность обнаруживать и сообщать о конфликте ресурсов.

8 голосов
/ 24 августа 2009

Преимущества хранения и оптимизации баз данных огромны. Знание того, как правильно индексировать и разбивать таблицы на таблицы, является бесценным знанием.

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

Обслуживание базы данных (резервное копирование, сжатие файлов и т. Д.) Всегда важно для обеспечения бесперебойной работы вашего сервера. Это тоже часто упускают из виду.

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

Что подводит меня к самому важному моменту, разработчики баз данных должны думать в наборах. Часто я слышу: «Для каждого ряда я хочу…», и это, как правило, тревога в моей голове. Вам следует подумать о том, как набор взаимодействует, и действиях, которые вы хотите выполнить над целыми столбцами.

2 голосов
/ 24 августа 2009

Я бы рекомендовал развить понимание архитектуры безопасности для соответствующей СУБД.

Это может облегчить разработку безопасного кода.

С учетом SQL Server, например:

  • Поймите, почему вашему «управляемому коду» (например, .NET CLR) не следует предоставлять повышенные привилегии. Каковы будут последствия этого?
  • Что такое цепочка владения несколькими базами данных? Как это работает?
  • Понять контекст выполнения.
  • Как работает встроенное шифрование SQL Server?
  • Как вы можете подписать хранимую процедуру? Зачем тебе это делать?
  • 1018 * Etc. *

Как правило, чем больше вы понимаете, с каким двигателем вы работаете, тем большую производительность вы можете извлечь из него.

2 голосов
/ 24 августа 2009

Оптимизация. Ваш код всегда должен использовать как можно меньше ресурсов.

1 голос
/ 24 августа 2009

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

Я думаю, что все остальные покрывали это.

1 голос
/ 24 августа 2009

Одна вещь, которая в настоящее время приходит на ум, - это как ориентироваться и понимать информацию, которую вам предоставляют «системные» таблицы / представления базы данных. Например. в сервере sql представления, которые находятся под главной базой данных. В этих представлениях хранится такая информация, как текущие входы в систему, списки таблиц и разделов и т. Д., Что очень полезно при попытке отследить такие вещи, как зависшие входы в систему или сведения о том, подключены ли пользователи в настоящее время и т. Д.

0 голосов
/ 05 декабря 2012

Хорошее понимание архитектуры вашей системы баз данных, безусловно, будет полезно. Можете ли вы нарисовать диаграмму наизусть, чтобы показать компоненты вашей СУБД и их взаимодействие?

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