Бен, ну ты понял.

Jun 27, 2012 12:41

Читаю книжку "sql для самых-самых тупых". И всё равно ничего не понимаю.
Оъясните мне глубинную концепцию СУБД на пальцах. Не могу я её осознать. Заботать теорию надёжности за вечер - могу, апач поднять - могу, даже торт испечь могу, хоть и паршивый.
А вот в чём скрытый смысл баз данных, понять не могу.

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

Leave a comment

Comments 23

binary_dima June 27 2012, 09:39:46 UTC
Не поверишь, скрытый смысл БД хранить данные с возможностью их быстрого выборочного доступа :)

Reply

elennie_morien June 27 2012, 09:49:59 UTC
Ну ок, не смысл, а система представления. Что из себя представляет СУБД помимо тупо таблиц.

Reply

binary_dima June 27 2012, 09:59:48 UTC
1)Возможность доступа к этим таблицам (т.е. поддержка языка БД, тот же SQL например).
2)Хранение таблиц в рациональной форме на диске и в оперативной памяти, кэширование.
3) Логи операций, резервное копирование, возможность восстановления данных
4) Ну и всякие дополнительные фишки, вроде транзакционных механизмов, локировок, ролей пользователей и т.п.

Reply

elennie_morien June 27 2012, 10:02:01 UTC
И всё это реализовано в конченом итоге тоже в виде таблиц, угу.

Reply


sosedy June 27 2012, 11:15:12 UTC
я смысл ООП тоже не понимал, пока не попалась какая-то задача, в которой я сам почувствовал необходимость подобной штуки, а не то, что она есть и ее надо использовать. и тогда все сразу стало понятно. советую найти такую же про БД, тем более это имхо даже попроще. везде нужны связанные данные типа "у одного пользователя есть много друзей и еще больше фоток в нескольких разных альбомах". попробуй какие-нить другие способы организации подобной инфы, учитывая, что из нее надо делать всякие хитрые выборки, и все встанет на свои места.

Reply

scau June 27 2012, 19:37:14 UTC
то же самое хотел предложить. как только ты пробуешь альтернативный способ сама реализовать (например, хранение файлами или как-то еще), и пытаешься на этом реализовать решение какой-то настоящей задачи, на второй-третьей задаче понимаешь, что тебе нужен оптимальный способ хранения данных (хотя бы третья нормальная форма), механизм блокировок доступа, механизм компактного хранения данных, доступ к данным с авторизацией, параллельный доступ разных пользователей, хранение запросов где-то на стороне базы и так далее, и так далее.

То, что я перечислил, - это то, с чем сталкиваются вообще все программисты баз данных.

Reply

elennie_morien June 28 2012, 06:21:00 UTC
Я, пожалуй, не совсем верно сформулировала исходную проблему. Зачем нужны БД и что это удобно, я понимаю примерно :)
А вот механизмы работы понять не могу.
Вот выше мне доступно на пальцах объяснили, как устроен доступ к sql-серверу нескольких клиентов одновременно, и я поняла.
А вот как, допустим, устроен доступ с авторизацией или хранение запросов на стороне базы, пока нет(

Reply

binary_dima June 29 2012, 11:11:13 UTC
Авторизацию и роли пользователей довольно легко понять на примере того же паспортного стола по-моему.
Вот скажем тетя из примера, которая отвечает за изменения фамилий имеет свой логин-пароль для доступа к БД. И СУБД знает, что этому пользователю надо разрешить запросы, которые читают и изменяют фамилии, но не выполнять от него запросов на удаление всей базы или отдельных таблиц. А то наудаляет еще случайно, все данные потеряем.
В общем-то это глобальное правило компьютерной безопасности - давать ровно столько прав, сколько требуется пользователю для его работы. Всё целее будет.

Что касается хранения запросов на сервере (в случае клиент-серверной СУБД, то прочитай это в википедии.
Там всего один экран, если смысл каких-то пунктов будет не ясен, то опять же могу попробовать объяснить на примерах.

Reply


rubtsov June 27 2012, 20:04:59 UTC
Не уверен, что правильно читать книжки для самых тупых, потому что в них скорее всего будут писать для самых тупых ( ... )

Reply


rubtsov June 27 2012, 20:05:10 UTC
2. СУБД должна обеспечивать работу БД, а именно безопасность, корректность работы и целостность данных. Проблемы с целостностью данных самые простые в плане описания. Допустим, ушёл из банка клиент. Его удалили из БД и теперь программа падает каждый раз, когда кто-то из имевших с ним дело смотрит историю - его имени нет, а программа его запрашивает и не может вывести. Для решения подобных проблем, например, можно использовать триггеры - программы, которые самостоятельно выполняются при некоторых действиях, таких как добавление или удаление строчки. Можно, например, при удалении клиента во всех строчках упоминаемых его, заменить его на "неизвестного отправителя", можно, просто выпилить из базы все строчки. Корректность - это отдельная головная боль. С ней столько разных проблем, что все в комменте описывать лень :) Например, переводят тебе деньги на счёт сразу два человека в одну секунду - первый 1$, второй 1000$. Сначала оба посмотрели, что у тебя на счету 0$, потом второй сказал, "замени 0$ на 1000$", а после этого первый сказал " ( ... )

Reply

elennie_morien June 28 2012, 06:24:20 UTC
Книжки для умных я пробовала читать, но там возникает проблема "слова все знакомые, а смысл неясен". А вот в книжке для тупых я вчера почитала про транзакции и вроде даже поняла, зачем они нужны и как устроены.

В целом спасибо, еще пара моментов из твоего комментария мне стали ясны :)

Reply

rubtsov June 28 2012, 07:01:00 UTC
Значит ты читала не книжку для умных, а книжку для прогеров-задротов. Найти годную книжку - это отдельная проблема.

Пожалуйста, если что - спрашивай :)

Reply

elennie_morien June 28 2012, 07:05:08 UTC
Я читала мелкомягкий курс самоподготовки к сдаче 70-433 по sql 2008 :)

Reply


dikaya_radost June 27 2012, 20:22:39 UTC
а я недавно поняла, что не знаю, как это объяснять :( просто мыслю в таких категориях, и всё

мир как реляционная база данных

Reply


Leave a comment

Up