СПОСОБ (ВАРИАНТЫ) И СИСТЕМА (ВАРИАНТЫ) ОБРАБОТКИ ДОКУМЕНТА В РАСПРЕДЕЛЕННОЙ АРХИТЕКТУРЕ
METHOD (VERSIONS) AND SYSTEM (VERSIONS) OF DOCUMENT PROCESSING IN DISTRIBUTED ARCHITECTURE

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[01] Настоящее решение относится к системам и способам обработки документа в распределенной архитектуре. Конкретно, системы и способы направлены на синхронизацию изменений, сделанных в документе в контексте совместной работы.
УРОВЕНЬ ТЕХНИКИ
[02] Область совместного редактирования, конкретнее совместного редактирования различных типов документов, динамично развивается в последние годы. Системы и способы, такие как те, которые реализуют Google Docs, Google Sheets и Google Slides от компании Google Inc., расположенной в Соединенных Штатах Америки, Калифорния CA 94043, Маунтин-Вью, Амфитеатр-Паркуэй, 1600, позволяют пользователям создавать и редактировать документы в режиме онлайн и совместно работать с другими пользователями в режиме реального времени. Созданные документы обычно сохраняются автоматически на серверах, и история изменений также может автоматически сохраняться таким образом, чтобы все произведенные изменения можно было просматривать и/или заново вносить в документы.
[03] После создания документов, ими можно делиться, открывать к ним доступ и предоставлять возможность редактирования нескольким пользователям одновременно, а пользователи могут следить за изменениям каждого знака в тот момент, когда другой пользователь делает свои правки. Документы могут включать в себя форматы и/или типы файлов, такие как программы обработки текста (например, ".doc" или ".docx", совместимые с программой Microsoft Word), программы обработки таблиц (например, ".xls" или ".xlsx", совместимые с программой Microsoft Excel) и/или программы обработки презентации (например, ".ppt" или ".pptx", совместимые с программой Microsoft PowerPoint).
[04] Были разработаны многочисленные подходы, включая те, что подробно описаны в патенте US 8656290 (далее будет упоминаться как патент 8656290, опубликовано 18 февраля 2014 г.), к синхронизации документов, которые находятся в совместном владении, в совместном доступе и которые могут редактироваться одновременно несколькими пользователями. В приведенном примере с патентом 8656290 сервер может быть выполнен с возможностью получать правки от клиента для создания новой версии документа, которая будет отражать полученную правку. Сервер также может быть выполнен с возможностью определять обновления для других клиентов, в совместном доступе с которыми находится этот документ, и предоставлять обновления другим клиентам.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
[05] Варианты осуществления настоящего решения были разработаны с учетом изобретательского понимания по меньшей мере одной проблемы, связанной с известным уровнем техники.
[06] Несмотря на то что способ и системы синхронизации документа между множеством пользователей были разработаны, тем не менее, желательны улучшения, нацеленные на уменьшение объема данных, которые будут передаваться между сервером, на котором расположен находящийся в совместном доступе документ, и множеством электронных устройств, связанных с множеством пользователей. Подобные улучшения могут быть еще более желательны в том случае, если документ достигает определенного размера.
[07] Настоящее решение было создано разработчиком(ами) на основе наблюдений о том, что сервер может сохранять документ, включающий в себя часть содержимого и набор записей о правках, в первой базе данных, и синхронизационный документ, включающий в себя по меньшей мере часть набора записей о правках, во второй базе данных. После получения запроса на синхронизацию от электронного устройства, связанного с пользователем, сервер может, вместо передачи документа, передавать только синхронизационный документ. С учетом того, что электронное устройство уже обладает предыдущей версией документа, хранящейся в памяти, электронное устройство может далее восстанавливать последнюю версию документа без передачи документа (т.е. документа целиком) между сервером и электронном устройством. Настоящее решение, следовательно, позволяет уменьшить объем данных, которые будут передаваться между сервером и электронным устройством; и улучшить пользовательский опыт путем уменьшения количества времени, которое необходимо электронному устройству для представления документа пользователю.
[08] Таким образом, одним объектом настоящего решения является исполняемый на компьютере способ обработки документа в распределенной архитектуре, реализуемый процессором, способ включает в себя:
получение доступа от первого постоянного машиночитаемого носителя первого сервера к документу, который включает в себя часть содержимого и набор записей о правках, причем документ доступен множеству электронных устройств, которое включает в себя первое электронное устройство и второе электронное устройство;
поддержку на втором постоянном машиночитаемом носителе второго сервера, синхронизационного документа, который включает в себя по меньшей мере часть набора записей о правках в документе;
после получения запроса на синхронизацию от первого электронного устройства:
получение доступа к синхронизационному документу со второго постоянного машиночитаемого носителя;
передачу синхронизационного документа первому электронному устройству;
после получения указания на то, что синхронизация на первом электронном устройстве на основе синхронизационного документа была неудачной:
получение доступа к документу с первого постоянного машиночитаемого носителя; и
передачу документа первому электронному устройству;
[09] В некоторых вариантах осуществления, способ дополнительно включает в себя, после получения первой новой записи о правке от первого электронного устройства:
добавление первой новой записи о правке в документ, хранящийся на первом постоянном машиночитаемом носителе; и
добавление первой новой записи о правке в синхронизационный документ, хранящийся на втором постоянном машиночитаемом носителе.
[10] В некоторых вариантах осуществления, способ дополнительно включает после получения первой новой записи о правке от первого электронного устройства:
добавление первой новой записи о правке в документ, хранящийся на первом постоянном машиночитаемом носителе; и
добавление первой новой записи о правке в синхронизационный документ, хранящийся на втором постоянном машиночитаемом носителе.
[11] В некоторых вариантах осуществления, после получения первой новой записи о правке, связанной с первой версией документа от первого электронного устройства, и второй новой записи о правке, связанной с первой версией документа от второго электронного устройства:
получение доступа по меньшей мере к одному из: документу из первого постоянного машиночитаемого носителя или синхронизационному документу из второго постоянного машиночитаемого носителя; и
создание новой объединенной записи о правке на основе по меньшей мере одного из: первой новой записи о правке, второй новой записи о правке, документа или синхронизационного документа.
[12] В некоторых вариантах осуществления способ дополнительно включает в себя:
добавление новой объединенной записи о правке в документ, хранящийся на первом постоянном машиночитаемом носителе; и
добавление новой объединенной записи о правке в синхронизационный документ, хранящийся на втором постоянном машиночитаемом носителе.
[13] В некоторых вариантах, часть содержимого является первым набором записей о правке, а набор записей о правке - вторым набором записей о правке.
[14] В некоторых вариантах осуществления, первый набор записей о правке и второй набор записей о правке указывают по меньшей мере на одно из: знаки, которые необходимо добавить, или знаки, которые необходимо удалить в результате взаимодействия пользователя с одним из первого электронного устройства или второго электронного устройства.
[15] В некоторых вариантах осуществления, по меньшей мере одно из: часть содержимого или набор записей о правках обладает журнальной структурой.
[16] В некоторых вариантах осуществления, поддержка во втором постоянном машиночитаемом носителе второго сервера, синхронизационного документа, которая включает в себя, после определения того, что документ превышает пороговое значение, создание во втором постоянном машиночитаемом носителе второго сервера, синхронизационного документа на основе по меньшей мере одного из: части содержимого и набора записей о правке документа.
[17] В некоторых вариантах осуществления, определение того, что документ превышает пороговое значение, включает по меньшей мере одно из: определение того, что документ превышает заранее определенное число записей в журнале, или того, что документ превышает заранее определенный размер, выраженный в единицах памяти.
[18] В некоторых вариантах осуществления, указание на то, что синхронизация была неудачной, далее включает в себя определение первым электронным устройством того, что синхронизационный документ не обеспечивает правильную синхронизацию между локальным содержимым, хранящимся в постоянном машиночитаемом носителе первого электронного устройства, и синхронизационным документом.
[19] В некоторых вариантах осуществления, определение первым электронным устройством, что синхронизационный документ не обеспечивает правильную синхронизацию, включает определение того, что синхронизационный документ не содержит по меньшей мере некоторые данные, которые необходимы для создания локальной версии документа, хранящейся в постоянном машиночитаемом носителе первого электронного устройства, локальная версия документа является зеркальным отражением документа, хранящимся в первом постоянном машиночитаемом носителе первого сервера.
[20] В некоторых вариантах осуществления первый постоянный машиночитаемый носитель первого сервера является долговременным постоянным машиночитаемым носителем для долговременного хранения.
[21] В некоторых вариантах, второй постоянный машиночитаемый носитель второго сервера является кратковременным постоянным машиночитаемым носителем для кратковременного хранения, который обладает более высокой скоростью доступа к памяти первого постоянного машиночитаемого носителя первого сервера.
[22] В некоторых вариантах осуществления, синхронизационный документ включает скользящее подмножество предыдущих правок, которые были сделаны в документе.
[23] Таким образом, другим объектом настоящего решения является исполняемый на компьютере способ обработки документа в распределенной архитектуре, реализуемый процессором, способ включает в себя:
получение доступа от первого постоянного машиночитаемого носителя первого сервера к документу, который включает в себя часть содержимого и набор записей о правках, причем документ доступен множеству электронных устройств, которое включает в себя первое электронное устройство и второе электронное устройство;
поддержку на втором постоянном машиночитаемом носителе второго сервера, синхронизационного документа, который включает в себя по меньшей мере часть набора записей о правках в документе;
после получения запроса на синхронизацию от первого электронного устройства:
получение доступа к синхронизационному документу со второго постоянного машиночитаемого носителя;
после определения того, что синхронизационный документ обеспечивает правильную синхронизацию для первого электронного устройства, передачу синхронизационного документа первому электронному устройству;
после определения того, что синхронизационный документ не обеспечивает правильную синхронизацию для первого электронного устройства:
получение доступа к документу с первого постоянного машиночитаемого носителя; и
передачу документа первому электронному устройству.
[24] Таким образом, другим объектом настоящего решения является исполняемый на компьютере способ обработки документа в распределенной архитектуре, реализуемый процессором, способ включает в себя:
получение доступа от первого постоянного машиночитаемого носителя первого сервера к документу, который включает в себя часть содержимого и набор записей о правках, причем документ доступен множеству электронных устройств, которое включает в себя первое электронное устройство и второе электронное устройство;
после определения того, что размер документа превышает порог:
создание на втором постоянном машиночитаемом носителе второго сервера, синхронизационного документа, который включает в себя по меньшей мере часть набора записей о правках в документе;
после получения запроса на синхронизацию от первого электронного устройства:
получение доступа к синхронизационному документу со второго постоянного машиночитаемого носителя;
передачу синхронизационного документа первому электронному устройству;
после получения указания на то, что синхронизация на первом электронном устройстве на основе синхронизационного документа была неудачной:
получение доступа к документу с первого постоянного машиночитаемого носителя; и
передачу документа первому электронному устройству.
[25] Другим объектом настоящего решения является постоянный машиночитаемый носитель, хранящий программные инструкции (машиночитаемые коды) для обработки документа в распределенной архитектуре, при этом программные инструкции выполняются процессором компьютерной системы для осуществления одного или нескольких упомянутых выше способов.
[26] Другим объектом настоящего решения является компьютерная система, например, без введения ограничений, электронное устройство, включающее в себя по меньшей мере один процессор и память, хранящую программные инструкции для обработки документа в распределенной архитектуре, при этом программные инструкции выполняются одним или несколькими процессорами компьютерной системы для осуществления одного или нескольких упомянутых выше способов.
[27] В контексте настоящего описания, если четко не указано иное, "электронное устройство", "сервер", "удаленный сервер" и "компьютерная система" подразумевают аппаратное и/или системное обеспечение, подходящее к решению соответствующей задачи. Таким образом, некоторые неограничивающие примеры аппаратного и/или программного обеспечения включают в себя компьютеры (серверы, настольные компьютеры, ноутбуки, нетбуки и так далее), смартфоны, планшеты, сетевое оборудование (маршрутизаторы, коммутаторы, шлюзы и т.д.) и/или их комбинацию.
[28] В контексте настоящего описания, если четко не указано иное, "машиночитаемый носитель" и "память" подразумевает под собой носитель абсолютно любого типа и характера, не ограничивающие примеры включают в себя ОЗУ, ПЗУ, диски (компакт диски, DVD-диски, дискеты, жесткие диски и т.д.), USB-ключи, флеш-карты, твердотельные накопители и накопители на магнитной ленте.
[29] В контексте настоящего описания, если четко не указано иное, "признак" информационного элемента может представлять собой сам информационный элемент или указатель, отсылку, ссылку или другой косвенный способ, позволяющий получателю указания найти сеть, память, базу данных или другой машиночитаемый носитель, из которого может быть извлечен информационный элемент. Например, признак файла может включать в себя сам файл (т.е. его содержимое), или же он может являться уникальным дескриптором файла, идентифицирующим файл по отношению к конкретной файловой системе, или каким-то другими средствами передавать получателю указание на сетевую папку, адрес памяти, таблицу в базе данных или другое место, в котором можно получить доступ к файлу. Как будет понятно специалистам, степень точности, необходимая для такого указания, зависит от степени первичного понимания того, как должна быть интерпретирована информация, которой обмениваются получатель и отправитель указателя. Например, если до установления связи между отправителем и получателем понятно, что признак информационного элемента принимает вид ключа базы данных для записи в конкретной таблице заранее установленной базы данных, содержащей информационный элемент, то передача ключа базы данных - это все, что необходимо для эффективной передачи информационного элемента получателю, несмотря на то, что информационный элемент не передавался между отправителем и получателем указания.
[30] В контексте настоящего описания, если конкретно не указано иное, слова «первый», «второй», «третий» и т.д. используются в виде прилагательных исключительно для того, чтобы отличать существительные, к которым они относятся, друг от друга, а не для целей описания какой-либо конкретной связи между этими существительными. Так, например, следует иметь в виду, что использование терминов "первый сервер" и "третий сервер" не подразумевает какого-либо порядка, отнесения к определенному типу, хронологии, иерархии или ранжирования (например) серверов/между серверами, равно как и их использование (само по себе) не предполагает, что некий "второй сервер" обязательно должен существовать в той или иной ситуации. В дальнейшем, как указано здесь в других контекстах, упоминание "первого" элемента и "второго" элемента не исключает возможности того, что это один и тот же фактический реальный элемент. Так, например, в некоторых случаях, "первый" сервер и "второй" сервер могут являться одним и тем же программным и/или аппаратным обеспечением, а в других случаях они могут являться разным программным и/или аппаратным обеспечением.
[31] Каждый вариант осуществления настоящего решения включает по меньшей мере одну из вышеупомянутых целей. Следует иметь в виду, что некоторые объекты данного решения, полученные в результате попыток достичь вышеупомянутой цели, могут удовлетворять другим целям, отдельно не указанным здесь.
[32] Дополнительные и/или альтернативные характеристики, аспекты и преимущества вариантов осуществления настоящего решения станут очевидными из последующего описания, прилагаемых чертежей и прилагаемой формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[33] Для лучшего понимания настоящего решения, а также других его аспектов и характерных черт сделана ссылка на следующее описание, которое должно использоваться в сочетании с прилагаемыми чертежами, где:
[34] На Фиг. 1 представлена схема компьютерной системы, которая подходит для реализации настоящего решения, и/или которая используется в сочетании с вариантами осуществления настоящего решения;
[35] На Фиг. 2 представлена схема сетевой вычислительной среды, выполненной в соответствии с вариантом осуществления настоящего решения;
[36] На Фиг. 3 показана схема, представляющая документ и синхронизационный документ в соответствии с вариантом осуществления настоящего решения;
[37] На Фиг. 4 представлена блок-схема, отображающая первый исполняемый на компьютере способ, являющийся вариантом осуществления настоящего решения;
[38] На Фиг. 5 представлена блок-схема, отображающая второй исполняемый на компьютере способ, являющийся вариантом осуществления настоящего решения; и
[39] На Фиг. 6 представлена блок-схема, отображающая третий исполняемый на компьютере способ, являющийся вариантом осуществления настоящего решения.
[40] Также следует отметить, что чертежи выполнены не в масштабе, если не специально указано иное.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[41] Все примеры и используемые здесь условные конструкции предназначены, главным образом, для того, чтобы помочь читателю понять принципы настоящего решения, а не для установления границ его объема. Следует также отметить, что специалисты в данной области техники могут разработать различные схемы, отдельно не описанные и не показанные здесь, но которые, тем не менее, воплощают собой принципы настоящего решения и находятся в границах его объема.
[42] Кроме того, для ясности в понимании, следующее описание касается достаточно упрощенных вариантов осуществления. Как будет понятно специалисту в данной области, многие варианты осуществления будут обладать большей сложностью.
[43] Некоторые полезные примеры модификаций настоящего решения также могут быть охвачены нижеследующим описанием. Целью этого является исключительно помощь в понимании, а не определение объема и границ настоящего решения. Эти модификации не представляют собой исчерпывающего списка, и специалисты в данной области техники могут создавать другие модификации, остающиеся в границах объема настоящего решения. Кроме того, те случаи, где не были представлены примеры модификаций, не должны интерпретироваться как то, что никакие модификации невозможны, и/или что то, что было описано, является единственным вариантом осуществления этого элемента.
[44] Более того, все заявленные здесь принципы, аспекты и варианты осуществления, равно как и конкретные их примеры, предназначены для обозначения их структурных и функциональных основ. Таким образом, например, специалистами в данной области техники будет очевидно, что представленные здесь блок-схемы представляют собой концептуальные иллюстративные схемы, отражающие принципы настоящего решения. Аналогично, любые блок-схемы, диаграммы переходного состояния, псевдокоды и т.п. представляют собой различные процессы, которые могут быть представлены на машиночитаемом носителе и, таким образом, использоваться компьютером или процессором, вне зависимости от того, показан явно подобный компьютер или процессор или нет.
[45] Функции различных элементов, показанных на фигурах, включая функциональный блок, обозначенный как "процессор" или "графический процессор", могут быть обеспечены с помощью специализированного аппаратного обеспечения или же аппаратного обеспечения, способного использовать подходящее программное обеспечение. Когда речь идет о процессоре, функции могут обеспечиваться одним специализированным процессором, одним общим процессором или множеством индивидуальных процессоров, причем некоторые из них могут являться общими. В некоторых вариантах осуществления процессор может являться универсальным процессором, например, центральным процессором (CPU) или специализированным для конкретной цели процессором, например, графическим процессором (GPU). Более того, использование термина "процессор" или "контроллер" не должно подразумевать исключительно аппаратное обеспечение, способное поддерживать работу программного обеспечения, и может включать в себя, без установления ограничений, цифровой сигнальный процессор (DSP), сетевой процессор, интегральную схему специального назначения (ASIC), программируемую пользователем вентильную матрицу (FPGA), постоянное запоминающее устройство (ПЗУ) для хранения программного обеспечения, оперативное запоминающее устройство (ОЗУ) и энергонезависимое запоминающее устройство. Также может быть включено другое аппаратное обеспечение, обычное и/или специальное.
[46] Программные модули или простые модули, представляющие собой программное обеспечение, которое может быть использовано здесь в комбинации с элементами блок-схемы или другими элементами, которые указывают на выполнение этапов процесса и/или текстовое описание. Подобные модели могут быть выполнены на аппаратном обеспечении, показанном напрямую или косвенно.
[47] С учетом этих примечаний, далее будут рассмотрены некоторые не ограничивающие варианты осуществления настоящего решения.
[48] На Фиг. 1 представлена схема компьютерной системы 100, которая подходит для некоторых вариантов осуществления, компьютерная система 100 включает в себя различные аппаратные компоненты, включая один или несколько одно- или многоядерных процессоров, которые представлены процессором 110, графический процессор (GPU) 111, твердотельный накопитель 120, ОЗУ 130, интерфейс 140 монитора, и интерфейс 150 ввода/вывода.
[49] Связь между различными компонентами компьютерной системы 100 может осуществляться с помощью одной или несколько внутренних и/или внешних шин 160 (например, шины PCI, универсальной последовательной шины, высокоскоростной шины IEEE 1394, шины SCSI, шины Serial ATA и так далее), с которыми электронно соединены различные аппаратные компоненты. Интерфейс 140 монитора может быть соединен с монитором 142 (например, через HDMI-кабель 144), видимый пользователю 170, интерфейс 150 ввода/вывода может быть соединен с сенсорным экраном (не показан), клавиатурой 151 (например, через USB-кабель 153) и мышью 152 (например, через USB-кабель 154), как клавиатура 151, так и мышь 152 используются пользователем 170.
[50] В соответствии с вариантами осуществления настоящего решения твердотельный накопитель 120 хранит программные команды, подходящие для загрузки в ОЗУ 130, и использующиеся процессором 110 и/или графическим процессором GPU 111 для создания тепловой карты. Например, программные инструкции могут представлять собой часть библиотеки или приложения.
[51] На Фиг. 2 показана сетевая вычислительная среда 200, подходящая для использования в сочетании с некоторыми вариантами осуществления настоящего решения, сетевая вычислительная среда 200 включает в себя документный сервер 210 (также упоминаемый как "удаленный сервер" или как "сервер"), документную базу 212 данных, синхронизационную документную базу 214 данных, электронные устройства 232, 234, 236 (также упоминаемые как "клиентские устройства", "электронные устройства" или "электронные устройства, связанные с пользователями"), соединенные с документным сервером 210 через сеть 220 (например, Интернет), что позволяет системам связываться друг с другом.
[52] Варианты осуществления электронных устройств 232, 234, 236 никак конкретно не ограничены, но, в качестве примера, электронные устройства 232, 234, 236 могут взаимодействовать с сервером 212 документов, получая ввод от пользователей и получая и передавая данные через сеть 220. В некоторых вариантах осуществления, каждое из этих электронных устройств 232, 234 и 236 связано с конкретным пользователем. В некоторых других вариантах осуществления, каждое из этих электронных устройств 232, 234 и 236 связано со множеством пользователей. В некоторых других вариантах осуществления, каждое из этих электронных устройств 232, 234 и 236 связано с одним и тем же пользователем. Электронные устройства 232, 234, 236 могут, в качестве неограничивающего примера, представлять собой настольный компьютер, ноутбук, смартфон (например, Apple iPhone или Samsung Galaxy S5), персональный цифровой помощник (PDA) или другое устройство, включающее в себя функциональность вычисления и возможности коммуникации. В некоторых вариантах осуществления, электронное устройство 232 может представлять собой первое мобильное устройство, электронное устройство 234 может представлять собой второе мобильное устройство и электронное устройство 236 может представлять собой настольный компьютер. Каждое из электронных устройств 232, 234, 236 связано с одним и тем же пользователем, который может полагаться на настоящее решение в том, что один или несколько документов, находящихся в совместном использовании электронных устройств 232, 234, 236, будут синхронизированы. Электронные устройства 232, 234, 236 могут включать в себя внутренние аппаратные компоненты, такие как один или несколько многоядерных процессоров, которые представлены на чертеже в виде процессора 110, графического процессора GPU 111, твердотельный накопитель 120 и ОЗУ 130, каждый компонент является аналогом к соответственно пронумерованным компонентам компьютерной системы 100, показанным на Фиг. 1, а также сетевого интерфейса (не показан) для связи с документным сервером 210.
[53] В одном варианте осуществления, электронные устройства 232, 234, 236 обладают браузерным приложением, которое обладает доступом к клиентскому коду локально и/или от документного сервера 210. Клиентский код во время работы на электронном устройстве 232, 234, 236 позволяет получить доступ к документному серверу 210 для получения документа и/или синхронизационного документа, восстановить и/или открыть документ локально и отобразить документ в окне веб-браузера. В некоторых вариантах осуществления, одно из электронных устройств 232, 234, 236 обладает предыдущей версией документа, которая уже хранится в памяти (например, на твердотельном накопителе 120 и/или в ОЗУ 120), в этом случае клиентский код, исполняемый на одном из электронных устройств 232, 234, 236 может запрашивать синхронизационный документ (а не документ полностью) для восстановления последней версии документа. В альтернативном варианте осуществления, если клиентский код определяет, что предыдущая версия документа отсутствует в памяти, клиентский код может запрашивать документ (а не синхронизационный документ). В некоторых вариантах осуществления, клиентский код может также быть выполнен с возможностью получать ввод пользователя, указывающий на изменения в документе, который поступает с одного или нескольких электронных устройств 232, 234, 236. Клиентский код также может быть выполнен с возможностью передавать правки документному серверу 210, на котором исполняется код документного сервера, и модифицировать документ и/или синхронизационный документ в соответствии с внесенными правками.
[54] В одном варианте осуществления, между электронными устройствами 232, 234, 236 и документным сервером 210 может быть установлен канал передачи данных, чтобы обеспечить возможность обмена данными. Подобный обмен данными может происходить на постоянной основе или, альтернативно, при наступлении конкретных событий. Например, обмен данными может происходить в результате того, что пользователь одного из электронных устройств 232, 234, 236 запрашивает открытие документа и получает, в ответ, данные, связанные с документом и/или синхронизационным документом. В качестве другого примера, обмен данными может возникнуть в том случае, когда пользователь одного из электронных устройств 232, 234, 236 редактирует документ, и данные, отражающие изменения, передаются документному серверу 210, который может, в ответ, предавать данные, отражающие изменения, другим из электронных устройств 232, 234, 236. Другие варианты обмена данными между электронными устройствами 232, 234, 236 также возможны и будут понятны специалистам в данной области техники.
[55] После получение одним из электронных устройств 232, 234, 236 данных, которые относятся к документу и/или синхронизационному документу, могут быть сохранены в памяти одного из электронных устройств 232, 234, 236 для мгновенной или последующей обработки, например, процессором 110 одного из электронных устройств 232, 234, 236. Инструкции о проведении обработки данных могут быть выполнены с помощью клиентского кода, который содержит модуль программного обеспечения, управляемого интерфейсом визуализации. Или же программный модуль может управляться независимо от интерфейса визуализации (например, он может управляться операционной системой одного из электронных устройств 232, 234, 236). В других вариантах осуществления команда произвести обработку может быть осуществлена с помощью специализированного модуля (программного и/или аппаратного обеспечения) или неспециализированным модулем (программного и/или аппаратного обеспечения) в пределах объема настоящего решения.
[56] Как будет описано подробней в следующих параграфах, обработка данных, связанных с документом и/или синхронизационным документом, направлена на представление последней версии документа пользователю, связанному с устройствами 232, 234, 236. Дополнительные подробности того, как именно данные обрабатываются, будут описаны в отношении Фиг. 3 - Фиг. 6.
[57] Реализация модуля программного обеспечения и интерфейса визуализации никак конкретно не ограничена. Одним из примеров модуля программного обеспечения и интерфейса визуализации может быть получение доступа пользователем к веб-сайту, связанному с документным сервером 210 с помощью клиента веб-браузера, запущенного на электронных устройствах 232, 234, 236. Например, интерфейс визуализации может быть доступен путем ввода URL, связанного с веб-сервисом Яндекс.Диск, доступном по адресу https://disk.yandex.com. В другом примере интерфейс визуализации может быть осуществлен как программное приложение (также указывается как "приложение") для установки на электронные устройства 232, 234,236. Например, приложение, осуществляющее интерфейс визуализации может быть загружено путем ввода URL, связанного магазином приложений, откуда приложения могут быть загружены. Например, приложение Яндекс.Диск доступно для загрузки в Яндекс.Store, компания Яндекс, Россия, 119021, Москва, ул. Льва Толстого, 16 или в магазине приложений Apple, компания Apple Inc., 1 Infinite Loop, Cupertino, CA 95014, США. Важно иметь в виду, что интерфейс визуализации может быть доступен с использованием других коммерчески доступных или собственных веб-сервисов.
[58] Электронные устройства 232, 234, 236 соединены с сетью 220 через линию передачи данных (не пронумерована). В некоторых вариантах осуществления, не ограничивающих объем решения, сеть может представлять собой Интернет. В других вариантах осуществления сеть 220 может быть реализована иначе - в виде глобальной сети передачи данных, локальной, частной сети передачи данных и т.п.
[59] Реализация линии передачи данных не ограничена, и будет зависеть от того, как реализованы электронные устройства 232, 234, 236. В качестве примера (но не ограничения) в тех вариантах осуществления, когда электронные устройства 232, 234, 236 представляют собой беспроводное устройство связи (например, смартфон), линия передачи данных представляет собой беспроводную сеть передачи данных (например, среди прочего, линия передачи данных 3G, линия передачи данных 4G, беспроводной интернет Wireless Fidelity или WiFi, Bluetooth и т.п.). В тех примерах, где электронные устройства 232, 234, 236 представляют собой портативный компьютер, линия передачи данных может быть как беспроводной (беспроводной интернет Wireless Fidelity или WiFi, Bluetooth и т.п.) так и проводной (соединение на основе сети Ethernet).
[60] Важно иметь в виду, что варианты реализации электронных устройств 232, 234, 236, линия передачи данных и сеть 220 даны исключительно для наглядности. Таким образом, специалисты в данной области техники смогут понять подробности других конкретных вариантов осуществления электронных устройств 232, 234, 236, линии передачи данных и сети 220. То есть, представленные здесь примеры не ограничивают объем настоящего решения.
[61] Также соединен с сетью 220 документный сервер 210, на котором может находиться веб-сервис для обработки и хранения документа и синхронизационного документа. Документный сервер 210 может представлять собой обычный компьютерный сервер. В примере варианта осуществления, документный сервер 210 может представлять собой сервер Dell PowerEdge, на котором используется операционная система Microsoft Windows Server. Излишне говорить, что документный сервер 210 может представлять собой любое другое подходящее аппаратное и/или прикладное программное, и/или системное программное обеспечение или их комбинацию. В представленном варианте осуществления, не ограничивающем объем решения, документный сервер 210 является одиночным сервером. В других вариантах осуществления, не ограничивающих объем решения, функциональность сервера 210 может быть разделена, и может выполняться с помощью нескольких серверов.
[62] Варианты осуществления документного сервера 210 широко известны среди специалистов в данной области техники. Тем не менее, вкратце, документный сервер 210 содержит интерфейс связи (не показан), который настроен и выполнен с возможностью устанавливать соединение с различными элементами (например, электронными устройствами 232, 234, 236 и другими устройствами, потенциально соединенные с сетью 220) через сеть 220. Документный сервер 210 веб-почты дополнительно включает в себя одно или несколько из следующего: компьютерный процессор (не показан), функционально соединенный с интерфейсом связи и настроенный и выполненный с возможностью выполнять различные процессы, описанные здесь.
[63] Основной целью документного сервера 210 является обработка документа в распределенной архитектуре, например, в представленной на Фиг. 2. Далее следует описание варианта осуществления документного сервера 210, не ограничивающего объем решения. Тем не менее, следует иметь в виду, что существуют другие варианты осуществления документного сервера 210, не ограничивающие объем решения. Важно иметь в виду, что для упрощения нижеследующего описания конфигурация документного сервера 210 была сильно упрощена. Считается, что специалисты в данной области техники смогут понять подробности реализации документного сервера 210 и его компонентов, которые могли быть опущены в описании с целью упрощения.
[64] Документный сервер 210 может быть функционально связан с сервером (или иначе обладать доступом к нему), который реализует механизм (не показан), позволяющий передавать клиентский код и/или документ и/или синхронизационный документ электронным устройства 232, 234, 236. В некоторых вариантах осуществления, внешний сервер может быть выполнен с возможностью управлять последовательными версиями документа. Внешний сервер также может быть выполнен с возможностью получать правку от клиентского кода, исполняемого на одном из электронных устройств 232, 234, 236. Внешний сервер может также быть выполнен с возможностью определять подходящее обновление для нескольких клиентских кодов, исполняемых на электронных устройствах 232, 234, 236, и передавать это подходящее обновление электронным устройствам 232, 234, 236. Дальнейшие подробности того, как документный сервер 210 и электронные устройства 232, 234, 236 взаимодействуют друг с другом, будут описаны в отношении Фиг. 3 - Фиг. 6.
[65] Документный сервер 210 может также быть функционально соединен (или иным образом иметь доступ) с документной базой 212 данных и/или синхронизационной базой 214 данных. Таким образом, документный сервер 210 может также упоминаться как "документный сервер" или "синхронизационный документный сервер" или "сервер данных". Хотя документный сервер 210 изображен как одиночный блок, в некоторых вариантах осуществления, функциональность документного сервера 210 может быть разделена и реализована как множество серверов в пределах объема настоящего решения. В некоторых вариантах осуществления, документная база 212 данных и/или база 214 данных синхронизации могут быть расположены на документном сервере 210. В некоторых вариантах, первый сервер, расположенный на документном сервере 210, может управлять доступом к документной базе 212 данных, а второй сервер, расположенный на документом сервере 210, может управлять доступом к синхронизационной документной базе 214 данных. В некоторых вариантах, первый сервер и второй сервер является одним и тем же сервером, который управляет доступом к обеим документной базе 212 данных и синхронизационной документной базе 214 данных. В некоторых других вариантах осуществления, первый сервер и второй сервер включены в функциональность единого сервера (например, внешнего сервера), расположенного на документном сервере 210. В некоторых других вариантах осуществления, каждый из первого сервера и второго сервера может быть расположен на отдельном сервере. Различные вариации, не выходящие за пределы настоящего решения, возможны и будут понятны специалисту в данной области техники.
[66] В некоторых вариантах осуществления, документная база 212 данных может хранить один или несколько документов, созданных одним из пользователей. Один или несколько документов могут включать в себя, например, без установки границ, текстовые документы, таблицы, презентации, изображения. В некоторых вариантах осуществления, один или несколько документов могут включать в себя мультимедийные документы, например, аудио и/или видео документы. Один или несколько документов могут быть связаны с множеством форматов, например, ".doc" или ".docx", совместимые с программой Microsoft Word, ".xls" или ".xlsx", совместимые с программой Microsoft Excel, ".ppt" или ".pptx", совместимые с программой Microsoft PowerPoint. Как может быть понятно специалистам в данной области, может быть предусмотрено множество типов документов и/или форматов документов, не выходящих за границы настоящего решения. В некоторых вариантах осуществления, документная база 212 данных направлена на сохранение документа целиком в относительно постоянной форме. В результате, в некоторых вариантах осуществления, память, в которой размещена документная база 212 данных, может быть выбрана на основе ее способности обеспечить долговременное хранение документа за счет скорости доступа. В некоторых вариантах осуществления, память может быть твердотельным накопителем, аналогичным твердотельному накопителю 120, представленному на Фиг. 1. Несмотря на то что была сделана ссылка на документную базу "212" данных, термин "база данных" не должен считаться ограничивающим. Напротив, термин "база данных" следует считать охватывающим, без установления каких-либо ограничений, любое хранилище и/или репозиторий, в котором может храниться документ, независимо от конкретной структуры данных. Возможны и другие варианты, которые будут очевидны специалистам в данной области техники, их использование не выходит за границы настоящего решения.
[67] Один или несколько документов, хранящихся в документной базе 212 данных, могут принимать различные формы. В некоторых вариантах осуществления, один или несколько документов могут включать в себя часть содержимого и набор записей о правках. В некоторых вариантах осуществления, часть содержимого может включать в себя набор записей о правках. В некоторых вариантах осуществления, один или несколько документов могут включать в себя журнальную структуру, и каждая запись в журнальной структуре отражает правку, сделанную одним или несколькими пользователями, и позволяет восстановить последнюю версию документа. В некоторых вариантах осуществления, часть содержимого может включать в себя версию документа на определенный момент времени, включающую запись о правках, которая позволяет восстановить предыдущие версии документов, до определенного момента времени. В некоторых вариантах осуществления, набор записей о правках может включать в себя скользящее подмножество предыдущих записей и/или прошлых правок, позволяющих восстановить по меньшей мере некоторые предыдущие версии документов, когда скользящее подмножество объединяется с частью содержимого документа. Как может быть понятно специалистам в данной области, предусмотрено множество вариантов, не выходящих за границы настоящего решения.
[68] В некоторых вариантах осуществления, синхронизационная документная база 214 данных может хранить один или несколько синхронизационных документов, являющихся результатом создания документа и/или правок, сделанных в ранее существующем документе одним или несколькими пользователями. Один или несколько синхронизационных документов могут включать в себя подмножество документов, к которым они относятся. В некоторых вариантах осуществления, синхронизационная документная база 214 данных нацелена на сохранение подмножества записей о правках в документе. В некоторых вариантах осуществления, подмножество записей о правках может быть частью документа. В некоторых других вариантах осуществления, подмножество записей о правках может быть сериями записей, которые позволяют восстановить версию документа, при объединении с предыдущей версией документа. Как будет понятно специалисту в данной области техники, подмножество записей о правках может позволить восстановить последнюю версию документа на электронном устройстве, которое обладает доступом, в своей локальной памяти, к предыдущей версии документа, без необходимости запрашивать у документного сервера 210 передачу последней версии документа целиком электронному устройству. В некоторых вариантах осуществления, передачи подмножества записей о правках может быть достаточно. В результате, в некоторых вариантах осуществления, память, в которой размещена синхронизационная документная база 214 данных, может быть выбрана на основе ее способности обеспечить быструю скорость доступа и быструю передачу с документного сервера 210 одному или нескольким электронным устройствам 232, 234 и 236 без необходимости обеспечивать долговременное хранение. В некоторых вариантах осуществления, память может быть ОЗУ, аналогичным ОЗУ 130, представленному на Фиг. 1. Несмотря на то что была сделана ссылка на синхронизационную документную базу "214" данных, термин "база данных" не должен считаться ограничивающим. Напротив, термин "база данных" следует считать охватывающим, без установления каких-либо ограничений, любое хранилище и/или репозиторий, в котором может храниться синхронизационный документ, независимо от конкретной структуры данных. Возможны и другие варианты, которые будут очевидны специалистам в данной области техники, их использование не выходит за границы настоящего решения.
[69] Один или несколько синхронизационных документов, хранящихся в синхронизационной документной базе 214 данных, могут принимать различные формы. В некоторых вариантах осуществления, один или несколько синхронизационных документов могут включать в себя набор записей о правках, отражающий предыдущие правки, которые были сделаны одним или несколькими пользователями. В некоторых вариантах осуществления, один или несколько документов могут включать в себя журнальную структуру, и каждая запись в журнальной структуре отражает правку, сделанную одним или несколькими пользователями, и позволяет восстановить последнюю версию документа.
[70] В некоторых вариантах осуществления, набор записей о правках может включать в себя скользящее подмножество записей и/или правок, позволяющих восстановить по меньшей мере некоторые предыдущие версии документов, когда скользящее подмножество объединяется с предыдущей версией документа. В некоторых вариантах осуществления, подобное скользящее подмножество обладает заранее определенным размером, который может быть определен на основе числа записей и/или числа логов и/или размера блока памяти (например, заранее заданное число октетов). В некоторых вариантах осуществления, набор правок может включать в себя заранее определенное число записей, хранящихся в соответствии с методом обратной очередности (FIFO), т.е. включает в себя заранее определенное число последних правок, сделанных в документе. Другими словами, набор правок может включать в себя n последних изменений в документе, причем n может быть числом записей в лог-файле (т.е. число строк, число символов, число блоков памяти). В рамках подобного варианта осуществления, если электронное устройство получает набор правок, и способно восстановить последнюю версию документа путем объединения набора правок с предыдущей версией документа, которая хранится в памяти, тогда единственная передача, которая возникнет между документным сервером 210 и электронным устройством, это передача набора правок. Для тех случаев, когда набор правок не позволяет электронному устройству восстановить последнюю версию документа (например, число правок, сделанных с момента предыдущей версии, хранящейся на электронном устройстве, превышает число правок, которые могут храниться на синхронизационном документе), документ целиком может быть доступен в документной базе 210 и передан с документного сервера 210 электронному устройству. Определение того, будет ли документ и/или синхронизационный документ передан одному из электронных устройств 232, 234, 236, может быть осуществлено документным сервером 210, одним или несколькими электронными устройствами 232, 234, 236 или комбинацией того и другого. Как может быть понятно специалистам в данной области, предусмотрено множество вариантов, не выходящих за границы настоящего решения.
[71] Далее, на Фиг. 3 представлена схема, представляющая документ и синхронизационный документ в соответствии с вариантом осуществления настоящего решения. Представленный документ относится к текстовому документу, связанному пользователем, который связан с электронным устройством 232. Документ 320 создан пользователем, который связан с электронным устройством 232 путем получения доступа к документному серверу 210 и запроса создания нового документа, находящегося в общем пользовании. В результате запроса, инициированного электронным устройством 232, документный сервер 210 создает документ 310. Документ 310 может храниться в документной базе 212 данных. Параллельно с созданием документа 310, создается документ 230 в памяти электронного устройства 232. Документ 320 изменяется пользователем, связанным с электронным устройством 232, и правки передаются электронным устройством 232 документному серверу 210. Документный сервер 210 соответственно обновляет документ 310, одновременно отслеживая размер документа 310. При определении того, что документ 310 достигает конкретного размера, документный сервер 210 создает синхронизационный документ 312. Синхронизационный документ 312 может храниться в синхронизационной документной базе 214 данных. В примере, показанном на Фиг. 3 синхронизационный документ 312 определен таким образом, что он является скользящим подмножеством записей о правках, включающим в себя две последние строки документа. В результате, в примере, показанном на Фиг. 3, синхронизационный документ 312 содержит две последние строки документа 310.
[72] Также на Фиг. 3 представлена правка 340, включающая в себя одну строку текста, и переданная от электронного устройства 232 документному серверу 210. После получения документным сервером 210, правка 340 обрабатывается для обновления документа 310 и синхронизационного документа 312. Документный сервер 310 может получать запрос на синхронизацию от электронного устройства 234, связанного с тем же пользователем или другим пользователем, отличным от пользователя, связанного с электронным устройством 232. Электронное устройство 234 в момент отправки запроса на синхронизацию документному серверу 210 обладает предыдущей версией документа 330, хранящегося в его памяти, которая соответствует предыдущей версии документа 310. После получения запроса на синхронизацию от электронного устройства 234 документный сервер 210 может получать доступ к синхронизационной базе 214 данных для извлечения синхронизационного документа 312 и передачи синхронизационного документа 312 электронному устройству 234 через пакет 350 данных, включающий в себя синхронизационный документ 312. После получения, электронное устройство 234 может объединять синхронизационный документ 312 и предыдущую версию документа 330 для создания последней версии документа, соответствующей документу 310. В некоторых вариантах осуществления, с учетом того, что синхронизационный документ 312 не позволяет создать последнюю версию документа, документный сервер 310 и/или электронное устройство 234 может инициировать отправку документа 310 (т.е. документа целиком).
[73] Как будет понятно специалистам в данной области техники, подход, изображенный на Фиг. 3, может уменьшить объект данных, которые передаются между документным сервером 210 и электронным устройством 234 после синхронизации документного сервера 210 и электронного устройства 234; и улучшить пользовательский опыт путем уменьшения объема времени, которое необходимо электронному устройству 234, чтобы представлять документ пользователю, связанному с электронным устройством 234. Для ситуаций, в которых синхронизационный документ не позволяет создать последнюю версию документа, настоящее решение также может предоставлять механизм, который позволяет документному серверу 210 передавать документ целиком для того, чтобы электронное устройство 234 могло предоставить последнюю версию документа пользователю, связанному с электронным устройством 234. Как будет понятно специалистам в данной области техники, пример, изображенный на Фиг. 3, не следует воспринимать как ограничивающий, и многие другие варианты осуществления, не выходящие за пределы объема настоящего решения, будут понятны специалистам в данной области техники.
[74] Со ссылками на Фиг. 1 - Фиг. 3, были описаны некоторые не ограничивающие примеры систем и компьютерных способов, используемые в связи с проблемой обработки документа в распределенной архитектуре, далее следует описание общего решения этой проблемы со ссылкой на Фиг. 4 - Фиг. 6.
[75] Конкретнее, на Фиг. 4 представлена блок-схема, отображающая первый исполняемый на компьютере способ 400, являющийся вариантом настоящего решения. Исполняемый на компьютере способ, представленный на Фиг. 4, может включать в себя выполняемый на компьютере способ, реализуемый процессором документного сервера 210 и/или процессором одного или нескольких из электронных устройств 232, 234, 236, способ включает в себя серии этапов, выполняемых документным сервером 210 и/или одним или несколькими из электронных устройств 232.
[76] Исполняемый на компьютере способ, представленный на Фиг. 4, может быть осуществлен, например, в случае документного сервера 210, процессором 110, выполняющими программные инструкции (машиночитаемые коды), загруженные в ОЗУ 130 с твердотельного накопителя 120 документного сервера 210.
[77] Способ 400 начинается на этапе 402, когда осуществляется получение доступа от первого постоянного машиночитаемого носителя первого сервера к документу, который включает в себя часть содержимого и набор записей о правках, причем документ доступен множеству электронных устройств, которое включает в себя первое электронное устройство и второе электронное устройство.
[78] В некоторых вариантах осуществления, часть содержимого является первым набором записей о правке, а набор записей о правке является вторым набором записей о правке. В некоторых других вариантах осуществления, первый набор записей о правке и второй набор записей о правке указывают по меньшей мере на одно из: знаки, которые необходимо добавить или знаки, которые необходимо удалить в результате взаимодействия пользователя с одним из первого или второго электронных устройств. В некоторых вариантах осуществления, часть содержимого или набор записей о правках обладает журнальной структурой.
[79] Способ 400 переходит к этапу 404 путем осуществления поддержки на втором постоянном машиночитаемом носителе второго сервера, синхронизационного документа, который включает в себя по меньшей мере часть набора записей о правках в документе. В некоторых вариантах, синхронизационный документ включает в себя скользящее подмножество предыдущих правок, которые были сделаны в документе. В некоторых вариантах осуществления, после определения того, что документ достигает порогового значения, способ может создавать во втором постоянном машиночитаемом носителе второго сервера, синхронизационного документа на основе по меньшей мере одного из части содержимого и набора записей о правке документа. В некоторых вариантах осуществления, определение того, что документ превышает пороговое значение, включает в себя по меньшей мере одно из: определение того, что документ превышает заранее определенное число записей в журнале, или определение того, что документ превышает заранее определенный размер, выраженный в блоке памяти.
[80] В некоторых вариантах осуществления первый постоянный машиночитаемый носитель первого сервера является долговременным постоянным машиночитаемым носителем для долговременного хранения. В некоторых вариантах осуществления, второй постоянный машиночитаемый носитель второго сервера является кратковременным постоянным машиночитаемым носителем для кратковременного хранения, который обладает более высокой скоростью доступа к памяти первого постоянного машиночитаемого носителя первого сервера.
[81] Способ 400 может переходить к этапу 406 путем осуществления, после получения запроса на синхронизацию от первого электронного устройства, этапов 408 и 410. На этапе 408, способ 400 может получать доступ к синхронизационному документу от второго постоянного машиночитаемого носителя. На этапе 410 способ 400 может передавать синхронизационный документ первому электронному устройству.
[82] Способ 400 также может включать в себя этап 412 путем осуществления, при получении указания на то, что синхронизация на первом электронном устройстве на основе синхронизационного документа была неудачной, этапов 414 и 416. На этапе 414, способ 400 может получать доступ к документу от первого постоянного машиночитаемого носителя. На этапе 416 способ 400 может передавать документ первому электронному устройству.
[83] В некоторых вариантах осуществления, способ 400 может дополнительно включать в себя, после получения первой новой записи о правке от первого электронного устройства: добавление первой новой записи о правке в документ, хранящийся на первом постоянном машиночитаемом носителе; и добавление первой новой записи о правке в синхронизационный документ, хранящийся на втором постоянном машиночитаемом носителе.
[84] Способ 400 может также дополнительно включать в себя, после получения первой новой записи о правке, связанной с первой версией документа от первого электронного устройства, и второй новой записи о правке, связанной с первой версией документа от второго электронного устройства: получение доступа по меньшей мере к одному из документу из первого постоянного машиночитаемого носителя или синхронизационному документу из второго постоянного машиночитаемого носителя; и создание новой объединенной записи о правке на основе по меньшей мере одной из первой новой записи о правке или второй новой записи о правке, документа и синхронизационного документа.
[85] Способ 400 может дополнительно включать добавление новой объединенной записи о правке в документ, хранящийся на первом постоянном машиночитаемом носителе; и добавление новой объединенной записи о правке в синхронизационный документ, хранящийся на втором постоянном машиночитаемом носителе.
[86] В некоторых вариантах осуществления, указание на то, что синхронизация была неудачной, далее включает в себя определение первым электронным устройством того, что синхронизационный документ не обеспечивает правильную синхронизацию между локальным содержимым, хранящимся в постоянном машиночитаемом носителе первого электронного устройства, и синхронизационным документом.
[87] В некоторых вариантах осуществления, определение первым электронным устройством, что синхронизационный документ не обеспечивает правильную синхронизацию, включает в себя определение того, что синхронизационный документ не содержит по меньшей мере некоторые данные, которые необходимы для создания локальной версии документа, хранящейся в постоянном машиночитаемом носителе первого электронного устройства, локальная версия документа является зеркальным изображением документа, хранящимся в первом постоянном машиночитаемом носителе первого сервера.
[88] Далее, на Фиг. 5 представлена блок-схема, отображающая второй исполняемый на компьютере способ 500, являющийся вариантом осуществления настоящего решения. Исполняемый на компьютере способ, представленный на Фиг. 5, может включать в себя выполняемый на компьютере способ, реализуемый процессором документного сервера 210 и/или процессором одного или нескольких из электронных устройств 232, 234, 236, способ включает в себя серии этапов, выполняемых документным сервером 210 и/или одним или несколькими из электронных устройств 232. Как будет понятно специалисту в данной области техники, серии этапов, которые определяют способ 500, могут быть объединены по меньшей мере с некоторыми из этапов способа 400, не выходя за границы объема настоящего решения.
[89] Исполняемый на компьютере способ, представленный на Фиг. 5, может быть осуществлен, например, в случае документного сервера 210, процессором 110, выполняющими программные инструкции (машиночитаемые коды), загруженные в ОЗУ 130 с твердотельного накопителя 120 документного сервера 210.
[90] Способ 500 начинается на этапе 502, когда осуществляется получение доступа от первого постоянного машиночитаемого носителя первого сервера к документу, который включает в себя часть содержимого и набор записей о правках, причем документ доступен множеству электронных устройств, которое включает в себя первое и второе электронные устройства. Способ далее может переходить к этапу 504 путем осуществления поддержки на втором постоянном машиночитаемом носителе второго сервера, синхронизационного документа, который включает в себя по меньшей мере часть набора записей о правках в документе.
[91] На этапе 506 способ 500 может выполнять, после получения запроса на синхронизацию от первого электронного устройства, этапы 508, 510 и 512. Этап 508 может включать получение доступа к синхронизационному документу от второго постоянного машиночитаемого носителя. Этап 510 может включать, после определения того, что синхронизационный документ обеспечивает правильную синхронизацию для первого электронного устройства, передачу синхронизационного документа первому электронному устройству. Этап 512 может выполнять, после определения того, что синхронизационный документ не обеспечивает правильную синхронизацию для первого электронного устройства, этапы 514 и 516. Этап 514 может включать в себя получение доступа к синхронизационному документу от первого постоянного машиночитаемого носителя. Этап 516 может включать в себя передачу документа первому электронному устройству.
[92] Далее, на Фиг. 6 представлена блок-схема, отображающая третий исполняемый на компьютере способ 600, являющийся вариантом осуществления настоящего решения. Исполняемый на компьютере способ, представленный на Фиг. 6, может включать в себя выполняемый на компьютере способ, реализуемый процессором документного сервера 210 и/или процессором одного или нескольких из электронных устройств 232, 234, 236, способ включает в себя серии этапов, выполняемых документным сервером 210 и/или одним или несколькими из электронных устройств 232. Как будет понятно специалисту в данной области техники, серии этапов, которые определяют способ 600, могут быть объединены по меньшей мере с некоторыми из этапов способа 400 и/или способа 500, не выходя за границы настоящего решения.
[93] Исполняемый на компьютере способ, представленный на Фиг. 6, может быть осуществлен, например, в случае документного сервера 210, процессором 110, выполняющими программные инструкции (машиночитаемые коды), загруженные в ОЗУ 130 с твердотельного накопителя 120 документного сервера 210.
[94] Способ 600 начинается на этапе 602, когда осуществляется получение доступа от первого постоянного машиночитаемого носителя первого сервера к документу, который включает в себя часть содержимого и набор записей о правках, причем документ доступен множеству электронных устройств, которое включает в себя первое электронное устройство и второе электронное устройство. На этапе 604, после определения того, что размер документ превышает порог, способ 600 может выполнять этап 606. Этап 606 включает в себя создание на втором постоянном машиночитаемом носителе второго сервера, синхронизационного документа, который включает в себя по меньшей мере часть набора записей о правках в документе.
[95] Далее, на этапе 608 способ 600 может включать в себя, после получения запроса на синхронизацию от первого электронного устройства, выполнение этапов 610 и 612. Этап 610 может включать в себя получение доступа к синхронизационному документу от второго постоянного машиночитаемого носителя. Этап 612 может включать в себя передачу синхронизационного документа первому электронному устройству.
[96] На этапе 614 способ 600 может включать в себя, после получения указания на то, что синхронизация на первом электронном устройстве на основе синхронизационного документа была неудачной, выполнение этапов 616 и 618. Этап 616 может включать в себя получение доступа к синхронизационному документу от первого постоянного машиночитаемого носителя. Этап 618 может включать в себя передачу документа первому электронному устройству.
[97] С учетом вышеописанных вариантов осуществления, которые были описаны и показаны со ссылкой на конкретные этапы, выполненные в определенном порядке, следует иметь в виду, что эти этапы могут быть совмещены, разделены, обладать другим порядком выполнения - все это не выходит за границы настоящего решения. Соответственно, порядок и группировка этапов не является ограничением.
[98] Таким образом, способы и системы, реализованные в соответствии с некоторыми неограничивающими вариантами осуществления, могут быть представлены следующим образом, представленными в пронумерованных пунктах.
[99] [Пункт 1] Исполняемый на компьютере способ (400) обработки документа в распределенной архитектуре (200), способ, исполняемый процессором (110), включает в себя:
получение доступа от первого постоянного машиночитаемого носителя первого сервера к документу (310), который включает в себя часть содержимого и набор записей о правках, причем документ (310) доступен множеству электронных устройств, которое включает в себя первое электронное устройство (232) и второе электронное устройство (234);
поддержку на втором постоянном машиночитаемом носителе второго сервера, синхронизационного документа (312), который включает в себя по меньшей мере часть набора записей о правках в документе;
после получения запроса на синхронизацию от первого электронного устройства (232):
получение доступа к синхронизационному документу (312) со второго постоянного машиночитаемого носителя;
передачу синхронизационного документа (312) первому электронному устройству (232);
после получения указания на то, что синхронизация на первом электронном устройстве (232) на основе синхронизационного документа (312) была неудачной:
получение доступа к документу (310) с первого постоянного машиночитаемого носителя; и
передачу документа (310) первому электронному устройству (232);
[100] [Пункт 2] Способ по п. 1, дополнительно включающий в себя, после получения первой новой записи о правке от первого электронного устройства (232):
добавление первой новой записи (340) о правке в документ (310), хранящийся на первом постоянном машиночитаемом носителе; и
добавление первой новой записи (340) о правке в синхронизационный документ (312), хранящийся на втором постоянном машиночитаемом носителе.
[101] [Пункт 3] Способ 1 по любому из пп. 1 и 2, дополнительно включающий в себя, после получения первой новой записи (340) о правке, связанной с первой версией документа от первого электронного устройства (232), и второй новой записи о правке, связанной с первой версией документа от второго электронного устройства (234):
получение доступа по меньшей мере к одному из: документу (310) из первого постоянного машиночитаемого носителя или синхронизационному документу (312) из второго постоянного машиночитаемого носителя; и
создание новой объединенной записи о правке на основе по меньшей мере одного из: первой новой записи о правке, второй новой записи о правке, документа (310) или синхронизационного документа (312).
[102] [Пункт 4] Способ по п. 3, дополнительно включающий в себя:
добавление новой объединенной записи о правке в документ (310), хранящийся на первом постоянном машиночитаемом носителе; и
добавление новой объединенной записи о правке в синхронизационный документ (312), хранящийся на втором постоянном машиночитаемом носителе.
[103] [Пункт 5] Способ по п. 1, в котором часть содержимого является первым набором записей о правке, а набор записей о правке является вторым набором записей о правке.
[104] [Пункт 6] Способ по п. 5, в котором первый набор записей о правке и второй набор записей о правке указывают по меньшей мере на одно из: знаки, которые необходимо добавить или знаки, которые необходимо удалить в результате взаимодействия пользователя с одним из первого электронного устройства или второго электронного устройства.
[105] [Пункт 7] Способ по п. 1, в котором по меньшей мере одно из: часть содержимого или набор записей о правках обладает журнальной структурой.
[106] [Пункт 8] Способ по п. 7, в котором поддержка во втором постоянном машиночитаемом носителе второго сервера, синхронизационного документа (312), которая включает в себя, после определения того, что документ превышает порог, создание во втором постоянном машиночитаемом носителе второго сервера, синхронизационного документа (312) на основе по меньшей мере одного из: части содержимого и набора записей о правке документа.
[107] [Пункт 9] Способ по п. 8, в котором определение того, что документ (310) превышает порог, включает в себя по меньшей мере одно из: определение того, что документ превышает заранее определенное число записей в журнале, или определение того, что документ превышает заранее определенный размер, выраженный в блоке памяти.
[108] [Пункт 10] Способ по п. 1, в котором указание на то, что синхронизация была неудачной, далее включает в себя определение первым электронным устройством того, что синхронизационный документ (312) не обеспечивает правильную синхронизацию между локальным содержимым, хранящимся в постоянном машиночитаемом носителе первого электронного устройства (232), и синхронизационным документом (312).
[109] [Пункт 11] Способ по п. 10, в котором определение первым электронным устройством (232), что синхронизационный документ (312) не обеспечивает правильную синхронизацию, включает в себя определение того, что синхронизационный документ (312) не содержит по меньшей мере некоторые данные, которые необходимы для создания локальной версии документа, хранящейся в постоянном машиночитаемом носителе первого электронного устройства (232), локальная версия документа является зеркальным изображением документа, хранящимся в первом постоянном машиночитаемом носителе первого сервера.
[110] [Пункт 12] Способ по любому из пп. 1-11, в котором первый постоянный машиночитаемый носитель первого сервера является долговременным постоянным машиночитаемым носителем для долговременного хранения.
[111] [Пункт 13] Способ по любому из пп. 1-12, в котором второй постоянный машиночитаемый носитель второго сервера является кратковременным постоянным машиночитаемым носителем для кратковременного хранения, который обладает более высокой скоростью доступа к памяти первого постоянного машиночитаемого носителя первого сервера.
[112] [Пункт 14] Способ по любому из пп. 1-13, в котором синхронизационный документ (312) включает в себя скользящее подмножество прошлых правок, сделанных в документе.
[113] [Пункт 15] Исполняемый на компьютере способ (500) обработки документа в распределенной архитектуре (200), способ, исполняемый процессором (110), включает в себя:
получение доступа от первого постоянного машиночитаемого носителя первого сервера к документу (310), который включает в себя часть содержимого и набор записей о правках, причем документ (310) доступен множеству электронных устройств, которое включает в себя первое электронное устройство (232) и второе электронное устройство (234);
поддержку на втором постоянном машиночитаемом носителе второго сервера, синхронизационного документа (312), который включает в себя по меньшей мере часть набора записей о правках в документе;
после получения запроса на синхронизацию от первого устройства (232):
получение доступа к синхронизационному документу (312) со второго постоянного машиночитаемого носителя;
после определения того, что синхронизационный документ (312) обеспечивает правильную синхронизацию для первого электронного устройства (232), передачу синхронизационного документа (312) первому электронному устройству (232);
после определения того, что синхронизационный документ (312) не обеспечивает правильную синхронизацию для первого устройства (232):
получение доступа к документу (310) с первого постоянного машиночитаемого носителя; и
передачу документа (310) первому электронному устройству (232).
[114] [Пункт 16] Исполняемый на компьютере способ (600) обработки документа (310) в распределенной архитектуре (200), способ, исполняемый процессором (110), включает в себя:
получение доступа от первого постоянного машиночитаемого носителя первого сервера к документу (310), который включает в себя часть содержимого и набор записей о правках, причем документ (310) доступен множеству электронных устройств, которое включает в себя первое электронное устройство (232) и второе электронное устройство (234);
после определения того, что размер документа (310) превышает порог:
создание на втором постоянном машиночитаемом носителе второго сервера, синхронизационного документа (312), который включает в себя по меньшей мере часть набора записей о правках в документе;
после получения запроса на синхронизацию от первого электронного устройства(232):
получение доступа к синхронизационному документу (312) со второго постоянного машиночитаемого носителя;
передачу синхронизационного документа (312) первому электронному устройству (232);
после получения указания на то, что синхронизация на первом электронном устройстве (232) на основе синхронизационного документа (312) была неудачной:
получение доступа к документу (310) с первого постоянного машиночитаемого носителя; и
передачу документа (310) первому электронному устройству (232);
[115] [Пункт 17] Исполняемая на компьютере система, выполненная с возможностью выполнять способ по любому из пп. 1-16.
[116] [Пункт 18] Постоянный машиночитаемый носитель, включающий в себя машиночитаемые инструкции, которые инициируют систему исполнять способ в соответствии с любым из пп. 1-17.
[117] Важно иметь в виду, что не все упомянутые здесь технические результаты могут проявляться в каждом из вариантов осуществления настоящей технологии. Например, варианты осуществления настоящей технологии могут быть выполнены без проявления некоторых технических результатов, другие могут быть выполнены с проявлением других технических результатов или вовсе без него.
[118] Некоторые из этих этапов, а также передача-получение сигнала хорошо известны в данной области техники и поэтому для упрощения были опущены в конкретных частях данного описания. Сигналы могут быть переданы-получены с помощью оптических средств (например, оптоволоконного соединения), электронных средств (например, проводного, беспроводного соединения) и механических средств (например, на основе давления, температуры или другого подходящего параметра).
[119] Модификации и улучшения вышеописанных вариантов осуществления настоящего решения будут ясны специалистам в данной области техники. Предшествующее описание представлено только в качестве примера и не несет никаких ограничений. Таким образом, объем настоящего решения ограничен только объемом прилагаемой формулы изобретения.