DB internals, книги/блоги и т.п.
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 13.08.19 05:25
Оценка:
На одном из собеседований мне задали достаточно занятный вопрос "А знаю ли я как работают базы данных внутри на примере любого движка?". Честно говоря, я слился так как расписать, пусть и условно, что происходит от начала формирования запроса до того как данные попадут на диск у меня фантазии не хватает. Но так как вопрос был, надо признать, довольно интересный и разумный, мне стало интересно что-то на этот счет почитать. Можете что-то посоветовать на этот счет? Я бы предпочел по PostgreSQL или MySQL, так как ссылки на исходники бесценны.
В принципе, если я не ошибаюсь, то описание архитектуры Berkeley DB можно найти в "Architecture of open source applications", что тоже хорошо, но вот хотелось бы про PostgreSQL или MySQL. Можно книгу, можно набор заметок в блоге. Что угодно, короче
Re: DB internals, книги/блоги и т.п.
От: BlackEric http://black-eric.lj.ru
Дата: 13.08.19 07:39
Оценка: 18 (1) +1
Здравствуйте, kaa.python, Вы писали:

KP>На одном из собеседований мне задали достаточно занятный вопрос "А знаю ли я как работают базы данных внутри на примере любого движка?". Честно говоря, я слился так как расписать, пусть и условно, что происходит от начала формирования запроса до того как данные попадут на диск у меня фантазии не хватает. Но так как вопрос был, надо признать, довольно интересный и разумный, мне стало интересно что-то на этот счет почитать. Можете что-то посоветовать на этот счет? Я бы предпочел по PostgreSQL или MySQL, так как ссылки на исходники бесценны.

KP>В принципе, если я не ошибаюсь, то описание архитектуры Berkeley DB можно найти в "Architecture of open source applications", что тоже хорошо, но вот хотелось бы про PostgreSQL или MySQL. Можно книгу, можно набор заметок в блоге. Что угодно, короче

Подобное описание ни разу не попадалось. Сам бы почитал с интересом.
По PostgreSQL есть серия статей: MVCC-1. Изоляция и далее от этого автора. Но это далеко не полное изложение вопроса.
https://github.com/BlackEric001
Re: DB internals, книги/блоги и т.п.
От: m2l  
Дата: 13.08.19 08:09
Оценка: 9 (1)
Здравствуйте, kaa.python, Вы писали:

KP>На одном из собеседований мне задали достаточно занятный вопрос "А знаю ли я как работают базы данных внутри на примере любого движка?". Честно говоря, я слился так как расписать, пусть и условно, что происходит от начала формирования запроса до того как данные попадут на диск у меня фантазии не хватает. Но так как вопрос был, надо признать, довольно интересный и разумный, мне стало интересно что-то на этот счет почитать. Можете что-то посоветовать на этот счет? Я бы предпочел по PostgreSQL или MySQL, так как ссылки на исходники бесценны.

Действительно бесценны, поскольку для PostgreSQL единственное внятное описание внутренней работы это именно её исходники.
Если не читал, попробуй Тома Кайта, Oracle для профессионалов и папку Documentation которая идёт с дистрибутивом Oracle. В чистом виде внутреннее устройство там описывается в общих чертах, довольно поверхностно. Но исходя из этого описания можно получить представления что и как сделано. И скорей всего ознакомление с этим базисом поможет тебе понимать исходники PostgreSQL.
Re[2]: DB internals, книги/блоги и т.п.
От: TMU_1  
Дата: 13.08.19 10:19
Оценка: 9 (1)
m2l>Действительно бесценны, поскольку для PostgreSQL единственное внятное описание внутренней работы это именно её исходники.
m2l>Если не читал, попробуй Тома Кайта, Oracle для профессионалов и папку Documentation которая идёт с дистрибутивом Oracle.


Oracle Core: Essential Internals for DBAs and Developers
Authors: Lewis, Jonathan

Можно еще вот эту книжечку посмотреть.
Re: DB internals, книги/блоги и т.п.
От: JacobR  
Дата: 13.08.19 10:40
Оценка: 47 (5) +1
Здравствуйте, kaa.python, Вы писали:

KP>На одном из собеседований мне задали достаточно занятный вопрос "А знаю ли я как работают базы данных внутри на примере любого движка?". Честно говоря, я слился так как расписать, пусть и условно, что происходит от начала формирования запроса до того как данные попадут на диск у меня фантазии не хватает. Но так как вопрос был, надо признать, довольно интересный и разумный, мне стало интересно что-то на этот счет почитать. Можете что-то посоветовать на этот счет? Я бы предпочел по PostgreSQL или MySQL, так как ссылки на исходники бесценны.

KP>В принципе, если я не ошибаюсь, то описание архитектуры Berkeley DB можно найти в "Architecture of open source applications", что тоже хорошо, но вот хотелось бы про PostgreSQL или MySQL. Можно книгу, можно набор заметок в блоге. Что угодно, короче

Для ответа на собеседовании хорошая статья http://coding-geek.com/how-databases-work/

ну и классика Database Systems The Complete Book

https://www.amazon.com/Database-Systems-Complete-Book-Garcia-Molina/dp/933251867X/ref=sr_1_2?keywords=Database+Systems.+The+Complete+Book&qid=1565692427&s=gateway&sr=8-2

тут есть все, реляционная алгебра, кэши, B-деревья, транзакции, оптимизация и пр.
Re[2]: DB internals, книги/блоги и т.п.
От: BlackEric http://black-eric.lj.ru
Дата: 13.08.19 12:02
Оценка:
Здравствуйте, JacobR, Вы писали:

JR>Для ответа на собеседовании хорошая статья http://coding-geek.com/how-databases-work/


Реально классно. Её бы на русский перевести.
https://github.com/BlackEric001
Re: DB internals, книги/блоги и т.п.
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 13.08.19 12:46
Оценка: 18 (2)
Здравствуйте, kaa.python, Вы писали:

Я вот ещё на что набрёл, читаю. Очень интересно и в принципе похоже на то, что я искал: http://www.interdb.jp/pg/index.html
Re[3]: DB internals, книги/блоги и т.п.
От: Sinclair Россия https://github.com/evilguest/
Дата: 13.08.19 13:03
Оценка: 3 (1)
Здравствуйте, BlackEric, Вы писали:

BE>Здравствуйте, JacobR, Вы писали:


JR>>Для ответа на собеседовании хорошая статья http://coding-geek.com/how-databases-work/


BE>Реально классно. Её бы на русский перевести.

Первая редакция (https://www.amazon.com/Database-Systems-Complete-Book-GOAL/dp/0130319953/ref=pd_sbs_14_2/136-3378542-8630840?_encoding=UTF8&pd_rd_i=0130319953&pd_rd_r=7b8d3a72-c26d-4e1f-b1f7-2cd1f9cedb9b&pd_rd_w=WFuCA&pd_rd_wg=NeY7z&pf_rd_p=1c11b7ff-9ffb-4ba6-8036-be1b0afa79bb&pf_rd_r=VV2G6EWTRRAXWG8TD0Z7&psc=1&refRID=VV2G6EWTRRAXWG8TD0Z7) выходила на русском:
https://www.ozon.ru/context/detail/id/1351096/
Автор(ы): Гектор Гарсиа-Молина, Джеффри Ульман, Дженнифер Уидом
Издательство: Вильямс
Цена: 424р.

Книга известного специалиста в области компьютерных наук Дж.Ульмана и его именитых коллег по Станфордскому университету является уникальным учебным и справочным пособием, которое отличается беспрецедентными широтой и глубиной охвата предмета и
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: DB internals, книги/блоги и т.п.
От: Sinclair Россия https://github.com/evilguest/
Дата: 13.08.19 14:21
Оценка: 9 (1)
Здравствуйте, kaa.python, Вы писали:

KP>На одном из собеседований мне задали достаточно занятный вопрос "А знаю ли я как работают базы данных внутри на примере любого движка?". Честно говоря, я слился так как расписать, пусть и условно, что происходит от начала формирования запроса до того как данные попадут на диск у меня фантазии не хватает. Но так как вопрос был, надо признать, довольно интересный и разумный, мне стало интересно что-то на этот счет почитать. Можете что-то посоветовать на этот счет? Я бы предпочел по PostgreSQL или MySQL, так как ссылки на исходники бесценны.

KP>В принципе, если я не ошибаюсь, то описание архитектуры Berkeley DB можно найти в "Architecture of open source applications", что тоже хорошо, но вот хотелось бы про PostgreSQL или MySQL. Можно книгу, можно набор заметок в блоге. Что угодно, короче
Гарсиа-Молина уже посоветовали. Она мне прямо открыла свет волшебной лампы в своё время.
А недавно (~2 месяца тому) я внезапно обнаружил, что мимо меня прошла настолько широкоизвестная книга, что на неё в дискуссиях ссылаются аббревиатурой — DDIA.
Там, к сожалению, мало про internals, зато хорошо рассказано про принципы построения современных систем. Глубина изложения там не такая, как у Гарсиа-Молина, зато широта охвата потрясающая, и огромный (огромный!) список литературы. Подозреваю, что можно запросто потратить год-полтора, просто проходя по ссылкам в конце каждой главы.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: DB internals, книги/блоги и т.п.
От: Sharov Россия  
Дата: 13.08.19 14:38
Оценка: 68 (1)
Здравствуйте, Sinclair, Вы писали:

S>А недавно (~2 месяца тому) я внезапно обнаружил, что мимо меня прошла настолько широкоизвестная книга, что на неё в дискуссиях ссылаются аббревиатурой — DDIA.

S>Там, к сожалению, мало про internals, зато хорошо рассказано про принципы построения современных систем. Глубина изложения там не такая, как у Гарсиа-Молина, зато широта охвата потрясающая, и огромный (огромный!) список литературы. Подозреваю, что можно запросто потратить год-полтора, просто проходя по ссылкам в конце каждой главы.

Читаю ее сильно в фоновом режиме. Она оченно поверхостна, т.е. досматриваю ссылки или ютуб для большего углубления. Но кругозор дает, енто да. Про бд там вроде совсем чуть-чуть, что-то типа LSM vs B-tree + ACID.
Пока не очень.
Кодом людям нужно помогать!
Re: DB internals, книги/блоги и т.п.
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 13.08.19 15:06
Оценка: :))
Здравствуйте, kaa.python, Вы писали:

KP>На одном из собеседований мне задали достаточно занятный вопрос "А знаю ли я как работают базы данных внутри на примере любого движка?". Честно говоря, я слился ...


"... завыл матерно, напился, набил морду вопрошавшему, долго бился головой об стенку — в общем, ушел от ответа" (с) Жванецкий
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re: DB internals, книги/блоги и т.п.
От: Sazon  
Дата: 13.08.19 15:19
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>На одном из собеседований мне задали достаточно занятный вопрос "А знаю ли я как работают базы данных внутри на примере любого движка?". Честно говоря, я слился так как расписать, пусть и условно, что происходит от начала формирования запроса до того как данные попадут на диск у меня фантазии не хватает. Но так как вопрос был, надо признать, довольно интересный и разумный, мне стало интересно что-то на этот счет почитать. Можете что-то посоветовать на этот счет? Я бы предпочел по PostgreSQL или MySQL, так как ссылки на исходники бесценны.

KP>В принципе, если я не ошибаюсь, то описание архитектуры Berkeley DB можно найти в "Architecture of open source applications", что тоже хорошо, но вот хотелось бы про PostgreSQL или MySQL. Можно книгу, можно набор заметок в блоге. Что угодно, короче

У mail.ru есть видео-лекции касаемо БД (техносфера, К.Осипов): B-деревья, LSM, кэширование, WAL, работа планировщика транзакций, 2PL и т.д.
Re[3]: DB internals, книги/блоги и т.п.
От: Sinclair Россия https://github.com/evilguest/
Дата: 13.08.19 15:24
Оценка: 6 (1)
Здравствуйте, Sharov, Вы писали:


S>Читаю ее сильно в фоновом режиме. Она оченно поверхостна, т.е. досматриваю ссылки или ютуб для большего углубления. Но кругозор дает, енто да. Про бд там вроде совсем чуть-чуть, что-то типа LSM vs B-tree + ACID.

S>Пока не очень.
Ну, на мой вкус она крайне удачно дополняет Гарсиа-Молина, в которой очень хорошо описаны подробности реализации RDBMS, но почти ничего про то, что случилось с DB-миром после 1995 там нет.
DDIA крайне удачно задаёт "координаты измерений", и потряает меня неожиданной корректностью в тонких местах — вроде отсутствия честного serializable в Oracle и некорректности/бесполезности CAP-теоремы.
Насколько я понимаю, книг уровня Гарсиа-Молина для NoSQL в природе не существует — зато есть большое количество статей, которые как описывают теорию, так и закапываются в детали конкретных реализаций. И вот как раз они-то доступны по ссылкам из книги.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: CAP
От: Sharov Россия  
Дата: 13.08.19 15:42
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

S>DDIA крайне удачно задаёт "координаты измерений", и потряает меня неожиданной корректностью в тонких местах — вроде отсутствия честного serializable в Oracle и некорректности/бесполезности CAP-теоремы.


До ентого не дошел пока, а что с CAP может быть не так? Единственная мало-мальски адекватная (формальная???) модель для распеределенных приложений. Этакая теорема Шеннона для распределенных систем.
Кодом людям нужно помогать!
Re[5]: CAP
От: Sinclair Россия https://github.com/evilguest/
Дата: 14.08.19 03:57
Оценка: 62 (4)
Здравствуйте, Sharov, Вы писали:
S>До ентого не дошел пока, а что с CAP может быть не так? Единственная мало-мальски адекватная (формальная???) модель для распеределенных приложений. Этакая теорема Шеннона для распределенных систем.
1. Во-первых, она криво сформулирована. Поскольку нет такого понятия, как Partition Tolerance в отдельности от Consistency, не имеет и смысл ставить вопрос так, как будто там есть выбор. Более корректная, но менее красивая формулировка утверждения этой теоремы состоит в том, что при network partition вам придётся выбирать между consistency и availability.
2. Во-вторых, она бесполезна, т.к. не предлагает никаких инструментов для управления этим выбором. Грубо говоря, могу ли я частично пожертовать availability, чтобы получить частичную consistency? Если да, то насколько? Если нет, то почему?

The Unhelpful CAP Theorem

CAP is sometimes presented as Consistency, Availability, Partition tolerance: pick 2
out of 3. Unfortunately, putting it this way is misleading [32] because network partitions
are a kind of fault, so they aren’t something about which you have a choice: they
will happen whether you like it or not [38].
At times when the network is working correctly, a system can provide both consistency
(linearizability) and total availability. When a network fault occurs, you have to
choose between either linearizability or total availability. Thus, a better way of phrasing
CAP would be either Consistent or Available when Partitioned [39]. A more reliable
network needs to make this choice less often, but at some point the choice is
inevitable.
In discussions of CAP there are several contradictory definitions of the term availability,
and the formalization as a theorem [30] does not match its usual meaning [40].
Many so-called “highly available” (fault-tolerant) systems actually do not meet CAP’s
idiosyncratic definition of availability. All in all, there is a lot of misunderstanding
and confusion around CAP, and it does not help us understand systems better, so
CAP is best avoided.

(Martin Kleppman, DDIA)
См. тж. https://arxiv.org/abs/1509.05393
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Отредактировано 14.08.2019 4:02 Sinclair . Предыдущая версия .
Re[6]: CAP
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 14.08.19 04:41
Оценка: +2
Здравствуйте, Sinclair, Вы писали:

S>2. Во-вторых, она бесполезна, т.к. не предлагает никаких инструментов для управления этим выбором.

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

S>Грубо говоря, могу ли я частично пожертовать availability, чтобы получить частичную consistency? Если да, то насколько? Если нет, то почему?


По мне так она как раз и дает ответ на твой вопрос, так как ты требуешь только одну гарантию P и согласен пожертвовать A и С, что как раз не противоречит теореме.
Re: DB internals, книги/блоги и т.п.
От: Stalker. Австралия  
Дата: 14.08.19 06:26
Оценка: +3
Здравствуйте, kaa.python, Вы писали:

KP>На одном из собеседований мне задали достаточно занятный вопрос "А знаю ли я как работают базы данных внутри на примере любого движка?". Честно говоря, я слился так как расписать, пусть и условно, что происходит от начала формирования запроса до того как данные попадут на диск у меня фантазии не хватает. Но так как вопрос был, надо признать, довольно интересный и разумный, мне стало интересно что-то на этот счет почитать. Можете что-то посоветовать на этот счет? Я бы предпочел по PostgreSQL или MySQL, так как ссылки на исходники бесценны.

KP>В принципе, если я не ошибаюсь, то описание архитектуры Berkeley DB можно найти в "Architecture of open source applications", что тоже хорошо, но вот хотелось бы про PostgreSQL или MySQL. Можно книгу, можно набор заметок в блоге. Что угодно, короче

странно что Кalen Delaney никто не упомянул, ее набор книг по внутреннястям сервера абсолютная классика
Re: DB internals, книги/блоги и т.п.
От: chaotic-kotik  
Дата: 14.08.19 07:45
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>На одном из собеседований мне задали достаточно занятный вопрос "А знаю ли я как работают базы данных внутри на примере любого движка?". Честно говоря, я слился так как расписать, пусть и условно, что происходит от начала формирования запроса до того как данные попадут на диск у меня фантазии не хватает. Но так как вопрос был, надо признать, довольно интересный и разумный, мне стало интересно что-то на этот счет почитать. Можете что-то посоветовать на этот счет? Я бы предпочел по PostgreSQL или MySQL, так как ссылки на исходники бесценны.

KP>В принципе, если я не ошибаюсь, то описание архитектуры Berkeley DB можно найти в "Architecture of open source applications", что тоже хорошо, но вот хотелось бы про PostgreSQL или MySQL. Можно книгу, можно набор заметок в блоге. Что угодно, короче

Database Internals, Alex Popov
книга не вышла еще правда, но на портале O'Reily можно уже прочитать

Есть еще видео лекции Andy Pavlo — CMU Database Systems и CMU Advanced Database Systems.
Re[7]: CAP
От: Sinclair Россия https://github.com/evilguest/
Дата: 14.08.19 07:49
Оценка: 7 (1) +1
Здравствуйте, kaa.python, Вы писали:
S>>2. Во-вторых, она бесполезна, т.к. не предлагает никаких инструментов для управления этим выбором.
KP>Так она и не должна отвечать на этот вопрос. Ведь суть теоремы не в том что бы дать решение, а в том, что бы обозначить границы возможностей.
Если честно, суть этой теоремы — в красивой аббревиатуре, чтобы похайпиться. Для сравнения посмотрите на принцип неопределённости Гейзенберга — помимо очевидной констатации того, что "невозможно одновременно измерить коммутирующие величины", там есть и строгая количественная метрика этой "невозможности"
S>>Грубо говоря, могу ли я частично пожертовать availability, чтобы получить частичную consistency? Если да, то насколько? Если нет, то почему?
KP>По мне так она как раз и дает ответ на твой вопрос, так как ты требуешь только одну гарантию P и согласен пожертвовать A и С, что как раз не противоречит теореме.
Нет. Во-первых, я ничего не "требую". Несмотря на формулировку теоремы, невозможно выбрать сочетание A и C, "отказавшись" от P.
Во-вторых, меня интересует не "пожертвовать A и С", а принимать инженерные решения. В инженерном подходе бессмысленно говорить об Availability как о бинарном параметре — да и вообще почти все параметры описываются гораздо более сложными моделями, чем есть/нету. Я и так понимаю, что даже безо всяких CAP невозможно получить гарантированную availability, даже пожертвовав вообще всем — потому что превращение Солнца в сверхновую гарантированно уничтожит мою систему, даже если я сделаю резервную реплику на Юпитере. Меня интересует, как достичь заданного заказчиком процента отказов, при условии, что я знаю профили отказов компонентов, из которых я строю свою систему.
На этот вопрос теорема не только не отвечает, но даже и не пытается.
Поэтому её ценность ничуть не выше, чем народные мудрости вроде "сколько веревочка ни вейся, всё равно конец будет".
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[8]: CAP
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 14.08.19 08:29
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

S>Нет. Во-первых, я ничего не "требую". Несмотря на формулировку теоремы, невозможно выбрать сочетание A и C, "отказавшись" от P.


Почему это? Можно, просто ты получаешь, к примеру при наличии системы из двух узлов, две независимые системы которые удовлетворяют A и C, и, что интересно, P тоже, так как подобная система рано или поздно вырождается в набор независимых узлов.

S>Во-вторых, меня интересует не "пожертвовать A и С", а принимать инженерные решения. В инженерном подходе бессмысленно говорить об Availability как о бинарном параметре — да и вообще почти все параметры описываются гораздо более сложными моделями, чем есть/нету. Я и так понимаю, что даже безо всяких CAP невозможно получить гарантированную availability, даже пожертвовав вообще всем — потому что превращение Солнца в сверхновую гарантированно уничтожит мою систему, даже если я сделаю резервную реплику на Юпитере. Меня интересует, как достичь заданного заказчиком процента отказов, при условии, что я знаю профили отказов компонентов, из которых я строю свою систему.


По моему мнению, теорема не должна в принципе давать ответа на такой вопрос, так как она как раз и описывает набор бинарных свойств. Тут скорее дело в том, что у разных людей разные ожидания от теоремы как таковой. Лично мне она было очень полезна на начальном этапе, так как дает базовую, бинарную логику. А потом уже приходит понимание того, о чем ты пишешь выше.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.