КОРРЕКТНОСТЬ БЕЗ ЗАВИСИМОСТИ ОТ УПОРЯДОЧЕННОСТИ

1. Способ, реализованный, по меньшей мере, частично, компьютером, причем способ содержит:
получение одной или более индикаций объектов, которые вовлечены в транзакцию;
определение местоположения первого набора местоположений хранения хранилища для объектов, которые вовлечены в транзакцию;
создание логических копий объектов, которые модифицированы в контексте транзакции;
определение второго набора местоположений хранения хранилища для логических копий;
создание ассоциации, которая связывает логические копии объектов в элементарном блоке; и
посылку одного или более запросов записать ассоциацию и логические копии в хранилище, в то же время, поддерживая оригиналы этих объектов в хранилище.
2. Способ по п.1, в котором каждое местоположение хранения во втором наборе местоположений отличается от каждого местоположения хранения в первом наборе, и в котором создание логических копий объектов содержит создание копий частей объектов, которые модифицированы во время транзакции.
3. Способ по п.1, в котором создание ассоциации, которая связывает логические копии объектов в элементарном блоке, содержит создание ссылки между парами логических копий, причем каждая ссылка включает в себя хэш-значение, указывающее правильное содержимое, по меньшей мере, одной из логических копий этих пар.
4. Способ по п.1, в котором посылка одного или более запросов записать ассоциацию и логические копии содержит посылку одного или более запросов записать структуру данных, которая указывает каждое местоположение хранения для логических копий, одного или более запросов записать все кроме одной из логических копий в хранилище, и ожидание, чтобы послать запрос записать упомянутую одну из логических копий, пока заранее определенное событие не произойдет.
5. Способ по п.4, в котором ожидание, чтобы послать запрос записать одну из логических копий пока заранее определенное событие не произойдет, содержит ожидание одного или более из: пока другая транзакция не завершена, пока заранее определенный период времени не истек, и пока не достигнута контрольная точка.
6. Способ по п.1, дополнительно содержащий выполнение действий восстановления, содержащих:
получение первой структуры данных, которая указывает последние известные правильные местоположения хранения объектов в энергонезависимом хранилище;
получение другой структуры данных, которая указывает местоположения хранения энергонезависимого хранилища, где логические копии были запланированы для сохранения, причем другая структура данных также указывает первый набор хэш-значений, указывающих правильное содержимое логических копий;
считывание содержимого, расположенного в местоположениях хранения;
вычисление второго набора хэш-значений содержимого;
если соответствующие элементы первого и второго набора хэш-значений эквивалентны, обновление первой структуры данных, чтобы указывать, что логические копии сохранены в местоположениях хранения; и
если любой из соответствующих элементов первого и второго набора хэш-значений не эквивалентен, завершение действия восстановления.
7. Способ по п.1, дополнительно содержащий:
указание, что местоположения хранения, ассоциированные с оригиналами объектов, доступны для использования, и
указание, что местоположения хранения, ассоциированные с логическими копиями, являются действительными после успешной групповой записи всех логических копий в энергонезависимую память хранилища.
8. Компьютерный носитель данных, имеющий выполняемые компьютером инструкции, которые, когда выполняются, выполняют действия, содержащие:
получение индикации объекта, вовлеченного в обновление одной или более транзакций;
определение местоположения объекта в первом местоположении хранения хранилища;
создание логической копии объекта, которая включает в себя изменения, сделанные в объекте в контексте одной или более транзакций;
определение второго местоположения хранения хранилища для того, чтобы хранить логическую копию;
посылку запроса записать логическую копию как модифицированную во второе местоположение хранения;
в соединении с посылкой запроса, обеспечение данных, которые указывают следующее местоположение, в которое должна быть записана логическая копия, имеющая отношение к другой транзакции, если таковая вообще имеется; и
обновление изменяемой структуры данных, чтобы указывать, что логическая копия сохранена во втором местоположении хранения.
9. Компьютерный носитель данных по п.8, в котором определение местоположения объекта в первом местоположении хранения хранилища содержит прием идентификатора объекта и использование этого идентификатора, чтобы искать ассоциацию в структуре данных, которая ассоциирует идентификаторы с местоположениями хранения.
10. Компьютерный носитель данных по п.8, дополнительно содержащий посылку запроса записать изменения в изменяемой структуре данных в хранилище и в соединении с посылкой запроса записать изменения, посылку команды групповой записи в хранилище, причем команда групповой записи инструктирует контроллер хранилища записать кэш, ассоциированный с хранилищем в энергонезависимой памяти в хранилище.
11. Компьютерный носитель данных по п.8, дополнительно содержащий выполнение действий восстановления, содержащих:
определение местоположения головы связанного списка, причем каждый элемент связанного списка ассоциирован с логической копией, которая должна была быть записана в местоположение хранилища, заданное связанным списком;
выполнение итераций по связанному списку, пока элемент связанного списка не будет ассоциирован с логической копией, которая не была записана в местоположение, ассоциированное с этим элементом; и
в соединении с выполнением итераций по связанному списку для каждого элемента, для которого логическая копия была записана в местоположение, заданное упомянутым элементом, обновление структуры данных, чтобы указывать новое местоположение для объекта, ассоциированного с логической копией.
12. В вычислительной среде, система, содержащая:
интерфейс, выполненный с возможностью принимать запрос модифицировать объект, вовлеченный в транзакцию;
хранилище, имеющее энергонезависимую память и энергозависимую память в нем;
контроллер хранения, который потенциально разрешает записи в энергонезависимую память, чтобы они происходили в порядке, отличном от порядка, в котором были приняты запросы на записи; и
администратор ввода/вывода, выполненный с возможностью выполнять действия, содержащие:
определение местоположения объекта в первом местоположении хранения хранилища;
создание логической копии объекта, которая включает в себя изменения, сделанные в объекте в контексте транзакции;
определение второго местоположения хранения хранилища для хранения логической копии;
посылку запроса записать логическую копию как модифицированную во второе местоположение хранения; и
обновление изменяемой структуры данных, чтобы указывать, что логическая копия сохранена во втором местоположении хранения.
13. Система по п.12, в которой интерфейс также выполнен с возможностью принимать запрос модифицировать другой объект, вовлеченный в транзакцию, и в котором администратор ввода/вывода также выполнен с возможностью выполнить дополнительные действия, содержащие:
создание ассоциации, которая связывает вместе упомянутый другой объект и упомянутый объект; и
в соединении с посылкой запроса записать логическую копию как модифицированную во второе местоположение хранения, посылку запроса записать ассоциацию в контроллер запоминающего устройства.
14. Система по п.12, дополнительно содержащая администратор контрольных точек, выполненный с возможностью посылать запрос записать изменяемую структуру данных к контроллеру запоминающего устройства и посылать запрос групповой записи к контроллеру запоминающего устройства, причем запрос групповой записи инструктирует контроллер хранения выполнить групповую запись данных из энергозависимой памяти хранилища в энергонезависимую память хранилища.
15. Система по п.12, дополнительно содержащая администратор восстановления, выполненный с возможностью определять, была ли логическая копия как модифицированная записана во второе местоположению хранения, на основании сравнения сохраненного хэш-значения логической копии как модифицированной с хэш-значением, вычисленным из содержимого, считанного из второго местоположения хранения, причем администратор восстановления также выполнен с возможностью обновить другую структуру данных, чтобы указывать, что логическая копия сохранена во втором местоположении хранения, если хэш-значения эквивалентны.