![]()
Главная Обратная связь Дисциплины:
Архитектура (936) ![]()
|
Инвертированный доступ к данным
Прямой доступ к данным. Основная особенность прямого метода доступа состоит во взаимно однозначном соответствии между ключом записи и ее физическим адресом. Физическое местоположение записи определяется непосредственно из значения ключа. · При прямом методе адреса памяти, используемые при хранении и поиске физических записей, могут быть уникальными. · Каждому ключу записи соответствует уникальный адрес ячейки памяти. · Не требуется упорядоченность значений ключей физических записей. · Между ключом записи и ее физическим адресом существует взаимно однозначное соответствие. · Может применяться как для хранения, так и для поиска. · Эффективность доступа всегда равна единице. · Эффективность хранения зависит от плотности ключей. · Наличие дубликатов ключей недопустимо. Хешированный доступ к данным. Хешированный доступ к данным основан на чередующихся списках. Метод доступа посредством хеширования основан на алгоритмическом определении адреса физической записи по значению ее ключа. Метод доступа посредством хеширования: · Не требуется логическая упорядоченность значений ключей физических записей. Значениям нескольких ключей может соответствовать один и тот же физический адрес (блок). · Может применяться как для хранения, так и для поиска. · Эффективность доступа зависит от распределения ключей, алгоритма их преобразования и распределения памяти. · Эффективность хранения зависит от распределения ключей и алгоритма их преобразования. · При методе доступа посредством хеширования адрес физической записи алгоритмически определяется из значения ключа записи. Доступ к распределенным данным. В 1989 году компания IBM о своем намерении создать РСУБД в 4 этапа (это и есть уровни доступа): 1) Удаленный запрос – отдельный SQL оператор обращается к одной удаленной базе данных, и каждый оператор – это отдельная транзакция. Таким образом, пользователь может выполнить несколько SQL операторов, обращающихся к разным базам данных, но каждый раз это будет отдельная транзакция; 2) Удаленная транзакция – транзакция уже из нескольких SQL операторов, обращающихся к одной удаленной базе данных. В наши дни этот уровень доступа также является реализованным, например в MS SQL Server; 3) Распределенные транзакции – каждый оператор транзакции обращается к одной удаленной базе данных, но одна транзакция может обращаться к нескольким. То есть пусть есть насколько узлов распределенной базы данных, по крайней мере, два, и транзакция, состоящая из нескольких операторов. Каждый оператор обращается только к одной базе данных, но нет пока оператора, который мог бы обратиться к двум узлам сразу. Этот этап реализуется с помощью протокола двухфазной фиксации; 4) Распределенные запросы – отдельный SQL оператор может обращаться к нескольким удаленным базам данных, причем транзакция из таких операторов может обращаться также к нескольким базам данных. Этот уровень пока остается нереализованным. Понятие раздела БД. Понятие многопользовательская среда БД. Многопользовательской называется такая среда, в которой к базе данных, с которой работает пользователь, могут подключаться и другие пользователи, которые, кроме того, могут вносить в нее изменения. В результате с некоторыми объектами базы данных могут работать одновременно несколько пользователей. Таким образом, в многопользовательской среде при внесении изменений в базу данных могут отражаться и изменения, сделанные другими пользователями. Понятие параллелизма в БД. Термин параллелизм означает возможность одновременной обработки в СУБД многих транзакций с доступом к одним и тем же данным, причем в одно и то же время. Как известно, в такой системе для корректной обработки параллельных транзакций без возникновения конфликтных ситуаций необходимо использовать некоторый метод управления параллелизмом. Понятие тупика в БД. Тупик (deadlock) — это достаточно интересная ситуация, когда две транзакции не могут продолжать свою работу из-за того, что каждая из них запрашивает конфликтный набор блокировок. Понятие блокировки в БД. Блокировка (англ. lock) в СУБД — это отметка о захвате объекта транзакцией в ограниченный или исключительный доступ с целью предотвращения коллизий и поддержания целостности данных. Типы блокировок в БД. По области действия блокировки классифицируются на: строчные, гранулярные и предикатные. По строгости блокировки разделяются на: совместные (англ. shared) и исключительные (эксклюзивные, англ. exclusive). По логике реализации блокировки делятся на: оптимистические и пессимистические.
Строчная блокировка — действуют только на одну строку таблицы базы данных, не ограничивая манипуляции над другими строками таблицы. Гранулярная блокировка — действует на всю таблицу или всю страницу и все строки. Блокировка, ограничивающая манипуляции со страницей данных в таблице (набор строк, объединённый признаком совместного хранения) иногда называется страничной (англ. page locking). Предикатные блокировки действуют на область, ограниченную предикатами.
Совместная блокировка накладывается транзакцией на объект в случае, если выполняемая ей операция безопасна, то есть не изменяет никаких данных и не имеет побочных эффектов. При этом, все транзакции могут выполнять операцию того же типа над объектом, если на него наложена совместная блокировка, обычно такая блокировка используется для операций чтения. Исключительная блокировка накладывается транзакцией на объект в случае, если выполняемая ей операция изменяет данные. Только одна транзакция может выполнять подобную операцию над объектом, если на него наложена эксклюзивная блокировка. Блокировка не может быть наложена на объект, если на него уже наложена совместная блокировка.
Пессимистическая блокировка накладывается перед предполагаемой модификацией данных на все строки, которые такая модификация предположительно затрагивает. Всё время действия такой блокировки исключена модификация данных из сторонних сессий, данные из блокированных строк доступны согласно уровню изолированности транзакции. По завершению предполагаемой модификации гарантируется непротиворечивая запись результатов. Оптимистическая блокировка не ограничивает модификацию обрабатываемых данных сторонними сессиями, однако перед началом предполагаемой модификации запрашивает значение некоторого выделенного атрибута каждой из строк данных (обычно используется наименование VERSION и целочисленный тип с инициальным значением 0). Перед записью модификаций в базу данных перепроверяется значение выделенного атрибута, и если оно изменилось, то транзакция откатывается или применяются различные схемы разрешения коллизий. Если значение выделенного атрибута не изменилось — производится фиксация модификаций с одновременным изменением значения выделенного атрибута (например, инкрементом) для сигнализации другим сессиям о том, что данные изменились.
![]() |