-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathexam.txt
218 lines (148 loc) · 10.8 KB
/
exam.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
----------------------------------------------------------------------
Основные вопросы:
----------------------------------------------------------------------
1) N-way merge sort algorithm
Алгоритм общего назначения
en.wikipedia.org/wiki/Merge_sort
2) Nested loop relational join algorithm
Подробно разобрали на консультации. Описан в Database Systems: the complete book. en.wikipedia.org/wiki/Nested_loop_join достаточно для ответа на тройку. Для ответа на 5 необходимо
понимать по каким принципам выбирается порядок таблиц в цикле.
Google it!
3) Consistent hashing algorithm
basho.com/tag/consistent-hashing/
Слайды (начиная с 45го — Under the hood, т.е. под капотом):
www.lugod.org/presentations/Riak-Overload.pdf
Не рекомендую читать оригинальную статью т.к. там
также описывается вспомогательный алгоритм с использованием
Merkle trees, который необходим был лишь в решении задач Akamai
Wikipedia is OK.
4) Fractional cascading algorithm
MIT OCW, Advanced Algorithms, Geometric algorithms part I,
with Eric Demaine
Есть видео на youtube: www.youtube.com/watch?v=OK5avpGMEPQ
Примерно с 57 минуты.
5) LSM tree: algorithm, cost analysis
O'Neil paper вполне читаемый. Проще чем на лекциях это
нигде не объясняется.
Исходный код LevelDB
code.google.com/p/leveldb/
Также рекомендую:
rocksdb.org/
6) Bloom filter
Очень простой вопрос.
en.wikipedia.org/wiki/Bloom_filter
7) B-tree: algorithm, cost model, cost analysis
Для понимания основ: wikipedia
Для ответа на 5:
www.tokutek.com/wp-content/uploads/2012/09/BenderKuszmaul-tutorial-xldb12.pdf
tokutek.com/presentations/bender-Scalperf-9-09.pdf
(в презентациях содержится подробный разбор проблем
DAM модели).
8) UNDO/REDO logging and recovery protocol. Стратегии NO UNDO/NO REDO. Смешанные стратегии восстановления после сбоя.
Bernstein, Newcomer, глава System Recovery, часть Database Recovery Manager. Требуется понимать основные правила ведения WAL для NO UNDO/NO REDO стратегии.
9) Sumbur hashing algorithm
github.com/mailru/sumbur-ruby/blob/master/lib/sumbur/pure_ruby.rb
10) 5 models for data consistency
en.wikipedia.org/wiki/Consistency_model
11) Static cache oblivious search tree — data structure, cost model, cost anaylsis
MIT OCW, Eric Demaine, Memory Hierarche I — Advanced data structures
www.youtube.com/watch?v=tizGsAuoCJs
С 38 минуты.
Рекомендую просмотреть лекцию полностью для понимания
проблематики вопроса про B-trees.
13) 2PL protocol, 2PL theorem and the proof
Bernstein, Newcomer, Chapter 6 locking — глава
нужна полностью для этого вопроса, 14го и 16го вопроса.
14) Блокировки, таблица совместимости, специальные блокировки (update lock, intention lock, upgradeable lock), блокировки с приоритетами
См. комментарий к предыдущему вопросу. В учебнике
не разбираются pending locks, lock priorities, priority
inversion, lock starvation. См. лекции.
15) Deadlock-free алгоритмы взятия блокировок.
Частично есть в Bernstein/Newcomer, «Tree locking»
Для остального, быстрый поиск нашёл вот этот blog:
www.justsoftwaresolutions.co.uk/threading/acquiring-multiple-locks-without-deadlock.html
Тема неисчерпаема, особенно с wait-free алгоритмами.
16) Estimating deadlock probability for 2PL locking
См. комментарий к 14му вопросу.
17) Основные принципы MVCC
Bernstein, Newcomer
18) Алгоритм оптимистичных блокировок для выполнения транзакций. Thomas Write Rule
Bernstein, Newcomer, глава Locking
19) SQL standard transaction isolation levels. Snapshot isolation.
Любой учебник за авторством С.J. Date,
wikipedia. Для ответа на 5 необходимо знать примеры проблем, которые возможны в каждом уровне изоляции (фантомы, неповтоярющиеся чтения т.д.):
en.wikipedia.org/wiki/Isolation_%28database_systems%29#Isolation_levels
20) Checkpoints. Предназначение. Fuzzy/nonquiscent checkpointing.
Bernstein, Newcomer, System Recovery
21) Распределённые транзакции. Протокол 2PC
Bernstein, Newcomer, глава Two phase commit
22) Асинхронная master-slave репликации. Statement-based и row-based репликация. Recovery from a degraded state (failover).
Основы есть в Bernstein, Newcomer, Replication
23) Использование векторных часов для разрешения конфилктов в асинхронной репликации
Bernstein, Newcomer, глава Replication
24) Paxos, принципы синхронизации состояния распределённого ДКА
Paxos made simple by Leslie Lamport. Перевод на русский
язык всей статьи есть в
github.com/kostja/lectures/blob/master/10.paxos.txt
25) Raft как алгоритм синхронной репликации
ramcloud.stanford.edu/wiki/download/attachments/11370504/raft.pdf
26) Gossip протокол распространения изменений в сверхбольших кластерах
----------------------------------------------------------------------
Дополнительные вопросы:
----------------------------------------------------------------------
a) - api для диска + pages
b) - insert + search
c) - delete
d) - cache
e) - wal
f) - restore
- вот у вас есть lsm-дерево. Необходимо выбрать фактор роста
для каждого уровня. Какими приницами вы будете руководствоваться?
- необходимо сделать top самых популярных запросов к яндексу
за неделю. как вы это будете делать?
- вы - booking.com. опишите необходимую инфраструктуру для поиска отелей.
оцените объём базы данных и необходимое оборудование
- вы - mamba.ru. опишите необходимуую инфраструктуру для поиска
по анкетам. с какой проблемой вы можете столкуться?
- вы - auto.yandex.ru. создайте базу данных для поиска автомобилей по
маркам.
- опишите инфраструктуру хранения данных,
необходимую для реализаации сервиса обмена мгновенными сообщениями
(icq, telegram, etc)
- f(x), 1000000 x в stdin. получите top(100)(f(x)) если есть 10 машин
- как предотвратить starvation при deadlock-based transaction rollback?
- опишите эффективный алгоритм гарантированной доставки сообщений.
Порядок доставки может быть любым (не обязан соотв. порядку отправки).
Исключите двойную доставку.
- создайте алгоритм доставки сообщений, в котором сообщения от
*одного* отправителя гарантированно доставляются всем в порядке
отправки. Сообщения от разных отправителей могут доставляться в
ллюбом порядке.
- создайте систему онлайн-биржи. участники приходят и посылают сообщения
на сервер типа sell(commodity, amount, price) и ждут ответа от сервера.
или buy(commodity, amount, price).
Сервер должен иметь следущие функции:
- последние sell/buy предложения (окно в 60 секунд)
- в случае наличия соответствия между sell/buy, задача
- послать необходимое количество сообщений, sellerу/buyeру для того,
чтобы закрыть сделку.
если ответа
- в каких случаях дерево может работать лучше, чем хэш?
Поиск осуществляется только по ключу, т.е. поиска по диапазону нет.
- вам необходимо хранить 10 терабайт данных на винчестерах размером 1
терабайт.
система хранения должна переживать сбой 1 винчестера. Как организовать
хранение и сколько винчестеров вам понадобится?
- создайте ассоциативный массив с функцией "машины времени".
массив поддерживает следующие операции:
вставка(t, value), t - время
удаление(t, value), t - время, целое число растёт монотонно от 0 до беск.
поиск(value) - всегда осуществляется на текущий момент времени, т.е.
на величину заведомо > t для всех операций.
- вы - переписчик священных текстов. ваша работа - вручную создавать
священные книги, страница за страницей.
Придумайте способ простой проверки отсутствия опечаток и ошибок переписчика на
странице.
- вы - монах ипатьевского монастыря. Вы сидите в монастыре и пишете летопись
на основе рассказов паломников. паломники рассказывают о событиях стародавних,
и о новостях сЖч