metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2015-12-25 09:15 am

Файловые системы и базы данных

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

Это вообще как? Без write barrier вроде же такое никак не вылечить (ну, не считая вуду механизмов в стиле "считаем диск одной из нод распределенной системы, наворачиваем консенсусы и безнадежно воюем с CAP теоремой")

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

Снова про прогресс.

[identity profile] norguhtar.livejournal.com 2015-12-25 07:06 am (UTC)(link)

Это вообще как?

Легко. Зависит от какой журнал используем. Типичная файловая система с журналом ( к примеру XFS) гарантирует целостность метаданных. Насколько помню единственная FS которая еще журнализирует и сами данные это ext4.

[identity profile] kiryl.livejournal.com 2015-12-25 07:21 am (UTC)(link)
Страшный текст в тему: http://danluu.com/file-consistency/

[identity profile] thesz.livejournal.com 2015-12-25 11:13 am (UTC)(link)
Это оно, да.

Файловые системы это тихий ужас. Их все пишут, как могут, да чтобы получше на соревнованиях выглядели.

Что касается "как с этим бороться", я думаю использовать erasure codes с транспонированием данных. Какие именно коды, пока не решил.

[identity profile] tomarcafe.livejournal.com 2015-12-25 12:19 pm (UTC)(link)
> поэтому, возможна ситуация, когда информация о commit уже записана, а данные ещё нет.
что-то автор бредит тут, нет? как информация о коммите ушла на запись, пока не пришло подтверждение о записи данных?

[identity profile] shalcker.livejournal.com 2015-12-25 07:00 pm (UTC)(link)
Информация ушла в буфер системы например, а информация о коммите реально записалась.

И тут диск на котором данные отключается.

[identity profile] tomarcafe.livejournal.com 2015-12-25 09:55 pm (UTC)(link)
вот ага, тут-то и кроется вопрос - информация о коммите разве не должна записываться _после_ того, как пришло подтверждение о записи. ?
Edited 2015-12-25 21:55 (UTC)

[identity profile] shalcker.livejournal.com 2015-12-26 01:13 am (UTC)(link)
В идеале да. На практике не обязана если не прилагать усилий - скорость может быть важнее.

Обязательный порядок это и есть write barrier - блокировка записи и форсирование её порядка. Что означает никаких системных кэшей, никакой одновременной записи в разные места и т.д.