на главную
Карта сайта
English version
Вы читаете:

Тарасов С. В. СУБД для программиста. Базы данных изнутри

Новости электроники
9 лет назад

Тарасов С. В. СУБД для программиста. Базы данных изнутри


Книга охватывает различные этапы разработки и сопутствующие им ситуации из практики программистов приложений, работающих с системами управления базами данных. Даются рекомендации по выбору решений как в проектировании (архитектуре), так и в программировании автоматизированных информационных систем уровня предприятия. Приводятся примеры для различных СУБД и моделей: Microsoft SQL Server, PostgreSQL, Firebird, Oracle, XML, NoSQL.

Тарасов С. В. СУБД для программиста. Базы данных изнутри

Для программистов, студентов и других специалистов в области информационных технологий, а также всех интересующихся темой разработки приложений баз данных.

Содержание

Введение    7
Основные понятия    9
База данных и СУБД    9
Типы приложений: транзакционная и аналитическая обработка    11
Клиент-серверные и встроенные СУБД    14
Сноска. Firebird 2.5: состояние    19
Основные модели данных: иерархическая, сетевая, реляционная    22
Иерархическая модель    22
Сетевая модель    28
Реляционная модель    33
Другие подходы и модели данных    37
Модель "Сущность-атрибут-значение" (EAV)    37
Неполно структурированные модели данных    46
Документ-ориентированная модель и NoSQL    48
Многомерные модели данных    53
О применимости NoSQL    56
Множественная и навигационная обработка, менеджеры записей    61
Объектная модель и объектно-реляционная проекция    65
SQL как универсальный входной язык    75
Проектирование    78
Терминология уровней    78
Первичные и прочие ключи    83
Внешние ключи и связи    87
Нормализация и денормализация    89
1НФ    90
2НФ    91
3НФ    92
Деморализуем... то есть денормализуем: "звезда" и "снежинка"    93
Типовая архитектура данных аналитических приложений    98
Переносимость между СУБД    100
Абстрагирование от СУБД    101
Абстрагирование от входного языка СУБД    102
Использование подмножества входного языка    104
Типовые структуры    104
Моделирование связей разных типов    105
Хронологические данные    109
Иерархические данные и деревья в SQL    115
Интернационализация/локализация данных и проброс контекста    130
Метаданные    138
Реестр объектов и аудит    143
Безопасность и доступ к данным    145
Проектирование физического хранения    151
Физическая организация памяти    152
Оперативная и долговременная память    155
Дисковые массивы    157
Оперативная память    160
Индексация данных    161
Секционирование данных    163
Неполно структурированные данные и высокая нагрузка    165
Относительность понятия высокой нагрузки    165
Особенности использования РСУБД и НСМД (NoSQL)    168
Нужно ли моделировать?    172
Моделирование против ручного кодирования: пример    174
Большие данные как состояние отрасли    181
Программирование с испытаниями    187
Типы соединений в SQL на примерах    187
Исходники и синхронизация структур    190
Некоторые особенности программирования    200
Параметризация запросов и SQL-инъекции    200
Сравнение с неопределёнными (пустыми) значениями    203
Работа со строками    204
Работа с датами    207
Генерация идентификаторов записей    209
Транзакции, изоляция и блокировки    214
Уровни SQL-92    215
Блокировки    219
Взаимные блокировки процессов (deadlock)    222
Версии данных    225
Проявления эффектов изоляции    227
Толстые транзакции    232
Загрузка данных    233
Пакетная загрузка    234
Вставка в толстой транзакции    240
РСУБД и неполно структурированные данные    241
Поддержка XML    242
Поддержка JSON    250
Выводы    253
Постраничные выборки    254
Обзор способов постраничной выборки    256
Тестирование способов постраничной выборки    260
Выводы    271
SQL и модульное тестирование    271
Место модульного тестирования в системе испытаний    271
Особенности разработки на процедурных расширениях SQL    273
Пример задачи для модульного теста    273
Создаём специализированный макроязык    276
Остановиться и оглянуться    283
Производительность SQL-запросов    284
Общие рекомендации    284
Анализ плана выполнения запроса    286
Поиск узких мест    291
Основы нагрузочного тестирования    297
Инструменты и методы    297
Учёт степени параллелизма    301
SQL Server и MongoDB на простом тесте    304
Тест вставки записей    304
Запросы и хронометраж    308
Выводы    315
Тестовые и демонстрационные базы данных    315
Заключение    317
Литература    318

Введение

Разработка приложений баз данных распространена не только в "корпоративном секторе" автоматизации производственных процессов предприятий и их отделов. Из классического определения "программы - это алгоритмы плюс данные" следует, что сколь верёвочке не виться,  пройдя через цепочку служб, запрос в итоге обрабатывается системой управления базами данных (СУБД) или её неполнофункциональным аналогом. Активно развивающийся рынок мобильных устройств широко использует встраиваемые (embedded) СУБД, ранее применявшиеся в основном для управления оборудованием.
Если программист сознательно не ограничивает себя разработкой служб и человеко-машинных интерфейсов, взаимодействующих исключительно с другими службами, то вскоре возникает необходимость непосредственной работы с какой-либо СУБД, вероятнее всего реляционной.

Как правило, обладателям профильного образования преподаватели читали соответствующий теоретический курс в вузе [2], сопровождаемый практическими занятиями, пересекающийся по тематике с другими предметами. И, тем не менее, приступая к производственным задачам, вчерашний студент быстро ощутит отличие академических подходов от открывающегося взгляду пейзажа строек в недрах корпоративного софтостроения или в глубоком тылу веб-служб.

Тяжелее пришедшим в программирование из других областей деятельности. Окунувшись в реальность без багажа теории, соответствующего, как говорят американцы, бэкграунда, трудно сформировать в голове целостную картину, охватывающую важные детали происходящего, пропуская несущественные. Не хватает ни времени, ни мотивации читать достаточно скучные, толстые монографии вроде многократно переизданного Дейта [1], когда надо решать текущие задачи. Программисту становится не до вопросов философии кунг-фу, освоить бы побыстрее основные удары и блоки, чтобы получать поменьше оплеух от брыкающейся техники, исполненных значимости системных администраторов и недовольного начальства. Хорошо, если удастся выкроить часок-другой и потренироваться в сиквеле  на примерах из книжки Грабера [3]...

Справиться с растущим потоком информации, не пропуская её через фильтры теоретического багажа, становится всё труднее. Например, последние годы активно пропагандируют NoSQL, может быть там все будет проще, не надо задумываться о нормальных формах и тренировать мозги на непривычную множественную обработку? Или может быть лучше работать через проекцию таблиц на объекты и не использовать прямой доступ к базе данных?

Книга "Софтостроение изнутри" [13] посвятила немалое количество сюжетов теме "как это не надо делать" и прогрессирующей в среде программистов некомпетентности в области баз данных, приводящей к катастрофическим для проектов последствиям на более поздних стадиях. В отличие от предтечи, настоящее издание будет носить ровно противоположный характер, следуя принципу "как это лучше сделать". Опираясь на опыт работы в продуктовом софтостроении и в технической экспертизе СУБД-решений, автор постарается в рамках повествования помочь вам не утонуть в информационном потоке и разобраться в часто возникающих на практике проблемах, не отрывая их от теории.
Почему не блог, а книга? Действительно, в Сети можно найти немало интересных статей. Однако, во-первых, чтобы найти нужную информацию по правильно заданным ключевым словам, а, во-вторых, оценить достоверность найденной публикации, нужно уже иметь определённый уровень компетенции, который кроме как чтением книг и практикой не поднять. Поэтому рекомендую и начинающим, и программистам с небольшим (2-3 года) опытом не увлекаться малоосмысленным копированием кода со страниц в Сети и прочим натягиванием глобуса на Меркаторову проекцию.

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

Все-таки, нет ничего практичнее, чем хорошая теория.

Купить книгу можно через форму заказа у нас на сайте здесь.

 


Другие новости ...