LINUX.ORG.RU

История изменений

Исправление aist1, (текущая версия) :

Тут надо смотреть, что ты называешь in-place update. Если мы для обновления документа можем переиспользовать storage без его перевыделения, то это одно. А вот если мы можем, например, в 100МБ-ный документ вставить поддерево за пару микросекунд так, что в итоге в БД запишется десяток страниц, то это совсем другое.

Для последнего есть амортизированные схемы, когда дерево хранится в а-ля куче/арене, в которой есть свободное место для новых элементов. в момент исчерпания места в этой куче будет певыделение storage (размера x2) для документа со сборкой мусора. Цена вопроса — нужно выделять больше места под документы, чем это реально необходимо. Асимптотика примерно такая же, как и для вставки в конец вектора.

Не знаю, это ли собираются реализовать в PG, и могут ли вообще.

Исправление aist1, :

Тут надо смотреть, что ты называешь in-place update. Если мы для обновления документа можем переиспользовать storage без его перевыделения, то это одно. А вот если мы можем, например, в 100МБ-ный документ вставить поддерево за пару микросекунд так, что в итоге в БД запишется десяток страниц, то это совсем другое.

Для последнего есть амортизированные схемы, когда дерево хранится в а-ля куче/арене, в которой есть свободное место для новых элементов. в момент исчерпания места в этой куче будет певыделение storage для документа. Цена вопроса — нужно выделять больше места под документы, чем это реально необходимо. История примерно такая же, как и для вставки в конец вектора.

Исходная версия aist1, :

Тут надо смотреть, что ты называешь in-place update. Если мы для обновления документа можем переиспользовать storage без его перевыделения, то это одно. А вот если мы можем, например, в 100МБ-ный документ вставить поддерево за пару микросекунд так, что в итоге в БД запишется десяток страниц, то это совсем другое.

Для последнего есть амортизированные схемы, когда дерево хранится в а-ля куче/арене, в которой есть свободное место для новых элементов. в момент исчерпания места в этой куче будет певыделение storage для документа. Цена вопроса нужно выделять больше места под документы, чем это реально необходимо. История примерно такая же, как и для вставки в конец вектора.