powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Архитектура хранения данных на диске. Что лучше - изменяемый файл или снимки?
13 сообщений из 13, страница 1 из 1
Архитектура хранения данных на диске. Что лучше - изменяемый файл или снимки?
    #40059171
ferromagnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предположим, в памяти B+-Tree.
Есть файл index.0.full , в который записаны блоки этого B+-Tree. Откуда он взялся (курица/яйцо) пока опустим.
Он не изменяем.
Мы ходим в нашу СУБД, она подгружает какие-то блоки из index.data , большинство блоков только читаются, а какие-то блоки меняются. Если блок поменялся, он приобретает флаг "dirty" и из LRU уже выпасть не может.
Как только RAM забилась, (слишком много изменённых блоков), пишем все изменённые блоки в новый файл index.1.part и снимаем с них флаг "dirty", теперь они могут быть вытеснены на общих правах из LRU, в общем здесь можно освободить RAM как угодно.

Теперь наша СУБД смотрит на 2 "снимка":
index.0.full
index.1.part

Если какой-то блок N есть в обоих, то его валидная копия берётся из самого свежего файла, ясен пень.
СУБД живёт дальше, в какой-то момент появляется index.2.part и так далее.
Файлы .part , предположим, полностью заменяют друг друга, а не дополняют.
То есть система всегда смотрит на свежайший .full и на свежайщий .part .
При записи очередного .part, все блоки из предыдущего .part тупо копируются в новый .part.
Короче, дисковые данные этой СУБД всегда лежат в .full и .part, если блок есть в .part - читается оттуда, если его там нет, то из .full и так далее.

В какой-то момент, когда .part дорос до критического размера, мы пишем новый "полный" - index.123.full .

Короче, ни один файл на диске никогда не меняется. Ещё не дописавшийся файл имеет суффикс ".temp" и система не будет его читать, если упала в прошлый раз при попытке записать очередной файл, а догонится из бинлога.

С точки зрения админа, это суперпростая система - он может смело бекапить последние .full и .part плюс всегда растущий бинлог и не думать о том, что сейчас что-нибудь, что он копирует, изменяется. Ну и периодически дропает старые .full и .part файлы.

Чем в целом плоха такая система? Для чего, например, в InnoDB сделано НЕ ТАК, а мы хотим и изменяем .idb через double write buffer и вот это всё?
...
Рейтинг: 0 / 0
Архитектура хранения данных на диске. Что лучше - изменяемый файл или снимки?
    #40059183
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferromagnet,

потому что в момент формирования index.123.full придется останавливать мир, а что бы прочесть блок 100500, который не в кеше то нужно будет прочесть full и абсолютно все part. и так с каждым блоком не из кеша.
...
Рейтинг: 0 / 0
Архитектура хранения данных на диске. Что лучше - изменяемый файл или снимки?
    #40059212
ferromagnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
H5N1
ferromagnet,

потому что в момент формирования index.123.full придется останавливать мир


Не придётся.
Говорим хранилищу "войти в режим COW", в котором оно перед модификацией блока гарантирует, что немодифицированная копия этого блока лежит в "теневой таблице" (если его там ещё нет - делает копию и кладёт), откуда (из "теневой таблицы") наша записывалка .full и берёт блоки с бОльшим приоритетом. Таким образом, записывалка индекса всегда видит все блоки, какими они были на момент взведения атомарного флага "мы сейчас в режиме COW". После записи .full записывалка индекса снимает флаг и выкидывает теневую таблицу.

автор а что бы прочесть блок 100500, который не в кеше то нужно будет прочесть full и абсолютно все part. и так с каждым блоком не из кеша.

Таблицы блоков (индекс телефонной книги) .full и .part всегда в памяти. Мы можем глядя только на оперативу сказать, в каком из файлов .full или .part лежит самая актуальная версия блока (посмотреть в inmemory таблицу .part - если там такого блока нет, значит его надо читать из .full). Далее за одно обращение к диску читаем блок из того или иного файла.
...
Рейтинг: 0 / 0
Архитектура хранения данных на диске. Что лучше - изменяемый файл или снимки?
    #40059222
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferromagnet

Не придётся.
Говорим хранилищу "войти в режим COW", в котором оно перед модификацией блока гарантирует, что немодифицированная копия этого блока лежит в "теневой таблице" (если его там ещё нет - делает копию и кладёт), откуда (из "теневой таблицы") наша записывалка .full и берёт блоки с бОльшим приоритетом. Таким образом, записывалка индекса всегда видит все блоки, какими они были на момент взведения атомарного флага "мы сейчас в режиме COW". После записи .full записывалка индекса снимает флаг и выкидывает теневую таблицу.

повеяло трупом firebird.
такая "субд" загнется от ио. это же 3 копии всей базы. index.0.full -> shadow -> index.1.full

ferromagnet

Таблицы блоков (индекс телефонной книги) .full и .part всегда в памяти. Мы можем глядя только на оперативу сказать, в каком из файлов .full или .part лежит самая актуальная версия блока (посмотреть в inmemory таблицу .part - если там такого блока нет, значит его надо читать из .full). Далее за одно обращение к диску читаем блок из того или иного файла.

так это не работает. во первых нет гарантий, что влезет в память, во вторых разные транзакции разные версии блоков должны видеть. ели запрос стартанул 20 минут назад, то ему по барабану какая там последняя версия блока. его интересуют блоки, какие были 20 минут назад.
...
Рейтинг: 0 / 0
Архитектура хранения данных на диске. Что лучше - изменяемый файл или снимки?
    #40059335
ferromagnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
H5N1

такая "субд" загнется от ио. это же 3 копии всей базы. index.0.full -> shadow -> index.1.full


Можете написать конкретно какая операция конкретно загнётся от ИО в какой момент? Что вы там такого по ИО собрались дикого делать с тремя копиями и зачем?
...
Рейтинг: 0 / 0
Архитектура хранения данных на диске. Что лучше - изменяемый файл или снимки?
    #40059337
ferromagnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
H5N1

так это не работает. во первых нет гарантий, что влезет в память

"Это" - это что именно? Я ведь описал, что как только мы забили память, мы пошли скинули всё в .part, например.
Точно так же, когда у какого-нибудь InnoDB накапливается много изменённых страниц, он бежит их куда-то там скидывать, в свой файл таблиц или бинлог (checkpoint process в Postgres).
...
Рейтинг: 0 / 0
Архитектура хранения данных на диске. Что лучше - изменяемый файл или снимки?
    #40059541
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferromagnet
мы пошли скинули всё в .part, например.

И на это время тормознули все остальные операции. Не взлетит.
...
Рейтинг: 0 / 0
Архитектура хранения данных на диске. Что лучше - изменяемый файл или снимки?
    #40059584
ferromagnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
ferromagnet
мы пошли скинули всё в .part, например.

И на это время тормознули все остальные операции. Не взлетит.

Не тормознули. Описано ведь в стартовом посте это.
...
Рейтинг: 0 / 0
Архитектура хранения данных на диске. Что лучше - изменяемый файл или снимки?
    #40059786
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В стартовом посте описано недопонимание многопоточности и бутылочных горлышек. Сброс файла должен идти под локом и сожрёт все доступные иопсы. Не взлетит.
...
Рейтинг: 0 / 0
Архитектура хранения данных на диске. Что лучше - изменяемый файл или снимки?
    #40060001
ferromagnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
В стартовом посте описано недопонимание многопоточности и бутылочных горлышек. Сброс файла должен идти под локом и сожрёт все доступные иопсы. Не взлетит.

В данном посте наблюдается непонимание вообще всего.
Что за "сброс файла"? Какие конкретно "ресурсы"? Каким "локом" и что от чего изолирующим и зачем при наличии COW? Вы понимаете что такое copy-on-write в контексте первого поста и как оно в описании работает? Похоже нет.
...
Рейтинг: 0 / 0
Архитектура хранения данных на диске. Что лучше - изменяемый файл или снимки?
    #40060157
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferromagnet
Вы понимаете что такое copy-on-write в контексте первого поста и как оно в описании работает? Похоже нет.

Ну, может и нет. Удачи Вам в реализации. Об успехах не забудьте похвастаться.
...
Рейтинг: 0 / 0
Архитектура хранения данных на диске. Что лучше - изменяемый файл или снимки?
    #40081513
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferromagnet

С точки зрения админа, это суперпростая система - он может смело бекапить последние .full и .part плюс всегда растущий бинлог и не думать о том, что сейчас что-нибудь, что он копирует, изменяется. Ну и периодически дропает старые .full и .part файлы.

Чем в целом плоха такая система? Для чего, например, в InnoDB сделано НЕ ТАК, а мы хотим и изменяем .idb через double write buffer и вот это всё?

Идея интересная. Но были аналоги.

event-store . Системы которые не перезаписывают данные никогда. Просто пишут большой лог бизнес-фактов
а специальные триггеры строят по ним views. Режется ли лог на порции я не помню но это не суть важно.
Свойства бэкапа - теже самые. Даже лучше. Нет пульсаций. И размер архивных файлов можно настраивать под себя.

О недостатках.

авторкак только RAM забилась, (слишком много изменённых блоков), пишем все изменённые блоки в новый файл index.1.part

Как выше уже писал один господин, данная система будет периодически выходить из номинального режима нагрузки
в максимальный. Эти чекпоинты. Фазы уборки мусора. Или уплотнения как SSTable Cassandra, все это техники
которые нарушают обычный режим системы. И конечно с этой точки зрения лучше чтобы файлы переписывались
чем создавали свои собственные копии. Трудно себе также представить DBMS с терабайтным размером которая
периодически еще и требует свободного места с "запасом" для компактизации или уплотнения живых даннных.

Всегда-ли у нас есть эти свободные терабайты? Я не знаю. Скорее всего нет.
...
Рейтинг: 0 / 0
Архитектура хранения данных на диске. Что лучше - изменяемый файл или снимки?
    #40081551
а обычная БД (PG/My/O) не делает чтоли сброс данных на диск, причём постоянно?
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Архитектура хранения данных на диске. Что лучше - изменяемый файл или снимки?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]