Способ и система для обработки запросов в распределенной базе данных
METHOD AND SYSTEM FOR PROCESSING REQUESTS IN A DISTRIBUTED DATABASE

Область техники
Данная технология в целом относится к обработке запросов в базе данных и, в частности, к способу и системе для обработки запросов декларативного вида, предназначенных для распределенной базы данных в распределенной компьютерной системе.
Уровень техники
Требования к запоминающим устройствам для хранения цифровых данных постоянно растут, поскольку большие объемы цифровых данных создаются ежедневно. Например, хранения могут требовать различные виды пользовательских данных, данных организаций и/или данных приложений. Это повышает требования к емкости хранилищ данных. Растущие потребности пользователей и/или организаций способны удовлетворить «облачные» системы удаленного хранения данных.
В общем случае «облачное» хранилище данных представляет собой вид компьютерного запоминающего устройства, в котором цифровые данные хранятся в логических пулах. Физическая память, в которой фактически хранятся цифровые данные, распределена между несколькими серверами, возможно, расположенными в различных местах (т.е. в различных центрах обработки данных), и обычно управляется компанией, предоставляющей услуги «облачного» хранения данных. Пользователи и/или организации обычно покупают или арендуют некоторый объем памяти у поставщиков услуг «облачного» хранения данных, чтобы хранить свои цифровые данные. Со своей стороны, поставщики услуг «облачного» хранения данных отвечают за доступность цифровых данных и защиту физической памяти с целью предотвращения утраты данных.
В некоторых случаях физическая память поставщиков услуг «облачного» хранения данных содержит распределенную базу данных, способную получать транзакции ввода/вывода цифровых данных. Транзакция может представлять собой единицу работы (т.е. задачу), которая должна выполняться распределенной базой данных и потенциально является изменением состояния распределенной базы данных. Например, транзакция может представлять собой преднамеренный запуск компьютерной программы, осуществляющей доступ к базе данных и обеспечивающей операторам распределенной базы данных возможности извлечения и/или обновления данных.
Одно из важных свойств, требуемых для систем «облачного» хранения данных - это синхронность и предотвращение утраты данных и конфликта данных, в частности, при обработке множества запросов от источников запросов, таких как клиентские устройства.
В патентной заявке US 2010185847 A1, опубликованной 21.07.2010, (New York University, Database outsourcing with access privacy) описана новая парадигма для передачи серверной обработки транзакций многоклиентного приложения базы данных недоверенному поставщику услуг. В частности, изобретение обеспечивает возможность для недоверенных поставщиков услуг поддерживать последовательное упорядочивание, резервное копирование и восстановление транзакций для клиентов с обеспечением полной конфиденциальности и корректности данных. Кроме того, у поставщиков услуг отсутствует информация о транзакциях (за исключением их размера и временных параметров), что обеспечивает конфиденциальность схемы доступа при считывании и записи.
В патентной заявке US 20110153566 А1, опубликованной 23.06.2011, (Microsoft, Optimistic serializable snapshot isolation) описан способ управления параллельными действиями, обеспечивающий оптимистическую изоляцию одновременно выполняемых транзакций в имеющей несколько версий базе данных путем применения двух дополнительных тестов в конце транзакции считывания-записи: проверка видимости набора считывания транзакции (или нескольких транзакций) считывания-записи и обнаружение фантома путем повторного сканирования и подтверждения того, что новая версия не появилась в области видимости. В зависимости от требуемого уровня изоляции, применяются оба, один или ни одного теста. Для каждой версии записи данных в применимой базе данных могут быть установлены две отметки времени, указывающие время жизни версии. Установленное значение отметки времени версии может зависеть от осуществления транзакции.
Раскрытие изобретения
Целью настоящего изобретения является устранение по меньше мере некоторых недостатков известных решений. Варианты осуществления данной технологии способны обеспечить и/или расширить арсенал подходов и/или способов достижения целей данной технологии.
Данная технология относится к преобразованию запроса декларативного вида в распределенной системе, содержащей конечные автоматы и распределенную базу данных, во множество детерминированных транзакций считывания и модификации. В частности, не имеющие ограничительного характера варианты осуществления данной технологии относятся к способам и системам, обеспечивающим синхронность транзакций в распределенной системе путем предотвращения одновременного доступа к информации и/или модификации информации в распределенной базе данных. Более конкретно, некоторые не имеющие ограничительного характера варианты осуществления данной технологии относятся к способам и системам, обеспечивающим синхронность транзакций путем использования блокировки частей распределенной базы данных, например, путем использования блокировки оптимистического типа или блокировки пессимистического типа.
Обеспечение синхронности транзакций в распределенной системе путем предотвращения одновременного доступа к информации и/или модификации информации в распределенной базе данных в некоторых случаях позволяет сэкономить вычислительные ресурсы, повысить безопасность, избежать утраты данных и конфликта данных, а также обеспечить оптимальное функционирование распределенной системы.
В соответствии с первым аспектом данной технологии реализован способ обработки запроса декларативного вида. Запрос направляется из связанного с распределенной компьютерной системой источника запросов в распределенную базу данных. Распределенная база данных представляет собой часть распределенной компьютерной системы, содержащей систему обработки запросов, при этом распределенная база данных содержит множество мест назначения транзакции (TDL, Transaction Destination Location). Способ выполняется системой обработки запросов. Способ включает в себя: прием запроса системой обработки запросов от источника запросов, при этом запрос содержит (а) условие для определения по меньшей мере одного места TDL и (б) действие, которое должно выполняться в этом по меньшей мере одном месте TDL. Система обработки запросов обрабатывает запрос для формирования первой транзакции считывания детерминированного вида, способной определять по меньшей мере одно удовлетворяющее условию место TDL, которое содержит информацию, определяющую это по меньшей мере одно место TDL и удовлетворяющую упомянутому условию. Первая транзакция также способна получать для по меньшей мере одного удовлетворяющего условию места TDL значение блокировки, указывающее на текущее состояние этого по меньшей мере одного удовлетворяющего условию места TDL. Способ выполняет первую транзакцию. Система обработки запросов обрабатывает запрос и по меньшей мере одно место TDL для формирования последней транзакции модификации детерминированного вида, способной на основе запроса осуществлять доступ к информации, связанной с этим по меньшей мере одним местом TDL. Способ включает в себя проверку перед выполнением последней транзакции равенства текущего значения блокировки, связанного с удовлетворяющим условию местом TDL, полученному значению блокировки для этого удовлетворяющего условию места TDL, при этом текущее значение блокировки соответствует прежнему состоянию этого удовлетворяющего условию места TDL. Способ включает в себя выполнение последней транзакции в том случае, если текущее значение блокировки равно полученному значению блокировки, при этом выполнение последней транзакции включает в себя модификацию информации, связанной с таким по меньшей мере одним местом TDL.
В некоторых вариантах осуществления способа удовлетворяющее условию место TDL представляет собой одно место из по меньшей мере одного места TDL.
В некоторых вариантах осуществления для определения по меньшей мере одного удовлетворяющего условию места TDL способ дополнительно включает в себя доступ к инвертированному индексу, указывающему (а) на информацию, связанную со множеством мест TDL, и (б) на соответствующие места из множества мест TDL.
В некоторых вариантах осуществления способа удовлетворяющее условию место TDL представляет собой набор удовлетворяющих условию мест TDL.
В некоторых вариантах осуществления способа набор удовлетворяющих условию мест TDL представляет собой набор следующих непосредственно друг за другом удовлетворяющих условию мест TDL.
В некоторых вариантах осуществления способа он для получения значения блокировки дополнительно включает в себя получение для набора следующих непосредственно друг за другом удовлетворяющих условию мест TDL диапазонного значения блокировки, указывающего на места TDL из набора следующих непосредственно друг за другом удовлетворяющих условию мест TDL, и на текущее состояние каждого места из набора следующих непосредственно друг за другом удовлетворяющих условию мест TDL.
В некоторых вариантах осуществления способа, если текущее значение блокировки не равно полученному значению блокировки, последняя транзакция не выполняется.
В некоторых вариантах осуществления способ дополнительно включает в себя передачу источнику запросов сообщения, оповещающего о том, что запрос не обработан базой данных.
В некоторых вариантах осуществления способа это сообщение дополнительно позволяет источнику запросов выдать запрос повторно.
В некоторых вариантах осуществления способа после проверки равенства текущего значения блокировки, связанного с удовлетворяющим условию местом TDL, полученному значению блокировки для этого удовлетворяющего условию места TDL, формируется результат сравнения: «прежнее состояние удовлетворяющего условию места TDL не изменено» или «удовлетворяющее условию место TDL удалено».
В некоторых вариантах осуществления способа прежнее состояние удовлетворяющего условию места TDL изменяется на основе другой транзакции модификации, выполненной в удовлетворяющем условию месте TDL после выполнения первой транзакции.
В некоторых вариантах осуществления способа прежнее состояние удовлетворяющего условию места TDL не изменяется на основе другой транзакции считывания, выполненной в удовлетворяющем условию месте TDL после выполнения первой транзакции.
В некоторых вариантах осуществления способа запрос представляет собой запрос SQL-типа, направленный от источника запросов в распределенную базу данных.
В некоторых вариантах осуществления способа выполнение последней транзакции дополнительно включает в себя формирование сообщения для источника запросов, оповещающего об успешной обработке запроса распределенной базой данных.
В некоторых вариантах осуществления способа модификация представляет собой одно из следующего: (а) запись с целью модификации информации, связанной с по меньшей мере одним местом TDL, на основе запроса и (б) верификация.
В некоторых вариантах осуществления способа по меньшей мере одно удовлетворяющее условию место TDL включает в себя по меньшей мере одно из следующего: целевое удовлетворяющее условию место TDL для модификации информации и целевое удовлетворяющее условию место TDL для модификации информации с целью получения дополнительных данных для последней транзакции.
В некоторых вариантах осуществления способа он после выполнения первой транзакции дополнительно включает в себя прием на основе выполнения первой транзакции информации, указывающей на по меньшей мере одно место TDL и удовлетворяющей упомянутому условию.
В соответствии с другим аспектом данной технологии реализован способ обработки запроса декларативного вида, направленного от источника запросов в распределенную базу данных. Источник запросов соединен с распределенной компьютерной системой, содержащей распределенную базу данных. Распределенная компьютерная система содержит систему обработки запросов, а распределенная база данных содержит множество мест TDL. Способ выполняется системой обработки запросов. Способ включает в себя прием запроса от источника запросов, при этом запрос указывает (а) на условие для определения по меньшей мере одного места TDL и (б) на действие, которое должно выполняться в этом по меньшей мере одном месте TDL. Способ включает в себя обработку запроса системой обработки запросов для формирования первой транзакции считывания детерминированного вида, способной определять по меньшей мере одно удовлетворяющее условию место TDL, которое содержит информацию, определяющую это по меньшей мере одно место TDL и удовлетворяющую упомянутому условию. Способ включает в себя получение блокировки для этого удовлетворяющего условию места TDL и выполнение первой транзакции. Способ включает в себя обработку запроса и по меньшей мере одного места TDL для формирования последней транзакции модификации детерминированного вида, способной на основе запроса осуществлять доступ к информации, связанной с этим по меньшей мере одним местом TDL. Способ включает в себя осуществляемую перед выполнением последней транзакции проверку состояния блокировки этого по меньшей мере одного места TDL, и выполнение последней транзакции только в случае положительного результата этой проверки состояния.
В некоторых вариантах осуществления способа применяется блокировка оптимистического типа, а получение блокировки включает в себя получение для по меньшей мере одного удовлетворяющего условию места TDL значения блокировки, указывающего на текущее состояние этого по меньшей мере одного удовлетворяющего условию места TDL, при этом проверка состояния блокировки включает в себя проверку равенства текущего значения блокировки, связанного с удовлетворяющим условию местом TDL, полученному значению блокировки для этого удовлетворяющего условию места TDL, при этом текущее значение блокировки соответствует прежнему состоянию этого удовлетворяющего условию места TDL.
В некоторых вариантах осуществления способа применяется блокировка пессимистического типа, а получение блокировки включает в себя применение блокировки для удовлетворяющего условию места TDL так, чтобы это удовлетворяющее условию место TDL было недоступно другим транзакциям в распределенной базе данных, при этом проверка состояния блокировки включает в себя снятие блокировки этого удовлетворяющего условию места TDL, а снятие блокировки представляет собой упомянутый положительный результат.
В соответствии с другим аспектом данной технологии реализована распределенная программная система для обработки запроса от источника запросов, связанного с распределенной программной системой. Распределенная программная система содержит распределенную базу данных, включающую в себя множество мест TDL, и систему обработки запросов. Система обработки запросов способна принимать от источника запросов запрос, содержащий (а) условие для определения по меньшей мере одного места TDL и (б) действие, которое должно выполняться в этом по меньшей мере одном месте TDL. Система обработки запросов способна обрабатывать запрос для формирования первой транзакции считывания, способной определять по меньшей мере одно удовлетворяющее условию место TDL, которое содержит информацию, определяющую это по меньшей мере одно место TDL и удовлетворяющую упомянутому условию. Первая транзакция также способна получать для по меньшей мере одного удовлетворяющего условию места TDL значение блокировки, указывающее на текущее состояние этого по меньшей мере одного удовлетворяющего условию места TDL. Распределенная программная система способна выполнять первую транзакцию. Система обработки запросов способна обрабатывать запрос и по меньшей мере одно место TDL для формирования последней транзакции модификации детерминированного вида, способной на основе запроса осуществлять доступ к информации, связанной с этим по меньшей мере одним местом TDL. Распределенная программная система способна проверять перед выполнением последней транзакции равенство текущего значения блокировки, связанного с удовлетворяющим условию местом TDL, полученному значению блокировки для этого удовлетворяющего условию места TDL, при этом текущее значение блокировки соответствует прежнему состоянию этого удовлетворяющего условию места TDL. Распределенная программная система способна выполнять последнюю транзакцию, только если текущее значение блокировки равно полученному значению блокировки, при этом выполнение последней транзакции включает в себя модификацию информации, связанной с таким по меньшей мере одним местом TDL.
В некоторых вариантах осуществления системы удовлетворяющее условию место TDL представляет собой одно место из по меньшей мере одного места TDL.
В некоторых вариантах осуществления системы для определения по меньшей мере одного удовлетворяющего условию места TDL система обработки запросов дополнительно способна осуществлять доступ к инвертированному индексу, указывающему (а) на информацию, связанную со множеством мест TDL, и (б) на соответствующие места из множества мест TDL.
В некоторых вариантах осуществления системы удовлетворяющее условию место TDL представляет собой набор удовлетворяющих условию мест TDL.
В некоторых вариантах осуществления системы набор удовлетворяющих условию мест TDL представляет собой набор следующих непосредственно друг за другом удовлетворяющих условию мест TDL.
В некоторых вариантах осуществления системы для получения значения блокировки система обработки запросов дополнительно способна получать для набора следующих непосредственно друг за другом удовлетворяющих условию мест TDL диапазонное значение блокировки, указывающее на места TDL из набора следующих непосредственно друг за другом удовлетворяющих условию мест TDL и на текущее состояние каждого места из набора следующих непосредственно друг за другом удовлетворяющих условию мест TDL.
В некоторых вариантах осуществления системы, если текущее значение блокировки не равно полученному значению блокировки, система обработки запросов дополнительно способна не выполнять последнюю транзакцию.
В некоторых вариантах осуществления системы система обработки запросов дополнительно способна передавать источнику запросов сообщение, оповещающее о том, что запрос не обработан базой данных.
В некоторых вариантах осуществления системы это сообщение дополнительно позволяет источнику запросов выдать запрос повторно.
В некоторых вариантах осуществления системы после проверки равенства текущего значения блокировки, связанного с удовлетворяющим условию местом TDL, полученному значению блокировки для этого удовлетворяющего условию места TDL, формируется результат сравнения «прежнее состояние удовлетворяющего условию места TDL не изменено» или «удовлетворяющее условию место TDL удалено».
В некоторых вариантах осуществления системы прежнее состояние удовлетворяющего условию места TDL изменяется на основе другой транзакции модификации, выполненной в удовлетворяющем условию месте TDL после выполнения первой транзакции.
В некоторых вариантах осуществления системы прежнее состояние удовлетворяющего условию места TDL не изменяется на основе другой транзакции считывания, выполненной в удовлетворяющем условию месте TDL после выполнения первой транзакции.
В некоторых вариантах осуществления системы запрос представляет собой запрос SQL-типа, направленный от источника запросов в распределенную базу данных.
В некоторых вариантах осуществления системы система обработки запросов после выполнения последней транзакции дополнительно способна сформировать сообщение для источника запросов, оповещающее об успешной обработке запроса распределенной базой данных.
В некоторых вариантах осуществления системы модификация представляет собой одно из следующего: (а) запись с целью модификации информации, связанной с по меньшей мере одним местом TDL, на основе запроса и (б) верификация.
В некоторых вариантах осуществления системы по меньшей мере одно удовлетворяющее условию место TDL включает в себя по меньшей мере одно из следующего: целевое удовлетворяющее условию место TDL для модификации информации и целевое удовлетворяющее условию место TDL для модификации информации с целью получения дополнительных данных для последней транзакции.
В некоторых вариантах осуществления системы после выполнения первой транзакции система обработки запросов дополнительно способна принять на основе выполнения первой транзакции информацию, указывающую на по меньшей мере одно место TDL и удовлетворяющую упомянутому условию.
В соответствии с другим аспектом данной технологии реализована распределенная программная система для обработки запроса от источника запросов, связанного с распределенной программной системой. Распределенная программная система содержит распределенную базу данных, включающую в себя множество мест TDL, и систему обработки запросов. Система обработки запросов способна принимать от источника запросов запрос, указывающий (а) на условие для определения по меньшей мере одного места TDL и (б) на действие, которое должно выполняться в этом по меньшей мере одном месте TDL. Система обработки запросов способна обрабатывать запрос для формирования первой транзакции считывания детерминированного вида, способной определять по меньшей мере одно удовлетворяющее условию место TDL, которое содержит информацию, определяющую это по меньшей мере одно место TDL и удовлетворяющую упомянутому условию. Первая транзакция способна получать блокировку для удовлетворяющего условию места TDL. Распределенная программная система способна выполнять первую транзакцию. Система обработки запросов способна обрабатывать запрос и по меньшей мере одно место TDL для формирования последней транзакции модификации детерминированного вида, способной на основе запроса осуществлять доступ к информации, связанной с этим по меньшей мере одним местом TDL. Распределенная программная система способна перед выполнением последней транзакции проверять состояние блокировки этого по меньшей мере одного места TDL, и выполнять последнюю транзакцию только в случае положительного результата этой проверки состояния.
В некоторых вариантах осуществления системы применяется блокировка оптимистического типа, а получение блокировки включает в себя получение для по меньшей мере одного удовлетворяющего условию места TDL значения блокировки, указывающего на текущее состояние этого по меньшей мере одного удовлетворяющего условию места TDL, при этом проверка состояния блокировки включает в себя проверку равенства текущего значения блокировки, связанного с удовлетворяющим условию местом TDL, полученному значению блокировки для этого удовлетворяющего условию места TDL, а значение блокировки соответствует прежнему состоянию этого удовлетворяющего условию места TDL.
В некоторых вариантах осуществления системы применяется блокировка пессимистического типа, а получение блокировки включает в себя применение блокировки для удовлетворяющего условию места TDL так, чтобы это удовлетворяющее условию место TDL было недоступно другим транзакциям в распределенной базе данных, при этом проверка состояния блокировки включает в себя снятие блокировки этого удовлетворяющего условию места TDL, а снятие блокировки представляет собой упомянутый положительный результат.
В контексте настоящего описания термин «сервер» означает компьютерную программу, выполняемую соответствующими аппаратными средствами и способную принимать запросы (например, от клиентских устройств) через сеть и выполнять эти запросы или инициировать их выполнение. Аппаратные средства могут представлять собой один физический компьютер или одну компьютерную систему и это не существенно для данной технологии. В настоящем контексте выражение «сервер» не означает, что каждая задача (например, принятая команда или запрос) или некоторая задача принимается, выполняется или запускается одним и тем же сервером (т.е. одними и теми же программными и/или аппаратными средствами). Это выражение означает, что любое количество программных средств или аппаратных средств может принимать, отправлять, выполнять или запускать выполнение любой задачи или запроса либо результатов любых задач или запросов; все эти программные и аппаратные средства могут представлять собой один сервер или несколько серверов, при этом оба эти случая подразумеваются в выражении «по меньшей мере один сервер».
В контексте настоящего описания термин «клиентское устройство» означает любое компьютерное аппаратное средство, способное выполнять программы, подходящие для решения данной задачи. Таким образом, некоторые (не имеющие ограничительного характера) примеры клиентских устройств включают в себя персональные компьютеры (настольные, ноутбуки, нетбуки и т.п.), смартфоны и планшеты, а также сетевое оборудование, такое как маршрутизаторы, коммутаторы и шлюзы. Следует отметить, что в данном контексте устройство, функционирующее как клиентское устройство, также может функционировать как сервер для других клиентских устройств. Использование выражения «клиентское устройство» не исключает использования нескольких клиентских устройств для приема, отправки, выполнения или инициирования выполнения любой задачи или запроса, либо результатов любых задач или запросов, либо шагов любого описанного здесь способа.
В контексте настоящего описания термин «информация» включает в себя информацию любого рода или вида, допускающую хранение в базе данных. Таким образом, информация включает в себя аудиовизуальные произведения (изображения, фильмы, звукозаписи, презентации и т.д.), данные (данные о местоположении, числовые данные и т.д.), текст (мнения, комментарии, вопросы, сообщения и т.д.), документы, электронные таблицы, списки слов и т.д., но не ограничивается ими.
В контексте настоящего описания выражение «компонент» включает в себя программное обеспечение (подходящее для определенных аппаратных средств), необходимое и достаточное для выполнения соответствующей определенной функции (или функций).
В контексте настоящего описания выражение «пригодный для использования в компьютере носитель информации» означает носители любого типа и вида, включая ОЗУ, ПЗУ, диски (CD-ROM, DVD, гибкие диски, жесткие диски и т.д.), USB-накопители, твердотельные накопители, накопители на магнитных лентах и т.д.
В контексте настоящего описания, если специально не указано другое, в качестве указания на информационный элемент может выступать сам информационный элемент, а также указатель, ссылка, гиперссылка или другое косвенное средство, с помощью которого получатель данных может найти место в сети, памяти, базе данных или другой пригодной для чтения компьютером среде, откуда можно извлечь этот информационный элемент. Например, указание на документ может содержать сам документ (т.е. его содержимое) или может представлять собой уникальный дескриптор документа, указывающий на файл в определенной файловой системе, или какие-либо другие средства для указания получателю данных места в сети, адреса памяти, таблицы в базе данных или другого места, где можно получить доступ к файлу. Специалисту в данной области очевидно, что степень точности, требуемая для такого указания, зависит от объема предварительного понимания относительно интерпретации информации, которой обмениваются отправитель и получатель данных. Например, если перед началом обмена данными между отправителем и получателем известно, что указатель информационного элемент будет представлять собой ключ базы данных для поля в определенной таблице заранее заданной базы данных, содержащей этот информационный элемент, то для эффективной передачи информационного элемента получателю достаточно оправить ключ базы данных, даже если сам информационный элемент не передается между отправителем и получателем такого указания.
В контексте настоящего описания числительные «первый» «второй», «третий» и т.д. используются лишь для указания различия между существительными, к которым они относятся, но не для описания каких-либо определенных взаимосвязей между этими существительными. Например, должно быть понятно, что использование терминов «первый сервер» и «третий сервер» не подразумевает какого-либо определенного порядка, вида, хронологии, иерархии или классификации, в данном случае, серверов, и что их использование (само по себе) не подразумевает обязательного наличия «второго сервера» в любой ситуации. Кроме того, как встречается в настоящем описании в другом контексте, ссылка на «первый» элемент и «второй» элемент не исключает того, что эти два элемента могут быть одним и тем же реальным элементом. Таким образом, например, в некоторых случаях «первый» сервер и «второй» сервер могут представлять собой одно и то же программное и/или аппаратное средство, а в других случаях - различные программные и/или аппаратные средства.
Каждый вариант осуществления данной технологии имеет отношение к по меньшей мере одной из вышеупомянутых целей и/или к одному из вышеупомянутых аспектов, но не обязательно ко всем ним. Должно быть понятно, что некоторые аспекты данной технологии, связанные с попыткой достижения вышеупомянутой цели, могут не соответствовать этой цели и/или могут соответствовать другим целям, явным образом здесь не упомянутым.
Дополнительные и/или альтернативные признаки, аспекты и преимущества вариантов осуществления данной технологии поясняются в дальнейшем описании, в приложенных чертежах и в формуле изобретения.
Краткое описание чертежей
Дальнейшее описание приведено для лучшего понимания данной технологии, а также других аспектов и их признаков, и должно использоваться совместно с приложенными чертежами.
На фиг. 1 представлена схема распределенной системы компьютерной обработки информации, реализованной согласно вариантам осуществления данной технологии, не имеющим ограничительного характера.
На фиг. 2 представлено реализованное согласно не имеющим ограничительного характера вариантам осуществления данной технологии устройство хранения данных, входящее в состав системы компьютерной обработки информации, представленной на фиг. 1.
На фиг. 3 представлена схема реализованной согласно не имеющим ограничительного характера вариантам осуществления данной технологии распределенной программной системы в составе системы компьютерной обработки информации, представленной на фиг. 1.
На фиг. 4 представлена блок-схема способа обработки запросов в распределенной базе данных с использованием блокировки оптимистического типа, выполняемого в системе компьютерной обработки информации, представленной на фиг. 1, в соответствии с не имеющим ограничительного характера вариантом осуществления данной технологии.
На фиг. 5 представлена блок-схема способа обработки запросов в распределенной базе данных с использованием блокировки пессимистического типа, выполняемого в системе компьютерной обработки информации, представленной на фиг. 1, в соответствии с не имеющим ограничительного характера вариантом осуществления данной технологии.
Осуществление изобретения
Дальнейшее подробное описание представляет собой лишь описание примеров, иллюстрирующих данную технологию. Это описание не предназначено для определения объема или границ данной технологии. В некоторых случаях приводятся полезные примеры модификаций, способствующие пониманию, но не определяющие объем или границы данной технологии. Эти модификации не составляют исчерпывающего списка, возможны и другие модификации.
Кроме того, если в некоторых случаях примеры модификаций не описаны, это не означает, что модификации невозможны и/или что описание содержит единственный вариант осуществления определенного аспекта данной технологии. Кроме того, следует понимать, что настоящее подробное описание в некоторых случаях касается упрощенных вариантов осуществления данной технологии, и что такие варианты представлены для того, чтобы способствовать лучшему ее пониманию. Различные варианты осуществления данной технологии могут быть значительно сложнее.
На фиг. 1 представлена распределенная система 100 компьютерной обработки информации или сокращенно распределенная система 100 обработки информации. Распределенная система 100 обработки информации позволяет реализовать не имеющие ограничительного характера варианты осуществления данной технологии. Очевидно, что распределенная система 100 обработки информации приведена лишь в качестве иллюстративного варианта осуществления данной технологии. Таким образом, дальнейшее описание системы представляет собой описание примеров, иллюстрирующих данную технологию. Это описание не предназначено для определения объема или границ данной технологии.
В некоторых случаях также приводятся полезные примеры модификаций распределенной системы 100 обработки информации. Они способствуют пониманию, но также не определяют объема или границ данной технологии. Эти модификации не составляют исчерпывающего списка. Специалисту в данной области должно быть понятно, что возможны и другие модификации. Кроме того, если в некоторых случаях примеры модификаций не описаны, это не означает, что модификации невозможны и/или что описание содержит единственный вариант осуществления определенного элемента данной технологии. Специалисту в данной области должно быть понятно, что это не так. Кроме того, следует понимать, что распределенная система 100 обработки информации в некоторых случаях может представлять собой упрощенную реализацию данной технологии, и что такие варианты представлены, чтобы способствовать лучшему ее пониманию. Специалисту в данной области должно быть понятно, что различные варианты осуществления данной технологии могут быть значительно сложнее.
Распределенная система 100 обработки информации содержит источник 102 запросов, сеть 103 связи, подсистему 104 предварительной обработки запросов, подсистему 105 обработки транзакций, подсистему 106 маршрутизации транзакций, подсистему 108 распределенного хранения данных, подсистему 110 базы данных и операционную подсистему 111.
Далее описана реализация указанных выше компонентов распределенной системы 100 обработки информации в соответствии с различными не имеющими ограничительного характера вариантами осуществления данной технологии.
Источник запросов
Источник 102 запросов может представлять собой электронное устройство, связанное с конечным пользователем (например, клиентское устройство), или любую другую подсистему распределенной системы 100 обработки информации, способную обеспечивать пользовательские запросы к распределенной системе 100 обработки информации. Несмотря на то, что на фиг. 1 показан лишь один источник 102 запросов, распределенная система 100 обработки информации может содержать несколько источников 102 запросов. Как показано в данном документе, источник 102 запросов входит в состав распределенной системы 100 обработки информации. Тем не менее, в некоторых вариантах осуществления данной технологии источник 102 запросов может быть внешним по отношению к распределенной системе 100 обработки информации и может подключаться с использованием линии связи (не обозначена).
Фактически, типовой вариант осуществления распределенной системы 100 обработки информации может включать в себя большое количество источников 102 запросов (сотни, тысячи, миллионы и т.д.).
В некоторых вариантах осуществления данной технологии, когда распределенная система 100 обработки информации используется в среде бизнес-потребитель (В2С, Business-to-Customer), источник 102 запросов может представлять собой клиентское устройство, такое как смартфон, связанное с пользователем распределенной системы 100 обработки информации. Например, распределенная система 100 обработки информации может обеспечивать услуги «облачного» хранения данных для клиентского устройства определенного пользователя.
В некоторых вариантах осуществления данной технологии, когда распределенная система 100 обработки информации используется в среде бизнес-бизнес (В2В, Business-to-Business), источник 102 запросов может представлять собой подсистему, такую как удаленный сервер, обеспечивающую пользовательские запросы к распределенной системе 100 обработки информации. Например, в некоторых вариантах осуществления данной технологии распределенная система 100 обработки информации может обеспечивать услуги отказоустойчивой обработки и/или хранения данных для оператора такой подсистемы.
В целом, независимо от реализации распределенной системы 100 обработки информации в виде системы В2С или В2В (или любого другого варианта системы), источник 102 запросов может представлять собой клиентское устройство или другую подсистему, которые могут быть внутренними или внешними по отношению к распределенной системе 100 обработки информации.
Как указано выше, источник 102 запросов способен выдавать множество запросов 180, каждый из которых далее называется запросом 180. Характер запроса 180 зависит от вида источника 102 запросов. В частности, один из примеров запроса 180 представляет собой запрос, сформированный на языке структурированных запросов (SQL, Structured Query Language). Поэтому предполагается, что в некоторых вариантах осуществления данной технологии запрос 180 может быть сформирован на языке декларативного программирования, т.е. запрос 180 может представлять собой запрос декларативного вида.
В общем случае декларативное программирование относится к построению структуры и элементов компьютерных программ, отражая логику вычислений без описания потока управления. Распространенные языки декларативного программирования включают в себя SQL, XQuery и другие языки запросов к базам данных. В целом, запрос декларативного вида определяет действие в выражениях «что требуется выполнить», а не «как это требуется выполнить».
Это означает, что запрос декларативного вида может быть связан с условием выполнения определенного действия. В качестве условия, например, может быть указано, в каком элементе должно выполняться это действие или где следует получать значения для выполнения этого действия.
В качестве не имеющих ограничительного характера примеров можно привести следующие запросы декларативного вида: «Вставить значение 5 в ячейку, связанную с ключом, который равен значению ячейки, связанной с ключом А» и «Для всех ключей, связанных с ячейкой, имеющей значение 5, заменить это значение на значение 10». Тем не менее, должно быть понятно, что представленные выше примеры декларативных языков и примеры запросов декларативного вида приведены исключительно для лучшего понимания, и что другие декларативные языки и другие запросы декларативного вида могут использоваться источником 102 запросов в пределах объема данной технологии.
В некоторых вариантах осуществления данной технологии источник 102 запросов также способен принимать множество ответов 181, каждый из которых далее называется ответом 181. В общем случае в ответ на запрос 180, обработанный или не обработанный распределенной системой 100 обработки информации, распределенная система 100 обработки информации может формировать ответ 181, предназначенный для источника 102 запросов, связанного с соответствующим запросом 180. Характер ответа 181, среди прочего, зависит от вида источника 102 запросов, вида соответствующего запроса 180 и от того, обработала или не обработала распределенная система 100 обработки информации соответствующий запрос 180. В некоторых вариантах осуществления данной технологии распределенная система 100 обработки информации может формировать ответ 181, только если не удалось обработать запрос, или только в случае успешной обработки запроса, или в обоих случаях.
Например, во время обработки запроса 180 распределенная система 100 обработки информации может быть способна запрашивать дополнительные данные от источника 102 запросов для продолжения или завершения обработки запроса 180. В этом случае распределенная система 100 обработки информации может быть способна формировать ответ 181 в виде сообщения с запросом данных, в котором указываются дополнительные данные, запрашиваемые распределенной системой 100 обработки информации для продолжения или завершения обработки запроса 180.
В другом примере, если распределенная система 100 обработки информации успешно обработала соответствующий запрос 180, распределенная система 100 обработки информации может быть способна формировать ответ 181 в виде сообщения об успешном завершении, оповещающего об успешной обработке соответствующего запроса 180.
В другом примере, если распределенной системе 100 обработки информации не удалось успешно обработать соответствующий запрос 180, распределенная система 100 обработки информации может быть способна формировать ответ 181 в виде сообщения о неудачном завершении, оповещающий о том, что соответствующий запрос 180 обработать не удалось. В этом случае источник 102 запроса может быть способен выполнять дополнительные действия, такие как повторное направление запроса 180, выполнение диагностического анализа для определения причины неудачного завершения обработки запроса 180 распределенной системой 100 обработки информации, направление нового запроса, предназначенного для распределенной системы 100 обработки информации, и т.д.
Сеть связи
Источник 102 запросов связан с сетью 103 связи для направления запроса 180 в распределенную систему 100 обработки информации и для приема ответа 181 от распределенной системы 100 обработки информации. В некоторых не имеющих ограничительного характера вариантах осуществления данной технологии в качестве сети 103 связи может использоваться сеть Интернет. В других не имеющих ограничительного характера вариантах осуществления данной технологии сеть 103 связи может быть реализована иначе, например, в виде любой глобальной сети связи, локальной сети связи, частной сети связи и т.п. Реализация линии связи (отдельно не обозначена) между источником 102 запросов и сетью 103 связи зависит, среди прочего, от реализации источника 102 запросов.

Лишь в качестве примера, не имеющего ограничительного характера, в тех вариантах осуществления данной технологии, где источник 102 запросов реализован как беспроводное устройство связи (такое как смартфон), линия связи может быть реализована как беспроводная линия связи (такая как канал сети связи 3G, канал сети связи 4G, Wireless Fidelity или сокращенно WiFi, Bluetooth и т.п.). В тех примерах, где источник 102 запросов реализован как удаленный сервер, линия связи может быть беспроводной (такой как Wireless Fidelity или сокращенно WiFi, Bluetooth и т.д.) или проводной (такой как соединение по сети Ethernet).
Следует отметить, что сеть 103 связи, среди прочего, способна передавать пакет данных запроса, содержащий запрос 180, от источника 102 запросов в подсистему 104 предварительной обработки запросов распределенной системы 100 обработки информации. Например, этот пакет данных запроса может содержать выполняемые компьютером команды, составленные на языке программирования декларативного вида, на котором представлен запрос 180. Сеть 103 связи, среди прочего, также способна передавать пакет данных ответа, содержащий ответ 181, из распределенной системы 100 обработки информации в источник 102 запросов. Например, этот пакет данных ответа может содержать выполняемые компьютером команды, представляющие ответ 181.
Тем не менее, предполагается, что в некоторых вариантах осуществления данной технологии, где источник 102 запросов представляет собой, например, подсистему распределенной системы 100 обработки информации, сеть 103 связи может быть реализована способом, отличным от описанного выше, или в некоторых случаях может вовсе отсутствовать в пределах объема данной технологии.
Операционная подсистема (улей)
Как указано выше, распределенная система 100 обработки информации содержит операционную подсистему 111 или, сокращенно, улей. В общем случае улей 111 представляет собой программное приложение (например, конечный автомат), способное управлять по меньшей мере некоторыми подсистемами распределенной системы 100 обработки информации, такими как подсистема 104 предварительной обработки запросов и подсистема 105 обработки транзакций. Можно сказать, что улей 111 может быть реализован как конечный автомат (SM, State Machine), способный формировать, удалять и/или выравнивать нагрузку других автоматов SM, образующих по меньшей мере некоторые подсистемы распределенной системы 100 обработки информации.
Должно быть понятно, что автомат SM представляет собой вычислительную модель, реализованную в виде компьютерной системы и определяемую списком состояний. Автомат SM может изменять свое текущее состояние в ответ на некоторые внешние входные данные и может в конкретный момент времени находиться лишь в одном состоянии. Переход автомата SM из одного состояния в другое состояние называется изменением состояния.
Следует отметить, что в контексте данной технологии автоматы SM, образующие по меньшей мере некоторые подсистемы распределенной системы 100 обработки информации, являются детерминированными по свое природе, т.е. каждое изменение состояния каждого автомата SM однозначно определено (а) текущим состоянием соответствующего автомата SM и (б) внешними входными данными соответствующего автомата SM. Иными словами, для текущего состояния автомата SM и для конкретных внешних входных данных существует единственное следующее состояние этого автомата SM. Этот детерминированный характер изменения состояния не зависит от того, у какого именно автомата SM распределенной системы 100 обработки информации происходит изменение состояния.
Поэтому, как описано ниже, в некоторых вариантах осуществления данной технологии распределенная система 100 обработки информации должна принимать внешние входные данные определенного вида, соответствующие свойству детерминированности автоматов SM по меньшей мере некоторых подсистем распределенной системы 100 обработки информации.
Подсистема распределенного хранения данных
Как упомянуто ранее, распределенная система 100 обработки информации также содержит подсистему 108 распределенного хранения данных. В общем случае подсистема 108 распределенного хранения данных способна, среди прочего, хранить системные данные, указывающие состояния, изменения состояний, внешние входные и/или выходные данные по меньшей мере некоторых автоматов SM распределенной системы 100 обработки информации. Например, системные данные, связанные с автоматом SM распределенной системы 100 обработки информации, могут храниться в форме журнала, содержащего хронологический список состояний, изменений состояний, внешних входных и/или выходных данных данного автомата SM.
Подсистема 108 распределенного хранения данных также способна хранить клиентские данные, т.е. данные, связанные с внешними входными данными, обрабатываемыми распределенной системой 100 обработки информации. Например, в некоторых вариантах осуществления данной технологии клиентские данные могут храниться как часть системных данных в подсистеме 108 распределенного хранения данных в пределах объема данной технологии.
Для хранения системных и/или клиентских данных подсистема 108 распределенного хранения данных содержит множество устройств 112 хранения данных, каждое из которых далее называется устройством 112 хранения данных. Согласно различным вариантам осуществления данной технологии, некоторые или все устройства из множества устройств 112 хранения данных могут располагаться в одном или в различных местах. Например, некоторые или все устройства из множества устройств 112 хранения данных могут располагаться в одной серверной стойке, и/или в одном центре обработки данных, и/или могут быть распределены среди множества серверных стоек в одном или нескольких центрах обработки данных.
В некоторых вариантах осуществления данной технологии системные и/или клиентские данные, хранящиеся в одном устройстве 112 хранения данных, могут дублироваться и храниться в нескольких других устройствах 112 хранения данных. В некоторых вариантах осуществления изобретения такое дублирование и хранение системных и/или клиентских данных может обеспечивать отказоустойчивое хранение системных и/или клиентских данных в распределенной системе 100 обработки информации. Отказоустойчивое хранение системных и/или клиентских данных способно предотвращать утрату данных, когда устройство 112 хранения данных подсистемы 108 распределенного хранения данных становится временно или постоянно недоступным для хранения и извлечения данных. Такое отказоустойчивое хранение системных и/или клиентских данных также может предотвращать утрату данных, когда автомат SM распределенной системы 100 обработки информации становится временно или постоянно недоступным.
Предполагается, что устройство 112 хранения данных может быть реализовано в виде компьютерного сервера. Компьютерный сервер содержит по меньшей мере одно физическое запоминающее устройство (т.е. накопитель 126) и одно или несколько программных приложений, способных выполнять машиночитаемые команды. Накопитель 126 может представлять собой твердотельный накопитель (SSD, Solid State Drive), накопитель на жестких дисках (HDD, Hard Disk Drive) и т.п. Поэтому можно сказать, что по меньшей мере одно физическое запоминающее устройство может быть реализовано как устройство с подвижным или неподвижным диском.
Например, как показано на фиг. 1, данное устройство 112 хранения данных способно содержать, помимо прочего, следующие программные приложения: приложение 114 виртуального накопителя (Vdrive), приложение 116 физического накопителя (Pdrive), по меньшей мере одно приложение 118 моделирования накопителя, по меньшей мере одно приложение 120 планирования работы, приложение 122 обеспечения работы в реальном времени и по меньшей мере один прокси-сервер 124 автомата SM. Функции указанных выше программных приложений и накопителя 126, обеспечивающие хранение по меньшей мере некоторых системных и/или клиентских данных, более подробно описаны ниже со ссылками на фиг. 2.
Подсистема предварительной обработки запросов
Как указано выше, подсистема 105 обработки транзакций может содержать несколько детерминированных автоматов SM, которые должны получать входные данные определенного вида и которые соответствуют свойству детерминированности автоматов SM. Также следует еще раз отметить, что источник 102 запросов выдает запрос 180 в виде запроса декларативного вида.
Соответственно, подсистема 104 предварительной обработки запросов способна принимать запрос 180 декларативного вида от источника 102 запросов и предварительно обрабатывать или преобразовывать запрос 180 во множество 182 детерминированных транзакций, соответствующих свойству детерминированности нескольких автоматов SM, образующих подсистему 105 обработки транзакций.
В целом, подсистема 104 предварительной обработки запросов предназначена для предварительной обработки или преобразования запроса 180 во множество детерминированных транзакций 182, которые могут быть обработаны детерминированными автоматами SM из подсистемы 105 обработки транзакций.
Следует отметить, что подсистема 104 предварительной обработки запросов также способна формировать ответ 181 для передачи в источник 102 запросов. Разумеется, что подсистема 104 предварительной обработки запросов связана с подсистемой 105 обработки транзакций не только для передачи множества 182 детерминированных транзакций, но и для приема информации об обработке множества 182 детерминированных транзакций. В некоторых не имеющих ограничительного характера вариантах осуществления данной технологии множество 182 детерминированных транзакций может содержать одну или несколько транзакций вида «считывание» или «запись».
В некоторых вариантах осуществления данной технологии подсистема 104 предварительной обработки запросов реализована в виде по меньшей мере одного автомата SM в пределах объема данной технологии.
В некоторых вариантах осуществления данной технологии предполагается, что представленная на фиг. 1 распределенная система 100 обработки информации способна поддерживать транзакции ACID (Atomicity, Consistency, Isolation and Durability). В целом, ACID - это аббревиатура для обозначения набора свойств транзакции (атомарность, согласованность, изолированность, долговечность), обеспечивающих надежность базы данных при выполнении транзакций. Поэтому в некоторых вариантах осуществления данной технологии предполагается, что транзакции, предназначенные для подсистемы 105 обработки транзакций, могут быть атомарными, согласованными, изолированными и долговечными в пределах объема данной технологии.
Подсистема обработки транзакций
В общем случае подсистема 105 обработки транзакций способна принимать и обрабатывать множество 182 детерминированных транзакций и, таким образом, обрабатывать запрос 180 от источника 102 запросов. Подсистема 105 обработки транзакций содержит (а) подсистему 106 маршрутизации транзакций и (б) подсистему 110 базы данных, которые описаны далее.
Подсистема 110 базы данных содержит множество мест назначения транзакции (TDL) и разделена на множество сегментов 109, каждый из которых далее называется сегментом 109. В не имеющем ограничительного характера примере подсистема 110 базы данных может содержать базу данных, включающую в себя одну или несколько таблиц базы данных. Таблица базы данных может состоять из по меньшей мере двух столбцов, таких как первый столбец, содержащий ключи, и второй столбец, содержащий записи, в которых хранятся данные, связанные с соответствующими ключами. В этом не имеющем ограничительного характера примере место TDL может соответствовать строке таблицы базы данных, т.е. место TDL может соответствовать ключу и соответствующей записи в таблице базы данных.
В этом не имеющем ограничительного характера примере каждый сегмент 109 подсистемы 110 базы данных содержит часть таблицы базы данных. Следовательно, множество мест TDL, сопоставленных с соответствующими строками таблицы базы данных, разделено на множество сегментов 109 так, чтобы каждый сегмент 109 содержал соответствующее подмножество (например, диапазон) множества мест TDL.
В некоторых вариантах осуществления данной технологии предполагается, что каждый сегмент из множества сегментов 109 может быть реализован с использованием соответствующего детерминированного автомата SM. Это означает, что после приема транзакции, предназначенной для места TDL сегмента 109, реализованного с использованием автомата SM, этот автомат SM может обработать транзакцию и перейти из текущего состояния в новое состояние в соответствии с транзакцией, как описано выше.
Подсистема 106 маршрутизации транзакций способна маршрутизировать транзакции из множества 182 детерминированных транзакций в соответствующие места TDL и, таким образом, направлять их в соответствующие сегменты 109 подсистемы 110 базы данных. С этой целью подсистема 106 маршрутизации транзакций может включать в себя множество портов, которые обычно способны (а) принимать множество 182 детерминированных транзакций от подсистемы 104 предварительной обработки запросов, (б) разделять множество 182 детерминированных транзакций на подмножества детерминированных транзакций, предназначенных для соответствующих сегментов 109, и (в) формировать для каждого сегмента централизованный порядок выполнения детерминированных транзакций соответствующими сегментами 109.
Следует отметить, что каждый порт из множества портов, образующих подсистему 106 маршрутизации транзакций, может быть реализован как соответствующий автомат SM. В некоторых вариантах осуществления изобретения предполагается, что множество портов может включать в себя порты двух различных видов для маршрутизации транзакций из множества 182 детерминированных транзакций в соответствующие сегменты 109. В других вариантах осуществления изобретения по меньшей мере некоторые функции множества портов могут выполняться автоматами SM, соответствующими множеству сегментов 109.
Кроме того, как показано на фиг. 1, по меньшей мере некоторые из автоматов SM подсистемы 105 обработки транзакций могут быть связаны с подсистемой 108 распределенного хранения данных с использованием соответствующей линии 160 связи. В целом, линия 160 связи предназначена для передачи системных данных, таких как данные о состояниях, изменениях состояний, внешние входные и/или выходные данные соответствующих автоматов SM и т.д., в подсистему 108 распределенного хранения данных для хранения. Далее со ссылками на фиг. 2 более подробно описана реализация линий 160 связи и конфигурация подсистемы 108 распределенного хранения данных для хранения системных данных.
На фиг. 2 представлено устройство 112 хранения данных, входящее в состав подсистемы 108 распределенного хранения данных. Как описано выше, устройство 112 хранения данных содержит по меньшей мере один прокси-сервер 124 автомата SM. Прокси-сервер автомата SM предназначен для управления связью между автоматом SM и подсистемой 108 распределенного хранения данных. В некоторых вариантах осуществления данной технологии предполагается, что по меньшей мере один прокси-сервер 124 автомата SM устройства 112 хранения данных может представлять собой прикладной программный интерфейс (API, Application Programing Interface), управляющий связью между автоматом SM и устройством 112 хранения данных. В других вариантах осуществления данной технологии по меньшей мере один прокси-сервер 124 автомата SM сам может быть реализован как автомат SM. В других вариантах осуществления данной технологии по меньшей мере один прокси-сервер 124 автомата SM может быть реализован как программный модуль (не как автомат SM) для выполнения описанных выше функций.
В некоторых вариантах осуществления данной технологии прокси-сервер 124 автомата SM может быть способен (а) принимать системные данные обновления журнала этого автомата SM с использованием соответствующей линии 160 связи, (б) обрабатывать системные данные и (в) передавать обработанные системные данные соответствующему приложению 114 Vdrive для дальнейшей обработки.
По меньшей мере один прокси-сервер 124 автомата SM может быть способен обрабатывать системные данные, например, для обеспечения целостности и отказоустойчивости системных данных. В некоторых вариантах осуществления данной технологии предполагается, что по меньшей мере один прокси-сервер 124 автомата SM может быть способен выполнять стойкое к потере кодирование (erasure coding) системных данных. В целом, стойкое к потере кодирование представляет собой способ кодирования, предусматривающий получение данных с избыточностью и разделение их на несколько фрагментов. Такие избыточность и фрагментация способствуют восстановлению данных в случае потери одного или нескольких фрагментов вследствие отказов в системе.
Предполагается, что обработанные таким образом по меньшей мере одним прокси-сервером 124 автомата SM системные данные принимаются по меньшей мере одним соответствующим приложением 114 Vdrive устройства 112 хранения данных. Приложение 114 Vdrive предназначено для обработки системных данных, полученных от по меньшей мере одного прокси-сервера 124 автомата SM, и для ответного формирования соответствующих операций ввода/вывода (I/O, Input/Output), которые должны выполняться накопителем 126 для сохранения системных данных в накопителе 126 устройства 112 хранения данных. После формирования по меньшей мере одним приложением 114 Vdrive операций I/O, соответствующих принятым системным данным, по меньшей мере одно приложение 114 Vdrive передает операции I/O приложению 116 Pdrive.
Иными словами, предполагается, что устройство 112 хранения данных может содержать несколько прокси-серверов 124 автомата SM для обработки и передачи системных данных нескольким соответствующим приложениям 114 Vdrive, которые обрабатывают системные данные, формируют соответствующие операции I/O и передают соответствующие операции I/O в единое приложение 116 Pdrive устройства 112 хранения данных.
В целом, приложение 116 Pdrive предназначено для управления работой накопителя 126. Например, приложение 116 Pdrive может быть способным выполнять кодирование операций I/O, которые должны выполняться в накопителе 126, и различные другие функции, способствующие надежному хранению данных в накопителе 126.
Приложение 116 Pdrive связано с приложением 120 планирования работы для передачи операции I/O. Приложение 120 планирования работы способно планировать передачу операций I/O в накопитель 126. Предполагается, что приложение 120 планирования работы или сокращенно планировщик может использовать различные схемы планирования для определения порядка передачи операций I/O в накопитель 126 для их дальнейшего выполнения.
Предполагается, что в некоторых вариантах осуществления данной технологии планировщик 120 может быть реализован как часть приложения 116 Pdrive. Иными словами, приложением 116 Pdrive могут выполняться различные схемы планирования в пределах объема данной технологии.
В одном случае планировщик 120 может обеспечивать схему «справедливого» планирования. Должно быть понятно, что для данного устройства 112 хранения данных может потребоваться хранение операций I/O, соответствующих системным данным, связанным с несколькими автоматами SM. Кроме того, каждый из нескольких автоматов SM связан с заранее заданной долей производительности накопителя, которую накопитель 126 может выделить для выполнения операций I/O, связанных с соответствующим автоматом SM. В целом, схемы «справедливого» планирования способны упорядочивать операции I/O, передаваемые в накопитель 126, так, чтобы производительность накопителя 126, предназначенная для выполнения упорядоченных операций I/O, использовалась согласно заранее заданным долям, связанным с несколькими автоматами SM.
В другом случае планировщик 120 может обеспечивать схему планирования «реального времени». Следует еще раз отметить, что распределенная система 100 обработки информации может использоваться для предоставления услуг «облачного» хранения данных. Во многих таких вариантах осуществления может быть желательным обрабатывать и сохранять системные данные в реальном времени, т.е. в течение очень короткого интервала времени. Чтобы обеспечить выполнение требования режима реального времени к распределенной системе 100 обработки информации, операции I/O могут быть связаны с соответствующими предельными сроками, которые указывают момент времени, по прошествии которого соответствующие операции I/O уже не попадают в пределы допустимого времени, соответствующие требованиям режима реального времени к распределенной системе 100 обработки информации. В целом, схемы планирования реального времени способны упорядочивать операции I/O, передаваемые в накопитель 126, так, чтобы операции I/O выполнялись накопителем 126 с соблюдением соответствующих предельных сроков.
В другом случае планировщик 120 может обеспечивать гибридную схему планирования. Иными словами, планировщик 120 способен обеспечить схему планирования, которая позволяет упорядочивать операции I/O, передаваемые для выполнения в накопитель 126, так, чтобы учитывались и заранее заданные доли производительности накопителя для каждого соответствующего SM, и соответствующие предельные сроки операций I/O.
Как было упомянуто ранее, накопитель 126 представляет собой носитель информации для выполнения операций I/O и, соответственно, для хранения системных данных, переданных в устройство 112 хранения данных. Например, накопитель 126 может быть реализован в виде накопителя HDD или накопителя SSD. Накопитель 126 включает в себя внутреннее логическое устройство 250 накопителя для выбора операции I/O среди всех переданных в накопитель операций I/O для выполнения в текущий момент времени.
Следует отметить, что операции I/O могут направляться для выполнения в накопитель 126 по одной, но это может приводить к увеличению задержек между накопителем 126 и другими компонентами устройства 112 хранения данных. Поэтому операции I/O могут предаваться в накопитель 126 пакетами или группами. После приема пакета или группы операций I/O накопителем 126 внутреннее логическое устройство 250 накопителя способно выбрать для выполнения наиболее эффективную операцию I/O среди имеющихся в пакете операций I/O.
Например, наиболее эффективная операция I/O может выбираться на основе различных критериев, таких как место выполнения предыдущей операции I/O в накопителе 126 и место выполнения операций I/O, имеющихся в накопителе 126. Иными словами, внутреннее логическое устройство 250 накопителя способно выбирать для текущего выполнения наиболее эффективную операцию (с точки зрения накопителя 126) среди всех операций I/O, имеющихся в накопителе 126 в текущий момент времени.
Поэтому в некоторых случаях, несмотря на то, что планировщик 120 упорядочил операции I/O для передачи определенным образом с учетом требований режима реального времени к распределенной системе 100 обработки информации, внутреннее логическое устройство 250 накопителя 126 может выдавать в накопитель 126 команды для формирования порядка выполнения операций I/O, отличного от порядка передачи, выбранного планировщиком 120. Поэтому порядок выполнения иногда может не соответствовать требованиям режима реального времени распределенной системы 100 обработки информации (в частности, когда от планировщика 120 принимаются дополнительные операции I/O, которые могут быть более «эффективными» с точки зрения накопителя 126 и могут выбираться среди еще не выполненных операций I/O).
Чтобы обеспечить работу устройства 112 хранения данных в реальном времени и предотвратить описанную выше проблему, также известную как «торможение работы» (operation stagnation), устройство 112 хранения данных может содержать диспетчерский контроллер операций I/O, который далее называется приложением 122 обеспечения работы в реальном времени. В целом, приложение 122 обеспечения работы в реальном времени позволяет управлять тем, какие операции I/O из числа уже упорядоченных планировщиком 120 передаются в текущий момент времени для выполнения в накопитель 126.
Предполагается, что в некоторых вариантах осуществления данной технологии приложение 122 обеспечения работы в реальном времени может быть реализовано как часть приложения 116 Pdrive. Иными словами, вышеупомянутые функции приложения 122 обеспечения работы в реальном времени могут выполняться приложением 116 Pdrive в пределах объема данной технологии.
Устройство 112 хранения данных также может содержать по меньшей мере одно соответствующее приложение 118 моделирования накопителя для каждого накопителя 126 в устройстве 112 хранения данных. В целом, приложение 118 моделирования накопителя способно эмулировать идеальную работу накопителя 126 для анализа накопителя 126 в диагностических целях. Тем не менее, в других вариантах осуществления изобретения планировщик 120 также может использовать приложение 118 моделирования накопителя, чтобы упорядочивать операции I/O для их передачи в накопитель 126.
Предполагается, что в некоторых вариантах осуществления данной технологии по меньшей мере одно соответствующее приложение 118 моделирования накопителя может быть реализовано как часть приложения 116 Pdrive. Иными словами, вышеупомянутые функции по меньшей мере одного соответствующего приложения 118 моделирования накопителя могут выполняться приложением 116 Pdrive в пределах объема данной технологии.
Распределенная программная система
На фиг. 3 представлена схема реализованной согласно не имеющим ограничительного характера вариантам осуществления данной технологии распределенной программной системы 300 для преобразования клиентского запроса 180 во множество 182 транзакций (например, детерминированных транзакций) и выполнения множества 182 транзакций.
Распределенная программная система 300 содержит (а) подсистему 302 базы данных, (б) подсистему 106 маршрутизации транзакций и (в) систему 400 преобразования запросов декларативного вида в детерминированные транзакции. В не имеющем ограничительного характера примере подсистема 302 базы данных может быть реализована как представленная на фиг. 1 подсистема 110 базы данных, а система 400 преобразования запросов декларативного вида в детерминированные транзакции может быть реализована в виде представленной на фиг. 1 подсистемы 104 предварительной обработки запросов.
В некоторых вариантах осуществления данной технологии распределенная программная система 300 может содержать подсистему 106 маршрутизации транзакций и/или систему 400 преобразования запросов декларативного вида в детерминированные транзакции. В других вариантах осуществления данной технологии распределенная программная система 300 и подсистема 106 маршрутизации транзакций могут также представлять собой систему обработки запросов.
Следует отметить, что подсистема 302 базы данных может быть реализована распределенным образом во множестве устройств хранения данных (например, во множестве устройств 112 хранения данных, представленном на фиг. 1) в пределах объема данной технологии.
Множество сегментов
С правой стороны на фиг. 3 показана подсистема 302 базы данных, которая содержит множество 320 мест назначения транзакции (TDL) и разделена на множество 310 сегментов. Например, множество 310 сегментов содержит первый сегмент 312, второй сегмент 314, третий сегмент 316 и четвертый сегмент 318. В не имеющем ограничительного характера примере множество 310 сегментов может представлять собой показанное на фиг. 1 множество сегментов 109.
В не имеющем ограничительного характера примере подсистема 302 базы данных может содержать базу данных, включающую в себя одну или несколько таблиц базы данных. Таблица базы данных может состоять из по меньшей мере двух столбцов, таких как первый столбец, содержащий ключи, и второй столбец, содержащий записи, в которых хранятся данные, связанные с соответствующими ключами. Кроме того, запись может содержать множество хранящихся в ней значений. В этом не имеющем ограничительного характера примере место TDL из множества 320 мест TDL может соответствовать строке таблицы базы данных, т.е. место TDL может соответствовать ключу и соответствующей записи в таблице базы данных.
Таким образом, в представленном не имеющем ограничительного характера примере подсистема 302 базы данных может содержать базу данных, содержащую первую таблицу 321 базы данных и вторую таблицу 325 базы данных, которые разделены на множество 310 сегментов. Следовательно, множество 320 мест TDL, сопоставленных с соответствующими строками первой таблицы 321 базы данных и второй таблицы 325 базы данных, разделено на множество 310 сегментов так, чтобы каждый сегмент из множества 310 сегментов содержал соответствующее подмножество (например, диапазон) множества 320 мест TDL (т.е. подмножество строк первой таблицы 321 базы данных и второй таблицы 325 базы данных).
В некоторых вариантах осуществления данной технологии, где распределенная программная система 300 способна принимать транзакции с косвенным ключом, подсистема 302 базы данных также может содержать инвертированный индекс 330 для базы данных, при этом может быть предусмотрен первый инвертированный индекс 331 для первой таблицы 321 базы данных и второй инвертированный индекс 335 для второй таблицы 325 базы данных. В общем случае для таблицы базы данных, содержащей по меньшей мере два столбца, таких как первый столбец, содержащий ключи, и второй столбец, содержащий данные, хранящиеся в виде соответствующих записей, связанных с соответствующими ключами, может быть предусмотрен инвертированный индекс, содержащий по меньшей мере два столбца, таких как первый столбец, указывающий на данные, и второй столбец, содержащий список соответствующих ключей, связанных с данными. Инвертированный индекс 330 также может быть разделен на множество 310 сегментов с выделением части инвертированного индекса 330 для соответствующего подмножества множества 320 мест TDL (т.е. для подмножества строк первой таблицы 321 базы данных и второй таблицы 325 базы данных). В не имеющем ограничительного характера примере инвертированный индекс 330 может для некоторого значения содержать все ключи, имеющие соответствующие записи, в которых хранится это значение, и, таким образом, может позволять по запросу к инвертированному индексу 330 извлекать список соответствующих ключей, связанных с этим значением, хранящимся в соответствующих записях, связанных с соответствующими ключами.
Следует отметить, что как описано выше со ссылкой на множество сегментов 109, каждый сегмент из множества 310 сегментов может быть реализован в виде соответствующего автомата SM. Хотя множество 310 сегментов показано на фиг. 3 как содержащее четыре сегмента, в других вариантах осуществления данной технологии множество 310 сегментов может содержать большее количество сегментов, например, десятки, сотни, тысячи сегментов и т.д., в пределах объема данной технологии.
Также предполагается, что подсистема 302 базы данных может быть масштабируемой. Например, предполагается, что для увеличения размера подсистемы 302 базы данных оператором распределенной программной системы 300 в состав множества 310 сегментов могут включаться дополнительные сегменты. Как объясняется ниже, по меньшей мере некоторые варианты осуществления подсистемы 106 маршрутизации транзакций могут способствовать масштабируемости подсистемы 302 базы данных.
Множество 320 мест TDL разделено на соответствующие диапазоны множества 320 мест TDL, при этом каждый соответствующий диапазон связан с соответствующим сегментом из множества 310 сегментов. Иными словами, множество 320 мест TDL разделено на множество подмножеств мест TDL (например, диапазонов мест TDL), при этом каждое подмножество мест TDL связано с соответствующим сегментом из множества 310 сегментов. В частности, (а) первый диапазон 322 (например, первое подмножество) множества 320 мест TDL, соответствующий первому подмножеству первой таблицы 321 базы данных, связан с первым сегментом 312, (б) второй диапазон 324 (например, второе подмножество) множества 320 мест TDL, соответствующий второму подмножеству первой таблицы 321 базы данных, связан со вторым сегментом 314, (в) третий диапазон 326 (например, третье подмножество) множества 320 мест TDL, соответствующий первому подмножеству второй таблицы 325 базы данных, связан с третьим сегментом 316 и (г) четвертый диапазон 328 (например, четвертое подмножество) множества 320 мест TDL, соответствующий второму подмножеству второй таблицы 325 базы данных, связан с четвертым сегментом 318.
Как описано выше, некоторое место из множества 320 мест TDL может соответствовать некоторому ключу в подсистеме 302 базы данных и записям в подсистеме 302 базы данных, в которых хранятся данные, связанные с этим ключом. Таким образом, предполагается, что каждый сегмент из множества 310 сегментов способен хранить данные в подсистеме 302 базы данных, связанные с местом TDL, входящим в состав соответствующего связанного диапазона множества 320 мест TDL.
В не имеющем ограничительного характера примере осуществления данной технологии множество 320 мест TDL, разделенное на соответствующие диапазоны множества 320 мест TDL, может соответствовать множеству строк таблицы (или нескольких таблиц) базы данных, разделенному на диапазоны строк таблицы базы данных. Диапазон строк может содержать подмножество строк с ключами из данного диапазона ключей.
В некоторых вариантах осуществления данной технологии, где распределенная программная система 300 способна принимать запросы с косвенным ключом, инвертированный индекс 330 может быть разделен на множество 310 сегментов так, чтобы каждая соответствующая часть инвертированного индекса 330 была сопоставлена с соответствующим диапазоном множества 320 мест TDL: (а) первая часть 332 инвертированного индекса 330, соответствующая первому диапазону 322 (например, первому подмножеству) множества 320 мест TDL, связана с первым сегментом 312, (б) вторая часть 334 инвертированного индекса 330, соответствующая второму диапазону 324 (например, второму подмножеству) множества 320 мест TDL, связана со вторым сегментом 314, (в) третья часть 336 инвертированного индекса 330, соответствующая третьему диапазону 326 (например, третьему подмножеству) множества 320 мест TDL, связана с третьим сегментом 316 и (г) четвертая часть 338 инвертированного индекса 330, соответствующая четвертому диапазону 328 (например, четвертому подмножеству) множества 320 мест TDL, связана с четвертым сегментом 318.
В общем случае, сегмент из множества 310 сегментов способен (а) принимать соответствующий централизованный посегментный порядок выполнения транзакций, предназначенных для мест TDL в соответствующем диапазоне данного сегмента, (б) принимать транзакции, указанные в соответствующем централизованном посегментном порядке выполнения, и (в) выполнять принятые транзакции согласно соответствующему централизованному посегментному порядку выполнения. Следовательно, этот сегмент предназначен для выполнения транзакций, предназначенных для мест TDL в соответствующем диапазоне множества 320 мест TDL, в соответствии с централизованным посегментным порядком выполнения. В некоторых альтернативных не имеющих ограничительного характера вариантах осуществления данной технологии на одном шаге из одного источника могут приниматься (а) соответствующий централизованный посегментный порядок выполнения транзакций, предназначенных для мест TDL в соответствующем диапазоне сегмента, и (б) транзакции, указанные в соответствующем централизованном посегментном порядке выполнения.
В контексте данной технологии централизованный посегментный порядок выполнения для некоторого сегмента соответствует порядку выполнения всех предназначенных для этого сегмента транзакций из числа транзакций, принятых в некоторый момент времени соответствующим портом-посредником распределенной программной системы 300.
Например, централизованный посегментный порядок выполнения, предназначенный для первого сегмента 312, соответствует порядку выполнения всех предназначенных для первого диапазона 322 транзакций из числа транзакций, принятых в некоторый момент времени первым портом-посредником распределенной программной системы 300. В другом примере централизованный посегментный порядок выполнения, предназначенный для четвертого сегмента 318, соответствует порядку выполнения всех предназначенных для четвертого диапазона 328 транзакций из числа транзакций, принятых в некоторый момент времени четвертым портом-посредником распределенной программной системы 300.
Поскольку подсистема 302 базы данных может одновременно выполнять несколько транзакций (например, соответствующие транзакции могут одновременно выполняться каждым сегментом из множества 310 сегментов), каждый сегмент из множества 310 сегментов выполняет транзакции в соответствующем централизованном посегментном порядке выполнения, чтобы после выполнения подсистемой 302 базы данных всех транзакций, предназначенных для подсистемы 302 базы данных, получился тот же результат, что и после последовательного выполнения всех транзакций, предназначенных для подсистемы 302 базы данных.
Иными словами, обеспечение централизованного посегментного порядка выполнения для соответствующего сегмента из множества 310 сегментов позволяет множеству 310 сегментов выполнять несколько транзакций одновременно так, чтобы результат воздействия этих нескольких транзакций на подсистему 302 базы данных был тем же, что и результат последовательного выполнения этих нескольких транзакций.
Следует отметить, что множество 310 сегментов подсистемы 302 базы данных принимает соответствующие централизованные посегментные порядки выполнения от подсистемы 106 маршрутизации транзакций. Точнее, каждый сегмент из множества 310 сегментов принимает соответствующий централизованный посегментный порядок выполнения от соответствующего порта из множества портов-посредников (не показаны) подсистемы 106 маршрутизации транзакций с использованием множества 340 линий связи.
Каждый сегмент из множества 310 сегментов в подсистеме 302 базы данных также может выполнять функции соответствующего синхронизатора 470 записей, чтобы обеспечить синхронность транзакций в подсистеме 302 базы данных. Ниже более подробно описана конфигурация синхронизатора 470 записей для обеспечения синхронности транзакций.
Система 400 преобразования запросов декларативного вида в детерминированные транзакции содержит модуль 410 проверки правильности запросов и транслятор 450 запросов.
Модуль проверки правильности запросов
В общем случае модуль 410 проверки правильности запросов предназначен для разбора запроса 180 с целью проверки допустимости и синтаксической правильности запроса 180 перед передачей запроса 180 в транслятор 450 запросов. В некоторых вариантах осуществления модуль 410 проверки правильности запросов также может быть способен исправлять синтаксические ошибки запроса 180 и в не имеющем ограничительного характера примере может добавлять отсутствующие символы или удалять лишние символы из допустимого в других отношениях запроса. Дополнительно или в качестве альтернативы модуль 410 проверки правильности запросов также может быть способен проверять, является ли запрос 180 синтаксически правильным, но не имеющим смысла, независимо от того, для какой задачи он сформирован, например, запрос 180 может быть противоречивым и всегда вызывать пустой ответ.
Кроме того, в некоторых вариантах осуществления данной технологии модуль 410 проверки правильности запросов также может обеспечивать, чтобы запрос 180 содержал условие для определения по меньшей мере одного места TDL в подсистеме 110 базы данных и действие, которое должно выполняться в этом по меньшей мере одном месте TDL в подсистеме 110 базы данных.
В результате модуль 410 проверки правильности запросов может: (а) проверять запрос 180 и предавать запрос 180 в транслятор 450 запросов для дальнейшей обработки или (б) сообщать о проблеме с запросом 180 в источник 102 запросов путем формирования ответа 181.
Предполагается, что в некоторых вариантах осуществления данной технологии модуль 410 проверки правильности запросов может быть по меньшей мере частично реализован в источнике 102 запросов, чтобы обеспечить допустимость запроса 180, когда он передается в систему 400 преобразования запросов декларативного вида в детерминированные транзакции. В других вариантах осуществления данной технологии модуль 410 проверки правильности запросов может быть реализован в трансляторе 450 запросов. В прочих вариантах осуществления данной технологии модуль 410 проверки правильности запросов может отсутствовать.
После успешной проверки модулем 410 проверки правильности запросов транслятор 450 запросов принимает запрос 180.
Транслятор запросов
В общем случае транслятор 450 запросов предназначен для приема запроса 180 и преобразования запроса 180 во множество 182 транзакций детерминированного вида, содержащее по меньшей мере одну транзакцию считывания и по меньшей мере одну транзакцию модификации.
В общем случае транзакция детерминированного вида обладает двумя свойствами: (а) должно быть заранее известно по меньшей мере одно место из множества 320 мест TDL, для которого предназначена эта транзакция, и (б) транзакция всегда дает один и тот же результат в любое время, когда выполняется с конкретным набором входных значений и при одном и том же состоянии по меньшей мере одного места из множества 320 мест TDL, для которого предназначена эта транзакция. В отличие от этого, недетерминированная транзакция потенциально дает различные результаты каждый раз, когда выполняется с конкретными входными значениями, даже если состояние по меньшей мере одного места из множества 320 мест TDL, для которого предназначена транзакция, не изменилось.
Транслятор 450 запросов способен (а) обрабатывать запрос 180, чтобы сформировать по меньшей мере одну транзакцию считывания, определяющую по меньшей мере одно место из множества 320 мест TDL в подсистеме 302 базы данных, для которого предназначен запрос 180 и которое удовлетворяет некоторому условию, и передавать по меньшей мере одну транзакцию считывания для выполнения, и (б) после приема информации, сформированной в результате выполнения по меньшей мере одной транзакции считывания, обрабатывать запрос 180, чтобы сформировать транзакцию модификации, позволяющую изменить данные, хранящиеся в соответствующих записях, связанных с соответствующими ключами по меньшей мере одного места из множества мест TDL подсистемы 302 базы данных.
В некоторых вариантах осуществления данной технологии транзакция считывания может быть транзакцией с прямым ключом или транзакцией с косвенным ключом. Транзакция с прямым ключом может представлять собой транзакцию, непосредственно указывающую на один или несколько ключей, связанных с соответствующими записями, такую как «Вставить значение 5 в запись, связанную с ключом, равным значению записи, связанной с ключом А». Транзакция с косвенным ключом может представлять собой транзакцию, косвенно указывающую на ключи путем указания данных, хранящихся в записи (множество ключей может быть связано с записью, содержащей одинаковые данные), такую как «Для всех ключей, связанных с записью, имеющей значение 5, заменить это значение на значение 10». В общем случае, для обработки транзакции с косвенным ключом распределенная программная система 300 способна использовать инвертированный индекс (т.е. инвертированный индекс 330).
Запрос 180 представляет собой запрос декларативного вида и в не имеющем ограничительного характера примере запрос 180, принятый транслятором 450 запросов, может быть реализован с использованием следующего кода SQL:
UPSERT into table2
SELECT value1 AS key2, 20 AS value2 FROM table1
WHERE key1=10;
Иными словами, запрос 180 можно сформулировать следующим образом: в подсистеме 302 базы данных заменить данные в записи из второй таблицы 325 базы данных на «20», при этом запись из второй таблицы 325 базы данных связана со вторым ключом 356, который равен данным в записи первой таблицы 321 базы данных, связанной с первым ключом 352, имеющим значение «10».
Транслятор 450 запросов обрабатывает запрос 180 для формирования первой транзакции 184 из множества 182 транзакций.
Первая транзакция 184 предназначена для получения информации, необходимой для выполнения модифицирующих частей запроса 180 (т.е. для изменения данных, хранящихся в записи, связанной с ключом по меньшей мере одного места из множества 320 мест). Следовательно, можно сказать, что первая транзакция 184 является транзакцией считывания, позволяющей определять по меньшей мере одно удовлетворяющее условию место TDL из множества 320 мест TDL (например, место данных, связанных с данным ключом), необходимое для выполнения модифицирующей части запроса 180 в подсистеме 302 базы данных.
В продолжение предыдущего не имеющего ограничительного характера примера транслятор 450 запросов обрабатывает запрос 180 и определяет, что информация должна быть получена из первой таблицы 321 базы данных (т.е. определяет по меньшей мере одно место TDL из множества 320 мест TDL), в которой хранится первый ключ 352, имеющий значение «10» (необходимое условие для модификации информации в месте TDL (т.е. во второй таблице 325 базы данных) из множества 320 мест TDL). Транслятор 450 запросов формирует первую транзакцию 184, которая может быть реализована с использованием следующего кода SQL:
SELECT value1 FROM table1
WHERE key1=10;
Иными словами, первую транзакцию 184 можно сформулировать следующим образом: получить из первой таблицы 321 базы данных данные, хранящиеся в записи, связанной с первым ключом 352, имеющим значение «10».
Транслятор 450 запросов системы 400 преобразования запросов декларативного вида в детерминированные транзакции передает первую транзакцию 184 для выполнения подсистемой 106 маршрутизации транзакций. Подсистема 106 маршрутизации транзакций маршрутизирует первую транзакцию 184 в соответствующие сегменты из множества 310 сегментов, связанные с первой таблицей 321 базы данных. В представленном здесь варианте осуществления подсистема 106 маршрутизации транзакций маршрутизирует первую транзакцию 184 в первый сегмент 312, связанный с первым диапазоном 322 из множества 320 мест TDL, при этом первый диапазон 322 из первой таблицы 321 базы данных содержит первый ключ 352, имеющий значение «10». Подсистема 106 маршрутизации транзакций получает данные, хранящиеся в первой записи 354, связанной с первым ключом 352.
В некоторых вариантах осуществления данной технологии, где первая транзакция 184 представляет собой транзакцию с косвенным ключом, первая транзакция 184 может извлекать один или несколько ключей, связанных с одними и тем же значением в соответствующих записях, связанных с одним или несколькими ключами, с использованием инвертированного индекса 330. Например, транслятор 450 запросов передает первую транзакцию 184 в подсистему 106 маршрутизации транзакций, которая может маршрутизировать первую транзакцию 184 в первый сегмент 312, содержащий первый инвертированный индекс 331 первой таблицы 321 базы данных.
После выполнения первой транзакции 184 подсистемой 105 обработки транзакций транслятор 450 запросов системы 400 преобразования запросов декларативного вида в детерминированные транзакции получает данные, хранящиеся в записи, связанной с первым ключом 352 в первом диапазоне 322 множества 320 мест TDL, связанном с первым сегментом 312. Хранящиеся в первой записи 354 данные могут иметь значение «35», необходимое для формирования последней транзакции 186.
После приема данных в результате выполнения первой транзакции 184 транслятор 450 запросов обрабатывает запрос 180 для формирования последней транзакции 186 из множества 182 транзакций.
Последняя транзакция 186 предназначена для выполнения модифицирующих частей запроса 180 на основе информации, полученной в результате выполнения первой транзакции 184. Следовательно, можно сказать, что последняя транзакция 186 представляет собой транзакцию модификации и способна осуществлять доступ к информации, связанной с по меньшей мере одним местом из множества 320 мест TDL (которое может отличаться или не отличаться от по меньшей мере одного места из множества мест TDL, из которого информация получена первой транзакцией). Последняя транзакция 186 модификации может представлять собой транзакцию записи, способную осуществлять доступ к информации и модифицировать информацию, связанную с по меньшей мере одним местом из множества 320 мест TDL, где новая информация записывается вместо текущей информации, связанной с этим по меньшей мере одним местом из множества 320 мест TDL, например, путем замены текущего значения другим значением или стирания текущего значения. В некоторых вариантах осуществления данной технологии последняя транзакция 186 модификации может представлять собой транзакцию проверки (NULL), способную осуществлять доступ к информации, связанной с по меньшей мере одним местом из множества 320 мест TDL, и предназначенную для выполнения блокировки оптимистического типа или пессимистического типа, которая описана далее более подробно.
В некоторых вариантах осуществления данной технологии последняя транзакция 186 следует непосредственно за первой транзакцией 184. Иными словами, последняя транзакция 186 может представлять собой вторую транзакцию, которая следует непосредственно за первой транзакцией 184. В других вариантах осуществления данной технологии предполагается, что множество 182 транзакций может содержать дополнительную транзакцию между первой транзакцией 184 и последней транзакцией 186.
В продолжение предыдущего не имеющего ограничительного характера примера, транслятор 450 запросов формирует последнюю транзакцию 186, предназначенную для второй таблицы 325 базы данных на основе данных, полученных из первой транзакции 184, предназначенной для первой таблицы 321 базы данных. Последняя транзакция 186 может быть реализована с использованием следующего кода SQL:
UPSERT into table2
SELECT 35 AS key2, 20 AS value2
Иными словами, последнюю транзакцию 186 можно сформулировать следующим образом: во второй таблице 325 базы данных в подсистеме 302 базы данных заменить на значение «20» данные, хранящиеся в записи, связанной со вторым ключом 356, имеющим значение «35».
Транслятор 450 запросов системы 400 преобразования запросов декларативного вида в детерминированные транзакции передает последнюю транзакцию 186 для выполнения подсистемой 106 маршрутизации транзакций. Подсистема 106 маршрутизации транзакций подсистемы 105 обработки транзакций маршрутизирует последнюю транзакцию 186 в соответствующие сегменты, связанные со второй таблицей 325 базы данных. В представленном здесь варианте осуществления подсистема 106 маршрутизации транзакций маршрутизирует последнюю транзакцию 186 в четвертый сегмент 318, связанный с четвертым диапазоном 328 из множества 320 мест TDL, при этом четвертый диапазон 328 содержит первый ключ 356, имеющий значение «35». Подсистема 106 маршрутизации транзакций осуществляет доступ ко второй записи 358, связанной со вторым ключом 356, и изменяет значение, хранящееся во второй записи 358, на значение «20».
В некоторых вариантах осуществления данной технологии, где первая транзакция 184 представляет собой транзакцию с косвенным ключом, последняя транзакция 186 может обновлять вторую таблицу 325 базы данных и второй инвертированный индекс 335 второй таблицы 325 базы данных так, чтобы изменения отражались во второй таблице 325 базы данных и во втором инвертированном индексе 335.
Последняя транзакция 186 может выполняться (также используется термин «осуществляться»), только если удовлетворяются определенные условия, которые могут быть проверены соответствующими синхронизаторами 470 записей во множестве 310 сегментов. После выполнения последней транзакции 186 подсистема 105 обработки транзакций формирует для передачи в источник 102 запросов ответ 181, оповещающий об успешном или неудачном завершении выполнения запроса 180.
Подсистема 302 базы данных содержит соответствующие синхронизаторы 470 записей для проверки условий выполнения множества 182 транзакций. Далее более подробно описана конфигурация синхронизатора 470 записей подсистемы 302 базы данных.
Синхронизатор записей
В общем случае синхронизатор 470 записей предназначен для обеспечения синхронности транзакций в распределенной системе 100 обработки информации путем предотвращения одновременного доступа к информации и/или модификации информации в подсистеме 302 базы данных при выполнении множества 182 транзакций. Для достижения этой цели синхронизатор 470 записей способен выполнять блокировку оптимистического типа или блокировку пессимистического типа.
Синхронизатор 470 записей выполняется каждым сегментом из множества 310 сегментов подсистемы 302 базы данных. В других вариантах осуществления данной технологии единый синхронизатор 470 записей может выполняться подсистемой 302 базы данных. В некоторых вариантах осуществления данной технологии синхронизатор 470 записей может выполняться подсистемой 104 предварительной обработки запросов или подсистемой 105 обработки транзакций.
Блокировка пессимистического типа включает в себя блокировку некоторого места из множества 320 мест TDL в подсистеме 302 базы данных с момента доступа к нему до завершения транзакции так, чтобы это место TDL было недоступно для модификации другим транзакциям в течение этого времени. Таким образом, блокировка пессимистического типа предотвращает модификацию другой транзакцией данных, хранящихся в этом месте из множества 320 мест TDL в подсистеме 302 базы данных. В некоторых вариантах осуществления данной технологии, где первая транзакция 184 представляет собой транзакцию с косвенным ключом, синхронизатор 470 записей способен блокировать элементы в инвертированном индексе 330, связанные с этим местом из множества 320 мест TDL,
Для выполнения блокировки пессимистического типа синхронизатор 470 записей способен заблокировать некоторое место из множества мест 320 TDL во время выполнения первой транзакции 184. В продолжение предыдущего примера, синхронизатор 470 записей блокирует первый диапазон 322 множества 320 мест TDL, связанный с первым сегментом 312 до завершения выполнения последней транзакции 186. Затем синхронизатор 470 записей отменяет блокировку первого диапазона 322 множества 320 мест TDL.
Блокировка оптимистического типа включает в себя получение значения блокировки, указывающего на состояние информации в некотором месте из множества 320 мест TDL в подсистеме 302 базы данных при первом доступе к информации, и получение другого значения блокировки, указывающего на состояние информации в этом месте из множества 320 мест TDL перед выполнением модификации информации в этом месте из множества 320 мест TDL. Блокировка оптимистического типа не запрещает другим транзакциям модифицировать информацию, связанную с этим местом из множества 320 мест TDL, до завершения транзакции, но обеспечивает оповещение, если информация была модифицирована. Если состояние двух значений блокировки отличается, транзакция не завершается и сообщение об ошибке может быть направлено в источник 102 запросов в ответе 181.
Для выполнения блокировки оптимистического типа синхронизатор 470 записей способен: (а) получать первое значение 426 блокировки, указывающее на состояние некоторого места из множества 320 мест TDL в первый момент времени; (б) получать для этого места из множества 320 мест TDL второе значение блокировки, указывающее на состояние этого места из множества 320 мест TDL во второй момент времени; и (в) определять, совпадают ли первое значение 426 блокировки и второе значение 436 блокировки.
В некоторых вариантах осуществления данной технологии первое значение 426 блокировки и второе значение 436 блокировки могут формироваться путем применения хеш-функции для данных, хранящихся в записях, связанных с ключами в этом месте из множества 320 мест TDL. Затем могут сравниваться хеш-значения данных, хранящихся в записях, связанных с ключами в этом месте из множества 320 мест TDL.
В некоторых вариантах осуществления данной технологии, где первая транзакция 184 представляет собой транзакцию с косвенным ключом, синхронизатор 470 записей также может получать первое значение 426 блокировки и второе значение 436 блокировки для инвертированного индекса 330.
На фиг. 4 представлена блок-схема способа 500 обработки запроса в распределенной базе данных с использованием блокировки оптимистического типа в соответствии с не имеющими ограничительного характера вариантами осуществления данной технологии.
Способ 500 выполняется распределенной программной системой 300 в распределенной системе 100 обработки информации. Способ 500 начинается с шага 502.
Шаг 502: прием запроса от источника запросов, при этом запрос указывает на:
(а) условие для определения по меньшей мере одного места TDL; и
(б) действие, которое должно выполняться в этом по меньшей мере одном месте TDL.
На шаге 502 система 400 преобразования запросов декларативного вида в детерминированные транзакции принимает от источника 102 запросов запрос в форме запроса 180, указывающий условие для определения по меньшей мере одного места из множества 320 мест TDL и действие, которое должно выполняться в этом по меньшей мере одном месте из множества 320 мест TDL. В некоторых вариантах осуществления данной технологии модуль 410 проверки правильности запросов может выполнять разбор запроса 180 с целью проверки допустимости и синтаксической правильности запроса 180. Запрос 180 может представлять собой запрос SQL-типа, направленный от источника 102 запросов в подсистему 302 базы данных.
Затем способ 500 продолжается на шаге 504.
Шаг 504: обработка запроса для формирования первой транзакции считывания детерминированного вида, обеспечивающей определение по меньшей мере одного удовлетворяющего условию места TDL, которое содержит информацию, определяющую это по меньшей мере одно место TDL и удовлетворяющую этому условию.
На шаге 504 система 400 преобразования запросов декларативного вида в детерминированные транзакции обрабатывает запрос на формирование первой транзакции 184 считывания детерминированного вида, способной определять по меньшей мере одно удовлетворяющее условию место TDL из множества 320 мест TDL, которое содержит информацию, определяющую это по меньшей мере одно удовлетворяющее условию место TDL из множества мест TDL и удовлетворяющую этому условию. В некоторых вариантах осуществления данной технологии удовлетворяющее условию место TDL представляет собой одно место из по меньшей мере одного места TDL. В других вариантах осуществления данной технологии для определения по меньшей мере одного удовлетворяющего условию места TDL из множества мест 320 TDL система 400 преобразования запросов декларативного вида в детерминированные транзакции способна осуществлять доступ к инвертированному индексу 330, указывающему (а) на информацию, связанную со множеством 320 мест TDL, и (б) на соответствующие места из множества 320 мест TDL. Дополнительно или в качестве альтернативы, удовлетворяющее условию место TDL может представлять собой набор удовлетворяющих условию мест TDL из множества 320 мест TDL. В некоторых вариантах осуществления набор удовлетворяющих условию мест TDL представляет собой набор следующих непосредственно друг за другом удовлетворяющих условию мест TDL из множества 320 мест TDL. В некоторых вариантах осуществления данной технологии по меньшей мере одно удовлетворяющее условию место TDL включает в себя по меньшей мере одно из следующего: (а) целевое удовлетворяющее условию место TDL для модификации информации и (б) целевое удовлетворяющее условию место TDL для модификации информации с целью получения дополнительных данных для последней транзакции 186.
Затем способ 500 продолжается на шаге 506.
Шаг 506: получение для удовлетворяющего условию места TDL значения блокировки, указывающего на текущее состояние этого удовлетворяющего условию места TDL.
На шаге 506 синхронизатор 407 записей получает для удовлетворяющего условию места TDL из множества 320 мест TDL первое значение 426 блокировки, указывающее на текущее состояние этого по меньшей мере одного удовлетворяющего условию места из множества 320 мест TDL. В некоторых вариантах осуществления данной технологии для получения значения блокировки синхронизатор 470 записей способен получить для набора следующих непосредственно друг за другом удовлетворяющих условию мест TDL из множества 320 мест TDL диапазонное значение блокировки, которое указывает (а) на места TDL из набора следующих непосредственно друг за другом удовлетворяющих условию мест TDL из множества 320 мест TDL и (б) на текущее состояние каждого места из набора следующих непосредственно друг за другом удовлетворяющих условию мест TDL во множестве 320 мест TDL.
Затем способ 500 продолжается на шаге 508.
Шаг 508: выполнение первой транзакции.
На шаге 508 подсистема 105 обработки транзакций выполняет первую транзакцию 184.
Затем способ 500 продолжается на шаге 510.
Шаг 510: обработка запроса и по меньшей мере одного места TDL для формирования последней транзакции модификации детерминированного вида, способной на основе запроса осуществлять доступ к информации, связанной с этим по меньшей мере одним местом TDL.
На шаге 510 система 400 преобразования запросов декларативного вида в детерминированные транзакции принимает информацию, сформированную в результате выполнения первой транзакции 184, и обрабатывает запрос 180 для формирования последней транзакции 186 модификации детерминированного вида, способной осуществлять доступ к информации, связанной с по меньшей мере одним местом из множества 320 мест TDL в подсистеме 302 базы данных. Модификация представляет собой одно из следующего: (а) запись с целью модификации информации, связанной с этим по меньшей мере одним местом TDL, на основе запроса и (б) верификация.
Затем способ 500 продолжается на шаге 512.
Шаг 512: проверка равенства текущего значения блокировки, связанного с удовлетворяющим условию местом TDL, полученному значению блокировки для этого удовлетворяющего условию места TDL, при этом текущее значение блокировки соответствует прежнему состоянию этого удовлетворяющего условию места TDL.
На шаге 512 синхронизатор 470 записей определяет, совпадает ли второе значение 346 блокировки, связанное с удовлетворяющим условию местом TDL, с первым значением 426 блокировки для по меньшей мере одного удовлетворяющего условию места TDL из множества 320 мест TDL, при этом второе значение 436 блокировки соответствует прежнему состоянию этого по меньшей мере одного места из множества 320 мест TDL. В некоторых вариантах осуществления данной технологии второе значение 436 блокировки, соответствующее прежнему состоянию этого удовлетворяющего условию места TDL, изменилось на основе другой транзакции модификации, выполненной в этом удовлетворяющем условию месте TDL после выполнения первой транзакции 184. В других вариантах осуществления данной технологии второе значение 436 блокировки, соответствующее прежнему состоянию этого удовлетворяющего условию места TDL, не изменилось на основе другой транзакции считывания, выполненной в удовлетворяющем условию месте TDL после выполнения первой транзакции.
Затем способ 500 продолжается на шаге 514.
Шаг 514: выполнение последней транзакции, если текущее значение блокировки равно полученному значению блокировки, при этом выполнение последней транзакции включает в себя модификацию информации, связанной с по меньшей мере одним местом TDL.
На шаге 514 подсистема 105 обработки транзакций выполняет последнюю транзакцию 186 в том случае, если второе значение 436 блокировки совпадает с первым значением 426 блокировки, при этом последняя транзакций 186 предусматривает модификацию информации, связанной с по меньшей мере одним местом из множества 320 мест TDL. В некоторых вариантах осуществления данной технологии выполнение последней транзакции 186 дополнительно включает в себя формирование ответа 181 для источника запросов, оповещающего об успешной обработке запроса 180. В других вариантах осуществления данной технологии выполнение последней транзакции 186 дополнительно включает в себя формирование ответа 181 для источника запросов, оповещающего о неудачном завершении обработки запроса 180.
Затем способ 500 может быть завершен.
На фиг. 5 представлена блок-схема способа 600 обработки запроса в распределенной базе данных с использованием блокировки пессимистического типа в соответствии с не имеющими ограничительного характера вариантами осуществления данной технологии.
Способ 600 выполняется распределенной программной системой 300 в распределенной системе 100 обработки информации. Способ 600 начинается с шага 602.
Шаг 602: прием запроса от источника запросов, при этом запрос указывает на:
(а) условие для определения по меньшей мере одного места TDL; и
(б) действие, которое должно выполняться в этом по меньшей мере одном месте TDL.
На шаге 602 система 400 преобразования запросов декларативного вида в детерминированные транзакции принимает от источника 102 запросов запрос в форме запроса 180, указывающего условие для определения по меньшей мере одного места из множества 320 мест TDL и действие, которое должно выполняться в этом по меньшей мере одном месте из множества 320 мест TDL. В некоторых вариантах осуществления данной технологии модуль 410 проверки правильности запросов может выполнять разбор запроса 180 с целью проверки допустимости и синтаксической правильности запроса 180. Запрос 180 может представлять собой запрос SQL-типа, направленный от источника 102 запросов в подсистему 302 базы данных.
Затем способ 600 продолжается на шаге 604.
Шаг 604: обработка запроса для формирования первой транзакции считывания детерминированного вида, способной определять по меньшей мере одно удовлетворяющее условию место TDL, которое содержит информацию, определяющую это по меньшей мере одно место TDL и удовлетворяющую этому условию.
На шаге 604 система 400 преобразования запросов декларативного вида в детерминированные транзакции обрабатывает запрос для формирования первой транзакции 184 считывания детерминированного вида, способной определять по меньшей мере одно удовлетворяющее условию место из множества 320 мест TDL, которое содержит информацию, определяющую это по меньшей мере одно место из множества 320 мест TDL и удовлетворяющую этому условию. В некоторых вариантах осуществления данной технологии удовлетворяющее условию место TDL представляет собой одно место из по меньшей мере одного места TDL. В других вариантах осуществления данной технологии для определения по меньшей мере одного удовлетворяющего условию места TDL из множества мест 320 TDL система 400 преобразования запросов декларативного вида в детерминированные транзакции способна осуществлять доступ к инвертированному индексу 330, указывающему (а) на информацию, связанную со множеством 320 мест TDL, и (б) на соответствующие места из множества 320 мест TDL. Дополнительно или в качестве альтернативы, удовлетворяющее условию место TDL может представлять собой набор удовлетворяющих условию мест TDL из множества 320 мест TDL. В некоторых вариантах осуществления изобретения набор удовлетворяющих условию мест TDL представляет собой набор следующих непосредственно друг за другом удовлетворяющих условию мест TDL из множества 320 мест TDL. В некоторых вариантах осуществления данной технологии по меньшей мере одно удовлетворяющее условию место TDL включает в себя по меньшей мере одно из следующего: (а) целевое удовлетворяющее условию место TDL для модификации информации и (б) целевое удовлетворяющее условию место TDL для модификации информации с целью получения дополнительных данных для последней транзакции 186.
Затем способ 600 продолжается на шаге 606.
Шаг 606: блокировка по меньшей мере одного удовлетворяющего условию места TDL.
На шаге 606 синхронизатор 470 записей блокирует по меньшей мере одно удовлетворяющее условию место TDL из множества 320 мест TDL так, чтобы оно не могло быть модифицировано другими транзакциями в распределенной системе 100 обработки информации.
Затем способ 600 продолжается на шаге 608.
Шаг 608: выполнение первой транзакции.
На шаге 608 подсистема 105 обработки транзакций выполняет первую транзакцию 184.
Затем способ 600 продолжается на шаге 610.
Шаг 610: обработка запроса и по меньшей мере одного места TDL для формирования последней транзакции модификации детерминированного вида, способной на основе запроса осуществлять доступ к информации, связанной с этим по меньшей мере одним местом TDL.
На шаге 610 система 400 преобразования запросов декларативного вида в детерминированные транзакции принимает информацию, сформированную в результате выполнения первой транзакции 184, и обрабатывает запрос 180 для формирования последней транзакции 186 модификации детерминированного вида, способной осуществлять доступ к информации, связанной с по меньшей мере одним местом из множества 320 мест TDL в подсистеме 302 базы данных. Модификация представляет собой одно из следующего: запись и верификация. Последняя транзакция 186 записи способна осуществлять доступ и модифицировать информацию, связанную с по меньшей мере одним местом из множества 320 мест TDL в подсистеме 302 базы данных. Последняя транзакция 186 проверки способна осуществлять доступ к информации, связанной с этим по меньшей мере одним местом из множества 320 мест TDL в подсистеме 302 базы данных.
Затем способ 600 продолжается на шаге 612.
Шаг 612: отмена блокировки по меньшей мере одного удовлетворяющего условию места TDL.
На шаге 612 синхронизатор 470 записей отменяет блокировку по меньшей мере одного удовлетворяющего условию места TDL из множества 320 мест TDL.
Затем способ 600 продолжается на шаге 614.
Шаг 614: выполнение последней транзакции.
На шаге 614 подсистема 105 обработки транзакций выполняет последнюю транзакцию 186. В некоторых вариантах осуществления данной технологии выполнение последней транзакции 186 дополнительно включает в себя формирование ответа 181 для источника запросов, оповещающего об успешной обработке запроса 180. В других вариантах осуществления данной технологии выполнение последней транзакции 186 дополнительно включает в себя формирование ответа 181 для источника запросов, оповещающего о неудачном завершении обработки запроса 180.
Затем способ 600 может быть завершен.
Специалистам в данной области техники должно быть очевидно, что по меньшей некоторые варианты осуществления данной технологии преследуют цель расширения арсенала технических решений определенной технической проблемы: преобразования запроса декларативного вида в распределенной системе, содержащей распределенную базу данных, во множество транзакций детерминированного вида для обеспечения синхронности транзакций в распределенной системе путем предотвращения одновременного доступа к информации и/или модификации информации в распределенной базе данных, что позволяет сэкономить вычислительные ресурсы, повысить безопасность, избежать утраты данных и конфликта данных, а также обеспечить оптимальное функционирование распределенной системы.
Очевидно, что не все упомянутые в данном описании технические эффекты должны присутствовать в каждом варианте реализации настоящей технологии. Например, возможны варианты реализации настоящей технологии, когда пользователь не получает некоторые из этих технических эффектов, или другие варианты реализации, когда пользователь получает другие технические эффекты либо технический эффект отсутствует.
Некоторые из этих шагов и передаваемых или принимаемых сигналов хорошо известны в данной области техники и по этой причине опущены в некоторых частях описания для упрощения. Сигналы могут передаваться или приниматься с использованием оптических средств (таких как волоконно-оптическое соединение), электронных средств (таких как проводное или беспроводное соединение) и механических средств (например, основанных на давлении, температуре или любом другом подходящем физическом параметре).
Специалисту в данной области могут быть очевидны возможные изменения и усовершенствования описанных выше вариантов осуществления настоящей технологии. Предшествующее описание приведено лишь в качестве примера, но не для ограничения объема изобретения. Объем охраны данной технологии определяется исключительно объемом приложенной формулы изобретения.