RU2421799C2 - Безопасность в приложениях синхронизации равноправных узлов - Google Patents
Безопасность в приложениях синхронизации равноправных узлов Download PDFInfo
- Publication number
- RU2421799C2 RU2421799C2 RU2008106904/08A RU2008106904A RU2421799C2 RU 2421799 C2 RU2421799 C2 RU 2421799C2 RU 2008106904/08 A RU2008106904/08 A RU 2008106904/08A RU 2008106904 A RU2008106904 A RU 2008106904A RU 2421799 C2 RU2421799 C2 RU 2421799C2
- Authority
- RU
- Russia
- Prior art keywords
- user
- folder
- synchronization
- synchronized
- computing device
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1834—Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/256—Integrating or interfacing systems involving database management systems in federated or virtual databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
- Information Transfer Between Computers (AREA)
- Mobile Radio Communication Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
Изобретение относится к области синхронизации данных в системах хранения данных. Техническим результатом является упрощение синхронизации данных в системах хранения данных. Способ создания связи синхронизации в защищенном сообществе с синхронизацией между равноправными узлами содержит этапы, на которых принимают ввод пользователя на первом вычислительном устройстве, который уточняет, что первая папка на первом вычислительном устройстве должна быть синхронизирована со второй папкой на втором вычислительном устройстве; в ответ на ввод, первое вычислительное устройство создает приглашение, которое включает в себя информацию для создания связи синхронизации между первой и второй папками, причем информация включает в себя список членов, который задает права доступа к первой папке для каждого пользователя в синхронизированном сообществе, так что список членов включает в себя, по меньшей мере, одного пользователя другого вычислительного устройства в синхронизированном сообществе в дополнение к пользователю второго вычислительного устройства, а также права доступа для, по меньшей мере, одного другого пользователя и пользователя второго вычислительного устройства для доступа к первой папке; и передают приглашение от первого вычислительного устройства ко второму вычислительному устройству. 3 н. и 17 з.п. ф-лы, 20 ил.
Description
Уровень техники
Прогресс компьютерных технологий (к примеру, скорость микропроцессора, емкость запоминающего устройства, полоса пропускания передачи данных, функциональность программного обеспечения и т.п.), в общем, способствовал росту применения компьютеров в различных областях промышленности. Еще более мощные серверные системы, которые часто конфигурируются как массивы серверов, в общем, предоставляются для того, чтобы обслуживать запросы, исходящие из внешних источников, таких как, например, всемирная паутина.
По мере того как объем доступных электронных данных возрастает, становится более важным хранить эти данные управляемым способом, который упрощает удобный в использовании и быстрый поиск и извлечение данных. Сегодня общераспространенный подход состоит в том, чтобы хранить электронные данные в одной или более баз данных. В общем, типичная база данных может упоминаться как организованный набор информации с данными, структурированными таким образом, что вычислительная программа может просто выполнять поиск и выбирать, к примеру, требуемые фрагменты данных. Как правило, данные в базе данных организованы посредством одной или более таблиц. Эти таблицы скомпонованы как матрица из строк и столбцов.
Кроме того, таблицы могут содержать набор записей, при этом запись включает в себя набор полей. Записи, как правило, индексируются как строки в таблицы, а поля записей типично индексируются как столбцы, так что пара индексов строка/столбец может ссылаться на конкретный элемент данных в таблице. Например, строка может хранить полную запись данных, связанную с торговой сделкой, человеком или проектом. Аналогично, столбцы в таблице могут задавать отдельные части строк, которые имеют одинаковый общий формат данных, при этом столбцы могут задавать поля записей.
Каждый отдельный фрагмент данных, сам по себе, как правило, не очень информативен. Приложения баз данных делают данные более полезными, поскольку они помогают пользователям организовывать и обрабатывать данные. Приложения баз данных позволяют пользователю сравнивать, сортировать, упорядочивать, объединять, разделять и связывать данные, так что полезная информация может быть сформирована из данных. Объемы и универсальность баз данных выросли очень существенно, чтобы предоставлять практически бесконечную емкость хранения при использовании баз данных. Тем не менее, типичные системы баз данных предлагают ограниченную возможность запросов на основе времени, расширений, размещения и размеров файлов. Например, чтобы выполнять поиск в огромных объемах данных, ассоциативно связанных с базой данных, типично поиск ограничен именем файла, размером файла, датой создания и т.д., при этом подобные методики являются недостаточными и несовременными.
С непрерывным увеличением создания данных конечными пользователями множатся проблемы и сложности, связанные с поиском, связыванием, обработкой и хранением данных. Конечные пользователи пишут документы, сохраняют фотографии, оцифровывают музыку с компакт-дисков, принимают электронную почту, хранят копии отправленной электронной почты и т.д. Например, в простом процессе создания музыкального компакт-диска конечный пользователь может создавать мегабайты данных. Оцифровка музыки с компакт-диска, конвертирование файла в надлежащий формат, создание обложки для футляра для компакт-диска и разработка этикетки на компакт-диске, - все это требует создания данных.
Усложнения коснулись не только пользователей, но и разработчики имеют аналогичные проблемы с данными. Разработчики создают и пишут множество приложений, варьирующихся от персональных приложений до высокотехнологичных корпоративных приложений. При создании и/или разработке разработчики зачастую, если не всегда, собирают данные. После получения таких данных данные должны быть сохранены. Другими словами, проблемы и трудности, связанные с поиском, связыванием, обработкой и хранением данных, затрагивают и разработчиков, и конечных пользователей.
Более того, с бесконечным объемом данных, окружающих разработчиков и/или конечных пользователей, непротиворечивость данных между отличающимися машинами и/или системами может быть сложной и непреодолимой задачей. Например, пользователь может использовать переносную машину и настольный компьютер, где непротиворечивость и/или синхронизация данных жизненно важны. В частности, когда каждая машина и/или система формирует большие объемы данных, синхронизация этих данных является чрезвычайно трудной задачей.
Сущность изобретения
Далее представлена упрощенная сущность изобретения, для того чтобы предоставить базовое понимание некоторых аспектов, описанных в данном документе. Эта сущность не является всесторонним обзором заявляемого предмета изобретения. Она не предназначена для того, чтобы определить ключевые/важнейшие элементы заявляемого предмета изобретения или обрисовать область применения настоящего изобретения. Ее единственная цель - представить некоторые понятия заявляемого предмета изобретения в упрощенной форме в качестве вступления в более подробное описание, которое представлено далее.
Настоящее изобретение относится к системам и/или способам, которые упрощают синхронизацию данных, ассоциативно связанных, по меньшей мере, с двумя отличающимися системами хранения данных. Система хранения данных может быть сложной моделью, по меньшей мере, частично основывающейся на структуре базы данных, в которой элемент, подчиненный элемент, свойство и связь задаются для того, чтобы обеспечить возможность представления информации в системе хранения данных как экземпляров сложных типов. Компонент синхронизации создает защищенную синхронизацию данных между равноправными узлами, чтобы дать возможность нескольким пользователям осуществлять доступ к этим синхронизированным данным на различных ярусах и/или уровнях. Компонент синхронизации синхронизирует данные, ассоциативно связанные с системой хранения данных и отдельной системой хранения данных, причем может быть установлено защищенное сообщество с синхронизацией между равноправными узлами. Компонент синхронизации защищает метаданные, в том числе список членов (к примеру, список прав и/или привилегий пользовательского доступа) сообщества синхронизации, с тем чтобы пользователь с надлежащим доступом мог модифицировать их (к примеру, добавлять и/или удалять пользователя из сообщества) и передавать изменение и/или обработку другим пользователям. Данные также могут быть защищены так, чтобы пользователь с соответствующим доступом мог модифицировать их и передавать изменения другим пользователям.
Другими словами, компонент синхронизации может реализовать управление сложными связями синхронизации. Например, связи синхронизации могут включать в себя, но не только, управление установлением, разрывом и защитой. Более того, компонент синхронизации может реализовать управление сложными связями синхронизации полностью на основе технологии синхронизации. Следует принимать во внимание и понимать, что любая надлежащая технология синхронизации может быть реализована, такая как, к примеру, технология синхронизации, связанная с системой хранения данных.
В соответствии с одним аспектом заявляемого предмета изобретения компонент синхронизации позволяет усовершенствовать существующие методики и/или механизмы синхронизации, ассоциативно связанные с системой хранения данных. Компонент синхронизации может использовать систему хранения данных, которая включает в себя компонент отслеживания, который отслеживает изменения в различных объектах, сохраненных в системе хранения данных, и в частности, в хранилище в системе хранения данных. Компонент отслеживания может захватывать изменение(я) данных в объектах, чтобы упростить синхронизацию данных между двумя отличающимися системами, хранящими наборы данных. Посредством усовершенствования существующих методик и/или механизмов синхронизации в системе хранения данных компонент синхронизации позволяет предоставлять защищенное синхронизированное сообщество с равноправными узлами без каких-либо новых механизмов и/или методик.
В соответствии с другим аспектом заявляемого предмета изобретения компонент синхронизации может включать в себя диспетчер пользовательской синхронизации, который может упрощать создание синхронизированных связей, создание синхронизированных контейнеров, приглашение пользователей, прием приглашений, присоединение к сообществу, удаление пользователей, поддержание списка членов и/или общее управление синхронизированным сообществом с равноправными узлами. Более того, компонент синхронизации может включать в себя, по меньшей мере, одно из синхронизации вручную и/или автоматической синхронизации. Синхронизация вручную может предоставлять возможность пользователю вручную синхронизировать данные.
Помимо этого, автоматическая синхронизация позволяет предоставить автоматическую синхронизацию данных, выбранных для синхронизации данных между равноправными узлами.
В соответствии с другим аспектом заявляемого предмета изобретения компонент синхронизации может включать в себя приложение синхронизации между равноправными узлами, которое запускается как локальная система, чтобы представлять, по меньшей мере, одну операцию приложению. Этой операцией данных может быть, по меньшей мере, одно из следующего: создание совместно используемого ресурса в указанном контейнере; создание разрешений для контейнера; добавление разрешения в контейнер; проверка подлинности владельца контейнера; задание группового членства на основе списка; и удаление совместно используемого ресурса, созданного в контейнере. Кроме того, компонент синхронизации может включать компонент интеграции, который упрощает интеграцию между компонентом синхронизации (к примеру и в частности, приложением синхронизации между равноправными узлами), в операционную систему с другими приложениями. Помимо этого, компонент синхронизации может включать в себя API-компонент, который может выполнять синхронизированное создание и/или управление папками программным образом. В других аспектах заявляемого предмета изобретения предусмотрены способы, которые упрощают синхронизацию данных, ассоциативно связанных, по меньшей мере, с двумя отличающимися системами хранения данных.
Последующее описание и прилагаемые чертежи подробно излагают определенные иллюстративные аспекты заявляемого предмета изобретения. Эти аспекты, тем не менее, указывают только на некоторые из множества способов, которыми могут быть использованы принципы изобретения. Заявляемый предмет изобретения предназначен для того, чтобы включать в себя все такие аспекты и их эквиваленты. Другие преимущества и новые признаки заявляемого предмета изобретения должны стать очевидными из следующего подробного описания изобретения, если рассматривать их вместе с чертежами.
Краткое описание чертежей
Фиг.1 иллюстрирует блок-схему примерной системы, которая упрощает синхронизацию данных, ассоциативно связанных, по меньшей мере, с двумя отличающимися системами хранения данных.
Фиг.2 иллюстрирует блок-схему примерной системы, которая упрощает усовершенствование существующих механизмов синхронизации в системе хранения данных, чтобы обеспечить непротиворечивость данных между системами хранения данных.
Фиг.3 иллюстрирует блок-схему примерной системы, которая упрощает синхронизацию данных в системах хранения данных, чтобы предоставить возможность нескольким пользователям осуществлять доступ.
Фиг.4 иллюстрирует блок-схему примерной системы, которая упрощает синхронизацию данных между, по меньшей мере, двумя отличающимися системами хранения данных.
Фиг.5 иллюстрирует блок-схему примерной системы, которая упрощает синхронизацию данных в системах хранения данных, чтобы обеспечить различные уровни доступности.
Фиг.6 иллюстрирует блок-схему примерной системы, которая упрощает синхронизацию данных, ассоциативно связанных, по меньшей мере, с двумя отличающимися системами хранения данных.
Фиг.7 иллюстрирует снимок экрана, связанный с заявляемым предметом изобретения.
Фиг.8 иллюстрирует два снимка экрана, связанных с заявляемым предметом изобретения.
Фиг.9 иллюстрирует два снимка экрана, связанных с реализацией приложения-мастера.
Фиг.10 иллюстрирует два снимка экрана, связанных с реализацией приложения-мастера.
Фиг.11 иллюстрирует снимок экрана, связанный с реализацией приложения-мастера.
Фиг.12 иллюстрирует снимок экрана, связанный с реализацией приложения-мастера.
Фиг.13 иллюстрирует снимок экрана, связанный с заявляемым предметом изобретения.
Фиг.14 иллюстрирует два снимка экрана, связанных с заявляемым предметом изобретения.
Фиг.15 иллюстрирует снимок экрана, связанный с заявляемым предметом изобретения.
Фиг.16 иллюстрирует снимок экрана, связанный с заявляемым предметом изобретения.
Фиг.17 иллюстрирует примерную методологию для синхронизации данных, ассоциативно связанных, по меньшей мере, с двумя отличающимися системами хранения данных.
Фиг.18 иллюстрирует примерную методологию, которая упрощает усовершенствование существующих механизмов синхронизации в системе хранения данных, чтобы обеспечить непротиворечивость данных между системами хранения данных.
Фиг.19 иллюстрирует примерное сетевое окружение, в котором могут быть использованы новые аспекты заявляемого предмета изобретения.
Фиг.20 иллюстрирует примерное операционное окружение, которое может быть использовано в соответствии с заявляемым предметом изобретения.
Приложение A - это пример псевдокода, ассоциативно связанного с заявляемым предметом изобретения.
Подробное описание изобретения
При использовании в данной заявке термины "компонент", "система", "интерфейс" и т.п. означают связанную с компьютером объектную сущность: аппаратные средства, программное обеспечение (к примеру, в ходе приведения в исполнение) и/или микропрограммное обеспечение. Например, компонентом может быть процесс, запущенный на процессоре, процессор, объект, исполняемый файл, программа и/или компьютер. В качестве иллюстрации и приложение, запущенное на сервере, и сервер может быть компонентом. Один или более компонентов могут постоянно размещаться внутри процесса, и компонент может быть локализован на компьютере и/или распределен между двумя и более компьютерами.
Заявляемый предмет изобретения описан со ссылками на чертежи, на которых одинаковые цифры ссылок используются для того, чтобы ссылаться на одинаковые элементы. В последующем описании для целей пояснения многие конкретные детали изложены для того, чтобы обеспечить полное понимание настоящего изобретения. Тем не менее, очевидно, что заявляемый предмет изобретения может быть применен на практике без этих конкретных деталей. В иных случаях на моделях блок-схемы показаны распространенные структуры и устройства, чтобы упростить описание настоящего изобретения.
Обращаясь теперь к чертежам, фиг.1 иллюстрирует систему 100, которая упрощает синхронизацию данных, ассоциативно связанных, по меньшей мере, с двумя отличающимися системами хранения данных. Система 102 хранения данных может быть сложной моделью, по меньшей мере, частично основывающейся на структуре базы данных, в которой элемент, подчиненный элемент, свойство и связь задаются для того, чтобы обеспечить возможность представления информации в системе хранения данных как экземпляров сложных типов. Система 102 хранения данных может использовать набор базовых компоновочных блоков для создания и управления гибкими постоянными объектами и связями между объектами. Элемент может быть задан как наименьшая единица непротиворечивости в системе 102 хранения данных, которая может независимо защищаться, упорядочиваться, синхронизироваться, копироваться, резервироваться/восстанавливаться и т.д. Элемент - это экземпляр типа, при этом все элементы в системе 102 хранения данных могут быть сохранены в одном глобальном экстенте элементов. Система 102 хранения данных может быть основана, по меньшей мере, частично на структуре одного элемента и/или контейнера. Кроме того, система хранения данных может быть платформой хранения, раскрывающей обширные метаданные, которые скрываются в файлах как элементы. Следует принимать во внимание, что система 102 хранения данных может представлять основанную на базе данных систему хранения файлов, чтобы поддерживать вышеописанную функциональность, в которой могут быть реализованы любые надлежащие характеристики и/или атрибуты. Более того, система 102 хранения данных может содержать иерархическую структуру контейнеров, в которой контейнер - это элемент, который может содержать, по меньшей мере, один элемент. Понятие включения реализовано посредством свойства идентификатора контейнера внутри ассоциативно связанного класса. Хранилище также может быть контейнером, так что хранилище может быть организационным и управляемым блоком. Помимо этого, хранилище представляет корневой контейнер для дерева контейнеров в иерархической структуре.
Компонент 106 синхронизации может создавать защищенную синхронизацию данных между равноправными узлами, чтобы дать возможность нескольким пользователям осуществлять доступ к этим синхронизированным данным на различных ярусах и/или уровнях. Компонент 106 синхронизации может обеспечивать синхронизацию данных, ассоциативно связанных с системой 102 хранения данных и отличающейся системой 104 хранения данных, причем может быть установлено защищенное сообщество с синхронизацией между равноправными узлами. Компонент 106 синхронизации может защищать метаданные, в том числе список членов (к примеру, список прав и/или привилегий пользовательского доступа) сообщества синхронизации, с тем чтобы пользователь с надлежащим доступом мог модифицировать их (к примеру, добавлять и/или удалять пользователя из сообщества) и передавать изменение и/или обработку другим пользователям. Данные также могут быть защищены так, чтобы пользователь с соответствующим доступом мог модифицировать их и передавать изменения другим пользователям. Механизм защиты может активировать базовый механизм аутентификации и/или авторизации, такой как, но не только, защита на уровне совместно используемых ресурсов, защита на уровне элементов, аутентификации и авторизация операционной системы и т.д. Более того, компонент 106 синхронизации может предоставлять синхронизацию списка членов практически таким же образом, как могут синхронизироваться данные.
Другими словами, компонент синхронизации 106 может реализовать управление сложными связями синхронизации. Например, связи синхронизации могут включать в себя, но не только, управление настройкой, освобождением и защитой. Более того, компонент 106 синхронизации может реализовать управление сложными связями синхронизации полностью на основе технологии синхронизации. Следует принимать во внимание и понимать, что любая надлежащая технология синхронизации может быть реализована, такая как, к примеру, технология синхронизации, связанная с системой 102 хранения данных и/или отличающейся системой 104 хранения данных.
Компонент 106 синхронизации может использовать реплику (к примеру, синхронизированные данные и/или папки, принадлежащие, по меньшей мере, одному пользователю в сообществе), чтобы сообщать, по меньшей мере, одно из следующего: 1) присутствие в сообществе; и 2) намерение покинуть сообщество посредством синхронизации запроса к диспетчеру (к примеру, члену сообщества, который авторизован выполнять изменения в реплике списка членов) сообщества. Другими словами, диспетчер - это член сообщества, который авторизован выполнять изменения в реплике списка членов. Кроме того, диспетчеры могут обрабатывать эти запросы и выполнять изменения в метаданных членов, а затем синхронизировать метаданные с другими пользователями в сообществе. После приема таких изменений членов компонент 106 синхронизации позволяет каждой реплике выполнять требуемые изменения доступа к ее данным и метаданным. Следует принимать во внимание, что создание и управление сообществом с синхронизацией между равноправными узлами, реализованное посредством компонента 106 синхронизации, может предоставлять несколько реплик и пользователей, при этом роли, назначенные каждому пользователю, могут динамически изменяться в любой данный момент времени. Другими словами, нет одного фиксированного ведущего узла в топологии компонента 106 синхронизации и сообщества с синхронизацией между равноправными узлами. Более того, компонент 106 синхронизации позволяет усовершенствовать базовые методики и/или механизмы аутентификации и авторизации системы 102 хранения данных.
Кроме того, система 100 может включать в себя любой подходящий и/или необходимый интерфейсный компонент 108, который предоставляет различные адаптеры, разъемы, каналы, пути связи и т.д., чтобы интегрировать компонент 106 синхронизации практически в любую операционную систему и/или систему базы данных. Помимо этого, интерфейсный компонент 108 позволяет предоставить различные адаптеры, разъемы, каналы, пути связи и т.д., которые обеспечивают взаимодействие с компонентом 108 синхронизации, системой 102 хранения данных и отличающейся системой 104 хранения данных.
Фиг.2 иллюстрирует систему 200, которая упрощает усовершенствование существующих механизмов синхронизации в системе хранения данных, чтобы обеспечить непротиворечивость данных между системами хранения данных. Система 202 хранения данных может быть основанной на базе данных системой хранения файлов, которая представляет экземпляры данных как сложные типы посредством использования, по меньшей мере, иерархической структуры. Элемент, подчиненный элемент, свойство и связь могут быть заданы в системе 202 хранения данных, чтобы обеспечить представление информации как экземпляров сложных типов. Система 202 хранения данных может быть моделью данных, которая может описывать форму данных, объявлять ограничения, чтобы налагать определенную семантическую непротиворечивость данных, и задавать семантические ассоциации между данными. Система 202 хранения данных может использовать набор базовых компоновочных блоков для создания и управления гибкими постоянными объектами и связями между объектами.
Например, компоновочные блоки могут включать в себя Item (Элемент), ItemExtension (Расширение элемента), Link (Связь) и ItemFragment (Фрагмент элемента). Item может быть задан как наименьшая единица непротиворечивости в системе 202 хранения данных, которая может независимо защищаться, упорядочиваться, синхронизироваться, копироваться, резервироваться/восстанавливаться и т.д. Элемент - это экземпляр типа, при этом все элементы в системе 202 хранения данных могут быть сохранены в одном глобальном экстенте элементов. Item может быть расширен с помощью объекта расширения, такого как, но не только, ItemExtension. Объектное расширение может быть задано в схеме с соответствующими атрибутами (к примеру, именем, типом расширенного элемента, объявления свойств и т.д.). ItemExtension может быть реализован, чтобы сгруппировать набор свойств, которые могут быть применены к типу элемента, который расширяется. Link - это тип объекта, который задает ассоциативную связь между двумя экземплярами элементов, при этом ссылки являются направленными (к примеру, один элемент является источником связи, а другой - назначением связи). ItemFragment - это тип объекта, который дает возможность объявления больших наборов типов элементов и/или расширений элементов, при этом элементы набора могут быть объектами. Следует принимать во внимание и понимать, что система 202 хранения данных может представлять любую подходящую систему хранения файлов, которая предоставляет представление данных как сложных типов, и вышеуказанная иллюстрация не должна рассматриваться как ограничивающая настоящее изобретение. Система 202 хранения данных может быть практически аналогичной системе 102 хранения данных, проиллюстрированной на фиг.1.
Система хранения данных может включать в себя компонент 204 отслеживания, который предоставляет отслеживание изменений данных в различных объектах, сохраненных в системе 202 хранения данных и, в частности, в хранилище системы 202 хранения данных. Компонент 204 отслеживания может захватывать изменение(я) данных в объектах, чтобы упрощать синхронизацию данных между двумя отличающимися системами, поддерживающими наборы данных. Компонент 204 отслеживания может использовать схему, которая предоставляет инфраструктуру, которая предоставляет хранилище и/или контейнер, чтобы предоставлять детальное обслуживание касательно изменений данных. Например, компонент 204 отслеживания может отслеживать изменение данных, причем изменение данных может включать в себя вставку, обновление и удаление на уровне объекта (к примеру, элемента, связи, расширения и т.д.). Компонент 204 отслеживания может отслеживать изменения данных, так что на уровне объектов отслеживание изменений может быть использовано для того, чтобы формировать, по меньшей мере, одно из оповещений и управления с оптимистической параллельностью. Следует принимать во внимание, что оптимистическая параллельность предполагает, что вероятность другого процесса, выполняющего изменения практически в аналогичное время, низкая, так что он не принимает блокировку до тех пор, пока изменение не будет готово быть проведенным в системе хранения данных (к примеру, в хранилище). Посредством использования этой методики время блокировки снижается и производительность базы данных улучшается.
Компонент 204 отслеживания может включать в себя компонент асинхронизации (не показан), который может отслеживать изменения данных на уровне объекта в системе 202 хранения данных. Следует принимать во внимание, что изменения данных отслеживаются исключительно на уровне объекта, по меньшей мере, частично на основе неучастия в синхронизации. Отслеживание изменения данных на уровне объекта может упоминаться как "информация изменения". Компонент асинхронизации может захватывать базовую информацию изменений для всех объектов. Например, базовой информацией изменений может быть, но не только, локальное время создания и локальное время модификации.
Компонент 204 отслеживания дополнительно может использовать компонент синхронизации с системой хранения данных (DSS) (не показан), который предоставляет отслеживание для объекта, который принимает участие в синхронизации. Компонент синхронизации с DSS имеет более специализированную необходимость отслеживать изменения данных в объекте на более детальном уровне, а также захватывать и хранить информацию о хранилище и/или контейнере, который изменен в сценарии репликации с несколькими хранилищами (к примеру, контейнера). Компонент 208 синхронизации может захватывать информацию для объектов в связи синхронизации. Например, компонент синхронизации с DSS может захватывать информацию изменений на более детальном уровне (к примеру, подуровне, под-подуровне и т.д.), чтобы минимизировать объем данных, которые должны быть синхронизированы, и уменьшить число конфликтных ситуаций при изменении. В другом примере компонент синхронизации с DSS может захватывать информацию о том, какое хранилище и/или контейнер создал и/или обновил объекты. Следует принимать во внимание и понимать, что заявляемый предмет изобретения может применяться к системам синхронизации, которые не основаны на компоненте 204 отслеживания (описан выше), и что надлежащая система синхронизации может быть реализована, в том числе системы, которые используют журналы, по меньшей мере, одного изменения (к примеру, основанные на журналах системы синхронизации).
Компонент 208 синхронизации позволяет предоставлять защищенное сообщество с синхронизацией между равноправными узлами относительно системы 202 хранения данных и отличающейся системы 206 хранения данных, в котором различные уровни и/или слои доступа могут быть предоставлены. Компонент 208 синхронизации позволяет усовершенствовать существующий компонент 204 отслеживания в системе 202 хранения данных, чтобы обеспечить синхронизацию данных, сохраненных в системе 202 хранения данных, отличающейся системе 206 хранения данных и/или любой другой подходящей машине. Следует принимать во внимание, что компонент 208 синхронизации предоставляет синхронизацию данных посредством использования базовых и/или существующих механизмов синхронизации, ассоциативно связанных с различными системами хранения данных и/или машинами, при этом такие системы хранения данных и/или машины включают в себя несинхронизированные данные, которые должны быть синхронизированы. Следует принимать во внимание, что компонент 208 синхронизации может быть практически аналогичным компоненту 106 синхронизации, проиллюстрированному на фиг.1.
Фиг.3 иллюстрирует систему 300, которая упрощает синхронизацию данных в системах хранения данных, чтобы предоставить возможность нескольким пользователям осуществлять доступ. Система 302 хранения данных может быть основывающейся на базе данных системой хранения файлов, в которой данные представляются как экземпляры сложных типов. Система 302 хранения данных может включать в себя несинхронизированные данные 308 (далее упоминаемые как несинхронизированные данные 308), причем эти данные должны быть синхронизированы с отличающейся системой 304 хранения данных, которая включает в себя несинхронизированные данные 310. Компонент 306 синхронизации может синхронизировать эти данные с сообществом 312 с синхронизацией между равноправными узлами. Сообщество 312 с синхронизацией может включать в себя реплики 1 - N, где N - это целое число, больше или равно 1, при этом реплика - это синхронизированная папка и/или данные, ассоциативно связанные, по меньшей мере, с одним пользователем, относящимся к сообществу 312 с синхронизацией. Компонент 306 синхронизации может создавать сообщество 312 с синхронизацией между равноправными узлами, в котором несколько пользователей 314 (т.е. с пользователя 1 по пользователь T, где T - это целое число, больше или равно 1) могут осуществлять доступ к этим репликам на основе уровня и/или слоя, ассоциативно связанного с доступностью. Следует принимать во внимание, что несколько пользователей 314 и уровни и/или слои доступности могут быть основаны, по меньшей мере, частично на списке членов. Более того, следует принимать во внимание, что система 302 хранения данных и компонент 306 синхронизации могут быть практически аналогичны компонентам и системам, описанным на предыдущих чертежах.
Компонент 306 синхронизации дополнительно может предоставлять, по меньшей мере, одно из следующего: 1) проверку квалификации разработки приложения, основанного на платформе, связанной с системой 302 хранения данных; 2) создание обратной связи по процессу и обратное усовершенствование в систему 302 хранения данных и синхронизацию системы 302 хранения данных; 3) создание собственной узловой среды для приложения; 4) реализацию решения по сквозной синхронизации, которое обрабатывает такие вопросы, как, но не только, транспортировка и безопасность (в том числе аутентификация и шифрование), а также синхронизация по Интернету; и 5) изучение точек, связанных с интеграцией между системой 302 хранения данных и функциональностью синхронизации системы 302 хранения данных и остальной частью операционной системы.
Например, пользователь может поддерживать несколько персональных компьютеров (ПК) синхронизированными с помощью компонента 306 синхронизации, при этом ПК реализуют основывающуюся на базе данных систему хранения файлов, практически аналогичную системе 302 хранения данных. Различные контейнеры могут быть синхронизированы с отличающимися компьютерами. В частности, контейнер совместно используемых фотографий может быть синхронизирован с отличающимися пользователями по Интернету. Кроме того, контейнер совместно используемых документов может быть синхронизирован с несколькими машинами дома и на работе. В другом примере приложение фотографий может быть реализовано так, чтобы предоставить возможность совместно использовать фотографии. Использование компонента 306 синхронизации в ассоциативной связи с приложением фотографий может обеспечивать прозрачные возможности работы в приложении фотографий и совместном использовании фотографий на основе синхронизации в основывающейся на базе данных системе хранения файлов. В еще одном другом примере компонент 306 синхронизации может быть реализован в корпоративном сценарии и/или окружении. В корпоративном окружении и/или сценарии аутентификация и заимствование прав учетной записи доступно, например, посредством диспетчера LAN или Kerberos. Это отличается от синхронизации по Интернету, которая предоставляет требования к транспортировке.
На основе, по меньшей мере, частично вышеописанных сценариев и/или примеров компонент 306 синхронизации может предоставлять, по меньшей мере, одно из следующего: 1) установление синхронизации; 2) управление данными синхронизации; 3) управление расписаниями синхронизации; 4) контроль и разрешение конфликтов синхронизации; 5) анализ конфликтов синхронизации; и 6) синхронизацию фотографий.
Фиг.4 иллюстрирует систему 400, которая упрощает синхронизацию данных между, по меньшей мере, двумя отличающимися системами хранения данных. Компонент 406 синхронизации позволяет предоставлять защищенное сообщество с синхронизацией между равноправными узлами относительно системы 402 хранения данных и отличающейся системы 404 хранения данных, в котором различные уровни и/или слои доступа могут быть предоставлены. Компонент 406 синхронизации позволяет усовершенствовать существующий компонент отслеживания (не показан) в системах 402 и 404 хранения данных, чтобы обеспечить синхронизацию данных. Следует принимать во внимание, что компонент 406 синхронизации предоставляет синхронизацию данных посредством использования базовых и/или существующих механизмов синхронизации, ассоциативно связанных с различными системами хранения данных и/или машинами, при этом такие системы хранения данных и/или машины включают в себя несинхронизированные данные, которые должны быть синхронизированы. Следует принимать во внимание, что системы 402 и 404 хранения данных и компонент 406 синхронизации могут быть практически аналогичны системам и/или компонентам, описанным ранее.
Компонент 406 синхронизации может включать в себя компонент 408 диспетчера пользовательской синхронизации (упоминаемый в данном документе как диспетчер 408 пользовательской синхронизации). Диспетчер 408 пользовательской синхронизации может упрощать создание синхронизированных связей, создание синхронизированных контейнеров, приглашение пользователей, прием приглашений, присоединение к сообществу, удаление пользователей, поддержание списков членства и /или общее управление сообществом с синхронизацией между равноправными узлами. Диспетчер 408 пользовательской синхронизации может предоставлять возможность пользователю обеспечить синхронизацию в контейнере (не показан) в системе хранения данных для хранилища по умолчанию. Связь синхронизации может быть создана для этого контейнера (к примеру, для контейнера с системой 402 хранения данных). Связь синхронизации может быть создана для конкретного синхронизированного контейнера, совместно используемого конкретным пользователем на конкретном компьютере. Следует принимать во внимание, что пользователь, который создал синхронизированный контейнер, знает о том, что контейнер синхронизирован.
Как упоминалось выше, диспетчер 408 пользовательской синхронизации позволяет упростить создание связи синхронизации. Приглашение (к примеру, пригласить пользователя присоединиться к сообществу с синхронизацией между равноправными узлами) может содержать название приглашающего диспетчера, компьютер, IP-адрес и/или любую подходящую методику идентификации, а также сообщество и область применения. Роли, уровни и/или слои могут быть сопоставлены с разрешениями системы хранения данных (к примеру, описанными ниже). Эти разрешения могут быть заданы до того, как отправлено приглашение. Приглашение также может включать в себя пакет исходных данных, который включает в себя список членства, так что, когда приглашение принято, реплика может быть полностью установлена без необходимости начального полного обхода. Следует принимать во внимание, что приглашение также может включать в себя первоначальные данные для контейнера.
Приглашения могут создаваться в файлах расширяемого языка разметки (XML) с разрешением, к примеру, Synclnvitation. Компонент 406 синхронизации регистрируется как обработчик для них и отображает диалог принятия приглашения для того, чтобы синхронизироваться. Эти приглашения могут включать в себя следующие свойства: название сообщества, приглашающего пользователя, название приглашающего компьютера, приглашенного пользователя, роль приглашенного пользователя и т.д. Приглашением может быть, например, почтовое сообщение, которое включает в себя следующий текст: строку To (Кому) (к примеру, включающую в себя адрес электронной почты), строку Subject (Тема) (к примеру, включающую в себя тему, сообщающую о приглашении), тело (к примеру, содержащее подробную удобную для восприятия информацию о приглашении, приглашающего пользователя, название приглашающего компьютера, роль, название сообщества и т.д.), вложение (к примеру, на котором можно дважды щелкнуть, чтобы принять приглашение) и т.д.
Диспетчер 408 пользовательской синхронизации также может создавать синхронизированный контейнер (не показан). В приложении работы с файлами операционной системы пользователь может щелкать на контейнере в хранилище по умолчанию в системе 402 хранения данных и выбирать вариант, направленный на обеспечение синхронизации. Посредством выбора этого варианта диспетчер 408 пользовательской синхронизации может реализовать создание мастера синхронизированных контейнеров, причем мастер может указывать, по меньшей мере, одно из следующего: 1) режима синхронизации; и 2) политики конфликтов (все из вышеозначенного описано ниже).
Чтобы создать синхронизированный контейнер, следующие этапы могут быть выполнены посредством диспетчера 408 пользовательской синхронизации. Следующие этапы проиллюстрированы в качестве примера, и заявляемый предмет изобретения не ограничен ими.
1) Если синхронизированный контейнер - это первый член сообщества,
a. Создается сообщество Data (Данные) с корнем как синхронизированный контейнер. Это сообщество синхронизирует данные по всем синхронизированным контейнерам.
b. Создается сообщество Security (Защита) с корнем как частный контейнер внутри Replica (Реплика) синхронизированного контейнера. Это сообщество синхронизирует конфигурацию безопасности сообщества Data. Оно включает в себя список принятых пользователей. Кроме того, включены разрешения и адрес каждого принятого пользователя.
c. Создается сообщество Requests (Запросы) (к примеру, описанное ниже).
2) Создается группа безопасности на локальной машине для каждой из ролей. Группы называются Reader (Читатель), Writer (Автор) и Manager (Диспетчер) (к примеру, как описано ниже). К началу названия каждой группы присоединяется уникальный суффикс, чтобы отличать его от соответствующей группы безопасности другого синхронизированного контейнера.
3) Разрешения контейнера Data задаются на основе конфигурации в контейнере Security. В частности, разрешение Generic Read (Общее чтение) присваивается Reader, а разрешение Generic Write + Generic Read (Общая запись + общее чтение) из Windows присваивается Writer. Поскольку синхронизация осуществляется непосредственно посредством системы хранения данных-синхронизации системы хранения данных, она защищает данные, чтобы разрешить только надлежащим пользователям выполнять синхронизацию в и из синхронизированного контейнера.
Разрешения группы безопасности также могут быть заданы на основе конфигурации в сообществе Security. В частности, разрешение операционной системы Generic Write + Generic Read может быть присвоено Manager, а разрешение Generic Read присваивается читателям и авторам соответственно.
Нижеследующая таблица является примером групп безопасности, которые могут быть созданы, и доступа, предлагаемого для каждого в различных папках и совместно используемых ресурсах. Следует принимать во внимание, что нижеприведенная таблица является примером и заявляемый предмет изобретения не ограничен ею. Более того, хэши в нижеприведенной таблице являются 128-байтовыми детерминированными хэшами, но данная реализация не ограничена таким образом. Отметим, что каждый перечисленный ACE имеет container_inherit и object_inherit, а приложение синхронизации между равноправными узлами упоминается как PTPS.
Размещение совместно используемого ресурса | Название совместно используемого ресурса | ACL совместно используемого ресурса | ACL корневого элемента папки (защита на уровне элемента) | ||
Корень синхронизиро- ванной папки |
PTPS_ <хеш пути к корню> | PTPS_Managers_ <хеш пути к корню> | Полное управление | PTPS_Managers_ <хеш пути к корню> | Полное управление |
PTPS_Writers_ <хеш пути к корню> |
Полное управление | PTPS_Writers_ <хеш пути к корню> |
Полное управление | ||
PTPS_Readers_ <хеш пути к корню> |
Общее чтение | PTPS_Readers_ <хеш пути к корню> |
Общее чтение | ||
Папка Security | PTPS_Managers_ <хеш пути к корню> | Полное управление | |||
PTPS_Writers_ <хеш пути к корню> |
Полное управление | ||||
PTPS_Readers_ <хеш пути к корню> |
Общее чтение | ||||
Пользователь-претендент PTPS | Полное управление | ||||
ACL_PROTECT. Она предотвращает распространение ACES разрешения и запрета от родительского объекта | |||||
Папка User Request | PTPS_Managers_ <хеш пути к корню> | Полное управление | |||
Пользователь, который "владеет" папкой | Полное управление | ||||
Пользователь-претендент PTPS | Полное управление | ||||
ACL_PROTECT. Она предотвращает распространение ACES разрешения и запрета от родительского объекта |
Название группы безопасности | Члены |
PTPS_Managers_ <хеш пути к корню> | Диспетчеры синхронизированной папки |
PTPS_Writers_ <хеш пути к корню> | Авторы синхронизированной папки |
PTPS_Readers_ <хеш пути к корню> | Читатели синхронизированной папки |
Синхронизированный контейнер может иметь следующую структуру. Отметим, что система хранения данных упоминается как DSS, а приложение синхронизации между равноправными узлами упоминается как PTPS.
Синхронизированный контейнер (синхронизирована с сообществом Data)
+ Replica (не синхронизирована)
+ папка Security (синхронизирована с сообществом Security)
+ папка Requests (Запросы)
Диспетчер 408 пользовательской синхронизации может разрешать приглашение пользователя, чтобы синхронизировать контейнер после того, как контейнер создан, и/или в любое более позднее время. Диспетчер 408 пользовательской синхронизации может задавать контактный адрес (к примеру, адрес электронной почты, адрес Интернет-протокола (IP) и т.д.), при этом приглашение, содержащее данные приглашения, может быть присоединено. Следует принимать во внимание, что компонент 408 пользовательской синхронизации не требует автоматической отправки приглашения, поскольку оно может быть отправлено в любое время, указанное пользователем. Получатель приглашения может быть принят другим пользователем, по меньшей мере, частично на основе пользователя, реализующего компонент 406 синхронизации.
В другом примере приглашение может быть сохранено как файл для последующего использования. Пользователь может отправлять приглашение другому пользователю посредством любого надлежащего средства (к примеру, гибкого диска, электронной почты, текстового сообщения, службы коротких сообщений (SMS) и т.д.). Диспетчер 408 пользовательской синхронизации может использовать любые подходящие механизмы и/или методики синхронизации. Кроме того, диспетчер 408 пользовательской синхронизации может предоставлять различные уровни приглашений, при этом пользователь может быть приглашен принимать участие в сообществе с синхронизацией между равноправными узлами в одной из (но не только) ролей, уровней и/или слоев: 1) Manager - Read (чтение), Write (запись), Modify (изменение), Add (добавление), Invite (приглашение), Revoke (аннулирование); 2) Writer - Read, Write, Modify, Add; 3) Reader - Read; и 4) Contributor (Помощник) - Read, Add.
Компонент 408 пользовательской синхронизации дополнительно предоставляет прием приглашения. Когда приглашение принято и открыто, пользователь может реализовать, по меньшей мере, одно из следующего: 1) задавать и/или создавать локальный контейнер системы хранения данных, с которым синхронизироваться; 2) задавать то, может этот контейнер синхронизироваться автоматически или синхронизироваться вручную; и 3) задавать политику конфликтов, которая должна быть реализована. Отображаемое имя пользователя может быть именем, которое использует система безопасности для конкретного окружения. Например, в корпоративном окружении отображаемым именем может быть имя вошедшего в систему пользователя. Следует принимать во внимание, что в Интернет-сценариях система безопасности может использовать другое имя (к примеру, адрес-псевдоним, IP-адрес, адрес электронной почты и т.д.).
Папка Security (поясненная выше) может быть синхронизирована в сообществе Security. Политика и разрешения для этого сообщества могут быть такими, что двусторонняя синхронизация может выполняться в среде диспетчеров и односторонняя синхронизация может выполняться от диспетчера к пользователю, не являющемуся диспетчером. Папка Security может иметь две вложенные папки, которые хранят список пользователей и список реплик в сообществе:
Папка Security (синхронизирована с сообществом Security)
+ Replica (папки Security)
+ Папка Users (Пользователи)
+ Элемент SynchronizedFolderConfiguration (Конфигурация синхронизированной папки)
Папка Security также может содержать элемент SynchronizedFolderConfiguration, который содержит имя и описание синхронизированной папки.
Папка Users может содержать список всех пользователей в сообществе наряду с набором равноправных узлов для каждого пользователя. Ниже приведен один пример папки Users, и заявляемый предмет изобретения не ограничен им.
+ Users
+ Пользователь 1
+ Равноправный узел a
+ Равноправный узел b
+ Пользователь 2
+ Равноправный узел c
+ Равноправный узел d
Каждый пользователь может постоянно храниться как SerializedItem (Упорядоченный элемент), содержащий следующие данные:
UserName (Имя пользователя)
UserDomain (Домен пользователя)
SID
Role (Роль) (reader | writer | manager)
Информация каждого пользователя может быть сохранена как отдельный элемент, по меньшей мере, частично на основе того, модифицируется ли она несколькими диспетчерами, политика разрешения конфликтов LastWriterWins (Последние выигрыши авторов), может быть использована для того, чтобы разрешить конфликт. Пространство имен пользовательских элементов и отображаемые имена отправляются по SID пользователя.
Каждый пользователь может содержать набор всех равноправных узлов (к примеру, синхронизированных реплик) в сообществе. Каждый равноправный узел может постоянно храниться, при этом содержит следующие данные:
SID of user (SID пользователя)
Share Path (Путь к совместно используемому ресурсу) (имя совместно используемого ресурса не требуется)
Synchronization type (Тип синхронизации) (automatic (автоматически) | manual (ручной))
Единицей обеспечения безопасности, по меньшей мере, на одной машине может быть пользователь. Таким образом, пользователь, синхронизирующий несколько машин с одним синхронизированным контейнером, может иметь одинаковые разрешения для этого контейнера со всех машин. Важная причина сохранения Peer в рамках соответствующего User заключается в том, что элемент, сохраненный внутри другого элемента (в отличие от папки), всегда может быть синхронизирован в той же транзакции, что и родительский элемент. Это наряду с политикой разрешения конфликтов Entity-Merge (Объединение объектов) обеспечивает то, что пользователи и равноправные узлы не становятся противоречивыми относительно друг друга.
Нижеприведенное может служить примером структуры папки запросов. Каждый пользователь, не являющийся диспетчером, имеет одну вложенную папку в контейнере Requests, используемую для того, чтобы сохранять запросы к и от пользователя и диспетчеров, следующим образом:
+ папка Requests (Запросы)
+ вложенная папка Requests для запросов владельца-равноправного узла (синхронизирована с владельцем-равноправным узлом и диспетчерами)
+ Replica
+ ToManager (К диспетчеру)
+ FromManager (От диспетчера)
Более того, каждый равноправный узел-диспетчер имеет одну вложенную папку для каждого равноправного узла в сообществе (включая одну для самого диспетчера) следующим образом:
+ папка Requests (Запросы)
+ контейнер для запросов пользователя 1 (синхронизирован с пользователем 1 и диспетчерами)
+ Replica
+ ToManager
+ FromManager
+ контейнер для запросов пользователя 2 (синхронизирован с пользователем 2 и диспетчерами)
+ Replica
+ ToManager
+ FromManager
…
+ контейнер для запросов пользователя n (синхронизирован с пользователем n и диспетчерами)
+ Replica
+ ToManager
+ FromManager
Название контейнера вложенной папки для равноправного узла может быть Requests с суффиксом в виде уникального идентификатора, представляющего равноправный узел. Контейнер Requests может быть синхронизирован в сообществе Requests. Разрешения для этого сообщества могут предоставлять двустороннюю синхронизацию между локальным контейнером, представляющим каждую реплику, и соответствующим контейнером в реплике каждого диспетчера. Другими словами, пользователь и диспетчеры для равноправного узла могут иметь полный доступ к контейнеру равноправного узла.
Политика для этого сообщества может инструктировать, по меньшей мере, одно из следующего: 1) одностороннюю синхронизацию папки FromManager с репликой из той же папки соответствующей вложенной папки Requests для реплики каждого диспетчера; и 2) одностороннюю синхронизацию папки ToManager от реплики той же папки соответствующей вложенной папки Requests для реплики каждого диспетчера. Папка ToManager хранит запросы AdvertiseReplica (Оповещение о реплике) и RequestRemoval (Удаление запроса). Папка ToReplica хранит запросы CompleteRemoval (Полное удаление). Запросы могут создаваться и удаляться и могут не модифицироваться. Следовательно, очень редко возникают конфликты в сообществе Requests. Запросы могут удаляться одновременно на нескольких репликах, но это может быть разрешено и не является конфликтом.
Запрос AdvertiseReplica может содержать идентификационные данные реплики, которая присоединилась к сообществу. Она может быть синхронизирована со всеми диспетчерами в сообществе. Диспетчер, который считывает запрос AdvertiseReplica, может добавлять реплику в список разрешений, хранящийся в сообществе Security (к примеру, детерминированное удаление всей дублей при необходимости), и удаляет запрос AdvertiseReplica. Это завершает добавление реплики в сообщество. Запрос AdvertiseReplica также может быть использован для того, чтобы передавать все конфигурационные изменения реплики в сообщество. Примером этого является то, когда режим синхронизации реплики изменяется.
Запрос RequestRemoval может содержать учетные данные удаляемой реплики. Этот запрос может быть создан посредством реплики в ответ на инициированное пользователем удаление реплики. Когда диспетчер обнаруживает то, что запрос RequestRemoval синхронизирован в контейнере Requests одной из синхронизирующихся реплик (к примеру, отличном от контейнера Requests собственной реплики), он удаляет запрос RequestRemoval и записывает запрос CompleteRemoval в тот же контейнер Requests.
Запрос CompleteRemoval не содержит данных, но он может указывать то, что реплика должна удалить собственные группы безопасности на основе совместно используемого ресурса и роли, а также метаданные синхронизации (Replica внутри синхронизируемого контейнера). Этот запрос может быть создан диспетчером. Он может быть в ответ на запрос RequestRemoval или в ответ на инициированное диспетчером удаление пользователя или реплики. Когда реплика синхронизирует запрос CompleteRemoval в своем контейнере Requests, она удаляет его совместно используемый ресурс и ассоциативно связанную группу безопасности.
Сообщение CompleteRemoval может быть удалено после фиксированного периода срока действия (к примеру, 7 дней). Если сообщение удалено до того, как реплика приняла его, реплика по-прежнему имеет метаданные синхронизации и по-прежнему может пытаться синхронизироваться с сообществом. Такая синхронизация завершится неудачно, если нет других реплик, находящихся в распоряжении того же пользователя в сообществе. В противном случае она может завершиться успешно. Метаданные для этой реплики могут быть удалены посредством этапа вручную. Если пользователь, который владеет репликой, не владеет более ни одной другой репликой в сообществе, пользователь также удаляется из списка пользователей. Это побуждает, чтобы соответствующие изменения безопасности инициировались на всех синхронизированных репликах.
Пользователи и диспетчеры, которые имеют ожидающие запросы на удаление, могут иметь слова Pending Removal (Ожидающее удаление) в UI машины, с которой они выдали запрос на удаление, при этом UI других машин не отражают его (к примеру, только отражают окончательное удаление, когда оно происходит). Используемыми идентификаторами имен сообществ могут быть, к примеру, по меньшей мере, одно из следующего: Data для сообщества Data, Security для сообщества Security и имя пользователя для сообщества ToManager и FromManager пользователя. Локальные и удаленные конечные точки для всех синхронизаций могут быть размещением соответствующей синхронизированной папки. В этой папке все имена сообществ уникальные.
В другом примере компонент 408 пользовательской синхронизации может разрешать добавление реплики в сообщество посредством добавления сначала сообщества с синхронизацией между равноправными узлами. Например, пользователь может активно присоединяться к сообществу с синхронизацией между равноправными узлами, при этом различные файлы и/или контейнеры могут быть синхронизированы. Затем пользователь может добавить компьютер в сообщество с помощью приложения синхронизации между равноправными узлами (описанного ниже) от этого компьютера и задать совместно используемый ресурс, чтобы присоединиться.
Дополнительно, диспетчер 408 пользовательской синхронизации может разрешать удаление пользователя, реплики и/или диспетчера. Следует принимать во внимание, что удаление пользователя и/или реплики посредством диспетчера может отличаться от пользователя или владельца реплики. Диспетчер может удалять пользователя или реплику, которая отличается от своей (к примеру, он также может удалить собственную реплику, описанную ниже). Диспетчер 408 пользовательской синхронизации также может предоставлять удаление реплики пользователем-владельцем или диспетчером. Пользователь может удалять одну реплику за раз из сообщества. Из этой реплики пользователь может активировать удаление. Если реплика последнего диспетчера в сообществе пытается удалить себя, но нет других реплик в сообществе, операция может завершиться неудачно. Это может предотвратить создание "сирот" в сообществе, которые не имели возможности удалить свои реплики. В одном примере последний диспетчер (к примеру, который также является последним пользователем в сообществе) может удалить синхронизированную папку, данные и/или метаданные.
Нижеприведенное относится к удалению пользователя или реплики посредством диспетчера, который отличается от пользователя или владельца реплики. Чтобы удалить отдельную реплику, запрос CompleteRemoval может быть записан в контейнер Requests каждой из реплик (к примеру, становится ли это доступным). Чтобы удалить все реплики указанного пользователя, запрос CompleteRemoval может быть записан в контейнер Requests каждой из реплик (к примеру, каждый раз, когда это становится доступным). Если не осталось реплик для указанного пользователя, все привилегии пользователя могут быть немедленно аннулированы посредством изменения данных безопасности и инициирования события синхронизации. Это по-прежнему позволяет реплике принимать и отправлять данные до тех пор, пока запрос CompleteRemoval может быть обработан. Тем не менее, другие реплики не могут пытаться отправлять или принимать данные в/из удаленной реплики.
Нижеприведенное относится к удалению реплики ее владельцем. Пользователь может удалять только одну реплику за раз из сообщества. Из реплики пользователь может активировать удаление. Это заставляет запрос RequestRemoval быть записанным в контейнер Requests реплики. Если реплика последнего диспетчера в сообществе пытается удалить себя, но нет других реплик в сообществе, операция завершается неудачно. Это предотвращает создание "сирот" в сообществе, которые не имели возможности удалить свои реплики. В противном случае последний диспетчер (к примеру, который также является последним пользователем в сообществе) удаляет все метаданные синхронизированных папок.
Только диспетчеры могут выполнять изменения в контейнер Security, которые корректно синхронизируются. Настройки безопасности запрещают синхронизацию другими пользователями всех изменений безопасности, выполненных пользователями, не являющимися диспетчерами. После того как изменения выполнены или приняты, приложение, выполняющееся на машине диспетчера, "пробуждается" для изменений и соответствующим образом модифицирует безопасность в контейнере Data и его содержимом. Поскольку эти разрешения могут модифицироваться только с привилегиями Administrator (Администратор), приложение использует службу приложения синхронизации между равноправными узлами (описанную ниже) для того, чтобы выполнить это. Доступ для совместного использования операционной системы необходим для того, чтобы осуществлять доступ к данным системы хранения данных. В одном примере только Administrator может создавать совместно используемый ресурс. Дополнительно, в другом примере только Administrator может создавать группу безопасности. Следовательно, приложение использует службу приложения синхронизации между равноправными узлами (к примеру, приложения синхронизации между равноправными узлами) (описана ниже) для того, чтобы выполнять это.
Компонент 406 синхронизации может реализовать такую топологию, что имеется прямое соединение между каждой репликой и диспетчером, поскольку диспетчеры могут осуществлять изменения безопасности и поскольку они могут быть не приняты от пользователя, не являющегося диспетчером. Кроме того, каждая реплика может регулярно контактировать с диспетчером, чтобы принимать последние изменения безопасности. Если реплика не может контактировать с диспетчером в течение определенного периода времени (к примеру, по меньшей мере, частично на основе периода тайм-аута такта), она может перейти в состояние, когда дополнительные изменения данных не будут приняты до тех пор, пока она не сможет принять конфигурацию безопасности от диспетчера. Помимо этого, пользовательский интерфейс (не показан) может указывать то, с какими пользователями выполнена успешная синхронизация. Если с репликой невозможно сконтактироваться, ее значок, отображаемый с наложением, может указывать этот факт. Пользовательский интерфейс может разрешать пользователю визуализировать любой синхронизированный контейнер, которым он владеет. Кроме того, в приложении работы с файлами системы хранения данных значок наложения может идентифицировать контейнер как синхронизированный контейнер.
Компонент 406 синхронизации может включать в себя компонент 410 синхронизации вручную (упоминаемый в данном документе как синхронизация 410 вручную), который предоставляет синхронизацию вручную данных, файлов и/или контейнеров. Синхронизация вручную предназначена для пользователей, которые не хотят, чтобы их данные были синхронизированы (либо считаны, либо записаны) до тех пор, пока не будут явно активированы. Список членов включает в себя режим синхронизации для каждой реплики. Другие реплики не пытаются синхронизироваться с репликой, которая синхронизируется вручную. Синхронизация вручную инициируется пользователем. Это инициирует событие синхронизации (описанное ниже).
Компонент 406 синхронизации может включать в себя компонент 412 автоматической синхронизации (упоминаемый в данном документе как автоматическая синхронизация 412), который предоставляет автоматическую синхронизацию для файла и/или контейнера, выбранного сообществом с синхронизацией между равноправными узлами. Автоматическая синхронизация может использовать полноузловую синхронизацию сообществ Data и Security. Каждая реплика может синхронизироваться с другой репликой, с которой ей разрешено синхронизироваться. Локальные изменения в контейнер данных обнаруживаются посредством приложений на локальной машине посредством средства отслеживания системы хранения данных (не показано). Средство отслеживания может быть запрограммировано так, чтобы не допускать инициирования посредством изменений синхронизации системы хранения файлов. Событие синхронизации инициируется, когда средство отслеживания активируется.
Фиг.5 иллюстрирует систему 500, которая упрощает синхронизацию данных в системах хранения данных, чтобы предоставить несколько уровней доступности. Компонент 506 синхронизации позволяет предоставлять защищенное сообщество с синхронизацией между равноправными узлами относительно системы 502 хранения данных и отличающейся системы 504 хранения данных, в котором различные уровни и/или слои доступа могут быть предоставлены. Компонент 506 синхронизации позволяет усовершенствовать существующий компонент отслеживания (не показан) в системах 502 и 504 хранения данных, чтобы обеспечить синхронизацию данных. Следует принимать во внимание, что компонент 506 синхронизации предоставляет синхронизацию данных посредством использования базовых и/или существующих механизмов синхронизации, ассоциативно связанных с различными системами хранения данных и/или машинами, при этом такие системы хранения данных и/или машины включают в себя несинхронизированные данные, которые должны быть синхронизированы. Следует принимать во внимание, что системы 502 и 504 хранения данных и компонент 506 синхронизации могут быть практически аналогичны системам и/или компонентам, описанным ранее.
Компонент 506 синхронизации дополнительно может использовать приложение 508 синхронизации между равноправными узлами, которое может запускаться как локальная система, которая представляет, по меньшей мере, одну операцию приложению, выполняющемуся в системе. Доступ к этим операциям может осуществляться посредством процессов на той же машине (к примеру, чтобы не допускать атак с других компьютеров). Например, приложение 508 синхронизации между равноправными узлами может быть установлено вместе с остальной частью компонента 506 синхронизации администратором. Следует принимать во внимание, что приложение 508 синхронизации между равноправными узлами может запускать экземпляр, ассоциативно связанный с каждой системой хранения данных и/или компьютером. Таким образом, приложение 508 синхронизации между равноправными узлами - это экземпляр, ассоциативно связанный с системой 502 хранения данных, а приложение 516 синхронизации между равноправными узлами - это экземпляр, ассоциативно связанный с системой 504 хранения данных. Более того, следует принимать во внимание, что для простоты приложение 508 синхронизации между равноправными узлами проиллюстрировано, но приложение 516 синхронизации между равноправными узлами также может включать в себя такие аспекты.
Приложение 508 синхронизации между равноправными узлами может реализовывать строку CreateShare (Создать совместно используемый ресурс) (контейнер). Эта операция создает совместно используемый ресурс в указанном контейнере (который может быть внутри системы хранения данных), а также создает соответствующие разрешения и добавляет разрешения для этих групп в контейнер и в совместно используемый ресурс. Операция возвращает полный UNC-путь в совместно используемый ресурс. Эта операция проверяет, является ли пользователь владельцем контейнера, и завершается неудачно, если это не так.
Таким образом, защита, предоставляемая посредством этого API, заключается в том, что только владельцу контейнера разрешено совместно его использовать.
Это ослабляет защиту, предоставляемую посредством ОС, которая запрещает владельцу контейнера создание совместно используемого ресурса, если не оказывается так, что пользователь также является Administrator. Тем не менее, это допустимо, поскольку защита на уровне совместно используемого ресурса более уязвима в предыдущих версиях операционных систем, которые не имели защиту на уровне папок.
Приложение 508 синхронизации между равноправными узлами может реализовывать SetPermissions (Задать разрешения) (контейнер). Эта операция проверяет, является ли вызывающий пользователь владельцем контейнера, и завершается неудачно, если это не так. Данная операция задает членство в соответствующей группе на основе разрешений в списке разрешений, сохраненном в контейнере Security. Для защиты вызывающая сторона не указывает явно группы ACL; они наследуются из контейнера и списка разрешений.
Приложение 508 синхронизации между равноправными узлами может реализовывать RemoveShare (Удалить совместно используемый ресурс) (контейнер). Эта операция проверяет, является ли вызывающий пользователь владельцем контейнера, и завершается неудачно, если это не так. Данная операция удаляет совместно используемый ресурс, созданный в контейнере, а также удаляет группы безопасности, ассоциативно связанные с совместно используемым ресурсом.
Приложение 508 синхронизации между равноправными узлами может быть разработано так, чтобы работать в качестве приложения, которое может выполняться в области уведомлений. Приложение 508 синхронизации между равноправными узлами может быть приложением, которое отвечает за диспетчеризацию синхронизации и предоставление оповещений о ходе выполнения и других данных, таких как конфликты. Более того, приложение 508 синхронизации между равноправными узлами также регистрируется как обработчик для запросов на приглашение. Контекстное меню содержит следующие элементы меню: 1) Options (Сервис); и 2) Exit (Выйти).
Приложение 508 синхронизации между равноправными узлами может создавать подписку на оповещения об изменениях данных в контейнере (к примеру, средстве отслеживания), при этом средством отслеживания может быть, по меньшей мере, одно из следующего: 1) Создание синхронизированных папок и пользователей. Одно средство отслеживания уровня хранилища следит за созданием, изменением и удалением элементов NonSynchronizedItem (Несинхронизированный элемент). Обработчик отслеживает элементы с именем SynchronizedFolderCreationMarker (Маркер создания синхронизированных папок). Он указывает то, что синхронизированная папка создана; 2) Каждая синхронизированная папка имеет средство отслеживания, которое отслеживает синхронизированную папку на предмет изменения данных; и 3) Каждая синхронизированная папка имеет средство отслеживания по реплике Data, которое отслеживает синхронизированную папку на предмет изменений метаданных приложений. Напомним, что метаданные приложения синхронизации между равноправными узлами сохранены внутри реплики Data. Например, если имеются две синхронизированные папки на одном компьютере, общее число средств отслеживания составляет 1+2+2=5 средств отслеживания.
Приложение 508 синхронизации между равноправными узлами дополнительно может использовать один из следующих подпроцессов: 1) UI-подпроцесс. Он обслуживает значок области уведомлений, контекстное меню и т.д. Нет обработчика исключений для данного подпроцесса; 2) Подпроцесс Activity Log (Журнал операций). Он отображает UI журнала операций. Нет обработчика исключений для данного подпроцесса; 3) Пул подпроцессов. В настоящее время это только один подпроцесс. Все обратные вызовы в итоге последовательно приводятся в исполнение в данном подпроцессе. Обработчик исключений для этого подпроцесса повторно инициализирует контроллер синхронизации. Он типично приводится в исполнение в таких случаях, когда пользователь вручную удаляет синхронизированную папку; и 4) Подпроцессы средства отслеживания: они не создаются непосредственно приложением. Каждое средство отслеживания может создавать один подпроцесс.
Приложение 508 синхронизации между равноправными узлами может реализовывать алгоритм диспетчеризации. Когда синхронизированная папка создается, запускается средство отслеживания создания. Обработчик может реализовать, по меньшей мере, одно из следующего: 1) Диспетчеризация синхронизации Data после задержки запуска; 2) Создание средства отслеживания в реплике Data, чтобы отслеживать изменения во вложенных папках Requests и Security; и 3) Диспетчеризация синхронизации папки Security после задержки запуска.
Когда возникает изменение во вложенных папках Security или Requests, средство отслеживания для реплики Data активируется. Обработчик может реализовать, по меньшей мере, одно из следующего: 1) Для входящих запросов во вложенную папку Requests: a) Обработка запросов (описана ниже); b) Для локальных изменений диспетчеризация синхронизации вложенной папки Requests; 2) Обновление разрешений безопасности для реплик; и 3) Для локальных изменений диспетчеризация синхронизации вложенной папки Security. Когда возникает изменение во вложенной папке Data, средство отслеживания для контейнера активируется. Если изменение является локальным изменением, обработчик выполняет диспетчеризацию синхронизации сообщества Data. После того как сообщество Data синхронизировано, синхронизация на основе времени назначается для сообщества Data. После того как сообщество Security синхронизировано, синхронизация на основе времени назначается для сообщества Security. После того как вложенная папка Requests синхронизирована, синхронизация на основе времени назначается для вложенной папки Requests.
Компонент 506 синхронизации может включать компонент интеграции, который упрощает интеграцию между компонентом 506 синхронизации (к примеру и в частности, приложением 508 синхронизации между равноправными узлами), в операционную систему с другими приложениями. Это приложение предназначено для того, чтобы раскрывать большую часть своего пользовательского интерфейса посредством существующих приложений, таких как проводник файлов операционной системы.
Локальный контейнер системы хранения данных в проводнике файлов операционной системы может иметь различные элементы меню. Если контейнер не является синхронизированной папкой, два элемента меню могут быть добавлены, как, например, (но не только) следующие: 1) Synchronize… (Синхронизировать…); он вызывает диалог Synchronize (Синхронизация), который дает возможность синхронизированной папке быть созданной и т.д.; и 2) Join Synchronized Folder… (Присоединиться к синхронизированной папке…); он вызывает диалог Join Synchronized Folder (Присоединение к синхронизированной папке). Если контейнер является синхронизированной папкой, элемент меню "Synchronize…" также отображается вместо элемента меню Allow Synchronization… (Разрешить синхронизацию). Если есть какие-либо зарегистрированные конфликты в контейнере, элемент меню Resolve Conflicts… (Разрешить конфликты…) может отобразиться, который открывает отдельное окно проводника, которое показывает виртуальный контейнер Conflicts (Конфликты), добавленный посредством расширения пространства имен.
Вкратце, обращаясь к фиг.7, проиллюстрирован снимок 700 экрана, который предоставляет создание новой синхронизированной папки (к примеру, диалога синхронизированной папки). Этот диалог используется для того, чтобы создать новую синхронизированную папку или управлять текущей синхронизированной папкой, а также прекращать синхронизацию папки. Диалог Synchronization (Синхронизация) содержит лист свойств и вкладку General (Общее), а также вкладку для каждой оснастки, такой как оснастка системы хранения данных и оснастка операционной системы Shares and Web Folder (Совместно используемые ресурсы и веб-ресурсы). Кнопка Invite размещена внизу листа и является активной, когда синхронизированная папка установлена для синхронизации.
В одном варианте осуществления диалоговое окно может быть активировано для папки, которая не является синхронизированной папкой. В этом примере, по меньшей мере, одно из следующего может быть реализовано: 1) Флажок Allow users to synchronize with this folder (Разрешить пользователям синхронизироваться с этой папкой) установлен; 2) Флажок Do not allow users to synchronize with this folder (Запретить пользователям синхронизироваться с этой папкой) снят; 3) Поле редактирования названия синхронизированной папки доступно для чтения/записи; 4) Поле редактирования Description (Описание) доступно для чтения/записи; 5) Кнопки Settings (Параметры), OK, Cancel (Отмена) и Apply (Применить) доступны; 6) Элементы управления в группах Synchronization Type (Тип синхронизации) и Conflict Resolution (Разрешение конфликтов) отключены; и 7) Все элементы управления в групповом поле Users (во вкладке) могут быть отключены. Пользователь может ввести имя и описание и может задать настройки для папки. При этом Apply необходимо щелкнуть, чтобы создать синхронизированную папку.
В другом примере управление текущей синхронизированной папкой может быть реализовано. Например, если диалоговое окно вызвано для папки, которая является текущей синхронизированной папкой, по меньшей мере, одно из следующего может быть выполнено: 1) Флажок Allow users to synchronize with this folder установлен; 2) Флажок Do not allow users to synchronize with this folder снят; 3) Поле редактирования названия синхронизированной папки доступно только для чтения; это обусловлено тем, что название является идентификатором уровня сообщества; 4) Поле редактирования Description доступно для чтения/записи; 5) Кнопки Settings, OK, Cancel и Apply доступны; 6) Элементы управления в группах Synchronization Type и Conflict Resolution включены; и 7) Все элементы управления в групповом поле Users (во вкладке) могут быть включены.
Чтобы удалить синхронизированную папку, пользователь может установить флажок Do not allow users to synchronize with this folder. В этот момент все остальные элементы управления, за исключением OK и Allow users to synchronize with this folder, отключены. Когда щелкнуто OK, отображается диалог подтверждения и синхронизированная папка удаляется. Контейнер системы хранения данных и все его данные остаются нетронутыми. Только папка синхронизации и другие метаданные папки синхронизации могут быть удалены.
Компонент 510 интеграции может дополнительно предоставлять диалог, связанный с присоединением к синхронизированной папке. Обращаясь вкратце к фиг.8, проиллюстрирован снимок 800 экрана, который предоставляет присоединение к синхронизированной папке в соответствии с заявляемым предметом изобретения. Снимок 800 экрана обеспечивает ввод имени синхронизированной папки, при этом, если диалог обрабатывает запрос на присоединение без ошибки, снимок 810 экрана может быть отображен. Снимок 810 экрана показывает, что конкретная папка синхронизирована, а также все роли, ассоциативно связанные с ней. В одном примере, если пользователь выбирает Manage (Управление), текущее открытое диалоговое поле может быть закрыто и синхронизированный диалог может быть отображен.
Более того, компонент 510 интеграции может реализовать приложение мастера, чтобы упростить использование компонента 506 синхронизации, чтобы предоставить защищенное сообщество с синхронизацией между равноправными узлами. Обращаясь вкратце к фиг.9, отображается снимок 900 экрана, на котором приложение мастера может обеспечить приглашение отличающегося пользователя и синхронизацию конкретных данных, папки и/или контейнера. Снимок 910 экрана позволяет пользователю выбрать методику приглашения, чтобы реализовать с конкретной синхронизацией.
Если пользователь выбирает пригласить по электронной почте, приглашение по электронной почте может быть создано с помощью текста и почтового сообщения с вложением с приглашением. Обращаясь вкратце к фиг.10, снимок 1000 экрана иллюстрирует отправленное подтверждение на приглашение по электронной почте. Помимо этого, снимок 1010 экрана иллюстрирует выполнение приложения мастера приглашения пользователя для синхронизации, реализованного посредством компонента 510 интеграции.
Вкратце, ссылаясь на фиг.11, снимок 1100 экрана иллюстрирует экран приложения мастера, который может быть отображен, когда пользователь выбирает сохранить приложение как файл. Следует принимать во внимание, что имя, размещение и/или расширение файла может быть выполнено из любого подходящего типа, ассоциативно связанного с операционной системой. Ссылаясь на фиг.12, снимок 1200 экрана иллюстрирует проверку выполнения пользователем сохранения приглашения в приложении мастера приглашения пользователя для синхронизации. Фиг.13 - это снимок 1300 экрана, который позволяет пользователю принять приглашение (к примеру, диалог приема приглашения). Пользователь может щелкнуть приглашение (к примеру, из почтового сообщения, из вложения и т.д.), причем пользователь может выбрать папку, которая должна быть синхронизирована с синхронизируемой папкой. Как показано на снимке 1300 экрана, пользователь может выбрать любую требуемую папку, чтобы синхронизировать с конкретной папкой, которая уже синхронизирована.
Обращаясь к фиг.14, проиллюстрирован снимок 1400 экрана, который реализует оснастку системы хранения данных, в которой функциональность синхронизации системы хранения данных может быть разложена как оснастка. Снимок 1400 экрана показывает имена пользователей, имена компьютеров и различные уровни разрешений (к примеру, слои, доступ и т.д.). Продолжая с фиг.14, снимок 1410 экрана иллюстрирует экран Could not find user (Не удалось найти пользователя), который отображает пользователю, когда запрошенный пользователь не найден. Чтобы добавить пользователя, пользователь может щелкнуть текст, который читается Click here to add user (Щелкнуть здесь, чтобы добавить пользователя). Затем пользователь вводит имя приглашенного пользователя. Имя пользователя может быть введено любым надлежащим способом. Например, имя может быть введено посредством, по меньшей мере, одного из следующего: 1) домен\псевдоним (к примеру, Redmond\billg); 2) псевдоним (к примеру, billg, при этом всплывающее сообщение об ошибке может быть реализовано, если псевдоним не разрешается уникально); и 3) имя (к примеру, Bill Grable). Пользователь может нажать клавишу Escape, чтобы отменить операцию. Когда клавиша Enter нажата, имя пользователя может быть разрешено. На снимке 1410 экрана, если щелкнут поиск людей, диалог Could not find User может быть закрыт, и отображается указатель пользователя. Имена пользователей не могут быть отредактированы после того, как имена пользователей разрешены. Пользователи могут быть полностью удалены (к примеру, отображается диалог подтверждения). Пользователи могут быть добавлены с уровнем разрешений по умолчанию Reader.
Когда диспетчер Manager щелкает правой кнопкой на строке для пользователя, контекстное меню с вариантами выбора может быть отображено (к примеру, Reader, Writer, Manager, Remove и т.д.). Текущая роль пользователя может быть проверена. Когда пользователь щелкает правой кнопкой на строке для другого пользователя или реплики, меню не отображается. Когда пользователь щелкает строку для текущей реплики, меню, содержащее только элемент меню Remove, отображается. Следует принимать во внимание, что может быть несколько реплик (к примеру, пары пользователь/компьютер), соответствующих данному пользователю. Также может быть несколько реплик, соответствующих данной паре пользователь/компьютер. Это соответствует нескольким связующим объектам.
Приглашения могут быть от конечной точки пользователю. Для синхронизации через посредника (STI) имеет смысл иметь, по меньшей мере, один из следующих вариантов: 1) Создание приглашения, чтобы синхронизироваться с конечной точкой STI, а также со всеми конечными точками системы хранения данных. Это имеет смысл, если получатель соединен со всеми конечными точками. В этом случае конечная точка STI обновляется сразу же, когда изменяются данные получателя; и 2) Создание приглашения, чтобы синхронизироваться только с конечной точкой STI. В этом случае другие получатели неизвестны. Когда приглашение принято, синхронизированная папка создается так, как обычно. Также создается сообщение AdvertiseReplica. Подтверждение подключения продолжается.
Компонент 506 синхронизации дополнительно может включать в себя компонент 512 интерфейса прикладного программирования (API), который раскрывает, по меньшей мере, одну операцию, ассоциативно связанную с компонентом 506 синхронизации. API-компонент 512 может выполнять синхронизированное создание и/или управление папками программируемо. Например, API-компонент 512 может реализовать namespace.OS.storage.synchronization.selfliost. API-компонент 512 может использовать различный псевдокод, при этом Приложение A является примером такого псевдокода, который предоставляет программируемость заявляемому предмету изобретения.
Фиг.6 иллюстрирует систему 600, которая использует интеллектуальность для того, чтобы упрощать синхронизацию данных, ассоциативно связанных, по меньшей мере, с двумя отличающимися системами хранения данных. Система 600 может включать в себя систему 602 хранения данных, отличающуюся систему 604 хранения данных и компонент 606 синхронизации, все из которых могут быть практически аналогичны соответствующим компонентам, описанным на предыдущих чертежах. Система 600 дополнительно включает в себя интеллектуальный компонент 608. Интеллектуальный компонент 608 может быть использован посредством компонента 606 синхронизации, чтобы упрощать синхронизацию данных, ассоциативно связанных, по меньшей мере, с двумя отличающимися системами хранения данных.
Следует понимать, что интеллектуальный компонент 608 может предусматривать рассуждение о или обозначать состояния системы, окружения и/или пользователя из набора данных наблюдения, полученных посредством событий и/или данных. Логический вывод может быть использован для того, чтобы определить конкретный контекст или действие, либо может генерировать распределение вероятностей, к примеру, по состояниям. Логический вывод может быть вероятностным, т.е. вычислением распределения вероятностей по интересующим состояниям на основе анализа данных и событий. Логический вывод также может означать методики, используемые для компоновки событий более высокого уровня из набора событий и/или данных. Такой логический вывод приводит к составлению новых событий или действий из набора наблюдаемых событий и/или сохраненных данных событий, независимо от того, коррелируются ли события в тесной временной близости и исходят ли события и данные из одного или нескольких источников событий и данных. Различные схемы и/или системы (к примеру, методы опорных векторов, нейронные сети, экспертные системы, сети байесовских представлений, нечеткая логика, ядра синтеза данных и т.д.) классификации (явно и/или неявно подготовленные) могут быть использованы в связи с выполнением автоматического и/или возможного в качестве умозаключения вывода в связи с заявленным предметом изобретения.
Классификатор - это функция, которая сопоставляет входной вектор атрибутов x=(x1, x2, x3, x4, xn) с достоверностью того, что входные данные принадлежат классу, т.е. f(x)=confidence(class). Эта классификация может использовать вероятностный и/или статистический анализ (к примеру, разложение на анализ эффективности и затрат), чтобы прогнозировать или логически выводить действие, которое, как желает пользователь, должно быть автоматически выполнено. Метод опорных векторов (SVM) - это пример классификатора, который может быть использован. SVM работает посредством нахождения гиперповерхности в пространстве возможных входных данных, причем эта гиперповерхность пытается отделить критерии инициализации от неинициализирующих событий. Интуитивно это делает классификацию корректной для тестирования данных, которые близки, но не идентичны обучающим данным. Другие указанные и неуказанные подходы классификации моделей, например, включают в себя простые алгоритмы Байеса, сети байесовских представлений, деревья решений, нейронные сети, модели нечеткой логики и модели вероятностной классификации, обеспечивающие различные образцы независимости, которые могут применяться. Классификация при использовании в данном документе также включает в себя статистическую регрессию, которая используется для того, чтобы разрабатывать приоритетные модели.
Фиг.17-18 иллюстрируют методологии в соответствии с заявленным предметом изобретения. Для упрощения пояснения методологии изображены и описаны как последовательности действий. Следует понимать и принимать во внимание, что предмет изобретения не ограничен проиллюстрированными действиями и/или последовательностью действий, например, действия могут совершаться в различных последовательностях и/или одновременно, и с другими действиями, не представленными и не описанными в настоящем документе. Более того, не все проиллюстрированные действия могут быть необходимы, чтобы реализовать методологии в соответствии с заявленным предметом изобретения. Помимо этого, специалисты в данной области техники поймут и примут во внимание, что методологии могут быть альтернативно представлены как последовательности взаимосвязанных состояний или событий посредством схемы состояний или событий.
Фиг.17 иллюстрирует методологию 1700 для синхронизации данных, ассоциативно связанных, по меньшей мере, с двумя отличающимися системами хранения данных. По ссылке с номером 1702 могут быть идентифицированы данные в системе хранения данных, которые должны быть синхронизированы и/или участвовать в связи синхронизации. Система хранения данных может быть сложной моделью, по меньшей мере, частично основывающейся на структуре базы данных, в которой элемент, подчиненный элемент, свойство и связь задаются для того, чтобы обеспечить возможность представления информации в системе хранения данных как экземпляров сложных типов. Система хранения данных может использовать набор базовых компоновочных блоков для создания и управления гибкими постоянными объектами и связями между объектами. Элемент может быть задан как наименьшая единица непротиворечивости в системе хранения данных, которая может независимо защищаться, упорядочиваться, синхронизироваться, копироваться, резервироваться/восстанавливаться и т.д. Элемент - это экземпляр типа, при этом все элементы в системе хранения данных могут быть сохранены в одном глобальном экстенте элементов. Система хранения данных может быть основана, по меньшей мере, частично на структуре одного элемента и/или контейнера. Следует принимать во внимание, что система хранения данных может представлять основанную на базе данных систему хранения файлов, чтобы поддерживать вышеописанную функциональность, в которой могут быть реализованы любые надлежащие характеристики и/или атрибуты. Следует принимать во внимание, что данные могут быть идентифицированы, например, пользователем, который хочет синхронизировать конкретную часть данных.
По ссылке с номером 1704, по меньшей мере, один пользователь может быть приглашен для того, чтобы принять участие в связи синхронизации, ассоциативно связанной с идентифицированными данными. Например, пользователь может идентифицировать часть данных, в которой может быть создан экземпляр связи синхронизации, посредством приглашения переносного компьютера принять участие. Таким образом, пользователь может приглашать с использованием любой надлежащий методики, такой как, но не только, электронная почта, IP-адрес, имя пользователя, псевдоним, имя и т.д. По ссылке с номером 1706 слои и/или уровни доступности могут быть назначены различным пользователям в связи синхронизации. Например, диспетчер может создавать связь синхронизации, при которой функции чтения, записи и/или добавления могут назначаться пользователям.
Фиг.18 иллюстрирует систему 1800, которая упрощает усовершенствование существующих механизмов синхронизации в системе хранения данных, чтобы обеспечить непротиворечивость данных между системами хранения данных. По ссылке с номером 1802 могут быть идентифицированы данные в системе хранения, которые должны быть синхронизированы и/или участвовать в защищенном сообществе с синхронизацией между равноправными узлами. По ссылке с номером 1804 любая существующая методика синхронизации может быть усовершенствована из системы хранения данных, чтобы предоставить синхронизацию данных для сообщества равноправных узлов и/или связи синхронизации. Например, отслеживание в системе хранения данных может захватывать изменение(я) данных в объектах, чтобы упростить синхронизацию данных между двумя отличающимися системами, хранящими наборы данных.
По ссылке с номером 1806 сообщество с синхронизацией между равноправными узлами может быть создано, по меньшей мере, с одним пользователем, участвующим в нем. Синхронизированное сообщество может включать в себя реплики (к примеру, синхронизированные папки, принадлежащие пользователям в сообществе) и диспетчера (к примеру, члена сообщества, который авторизован на том, чтобы осуществлять изменения в списке членов реплики). В одном примере диспетчеры обрабатывают эти запросы и выполняют изменения в метаданных членов, а затем синхронизируют метаданные с другими пользователями в сообществе. По ссылке с номером 1808 каждый пользователь в сообществе может принимать участие с конкретным уровнем и/или слоем доступа к данным в рамках этого сообщества с синхронизацией между равноправными узлами.
Чтобы предоставить дополнительный контекст для реализации различных аспектов заявленного предмета изобретения, фиг.19-20 и последующее обсуждение предназначены, чтобы предоставить краткое общее описание подходящего вычислительного окружения, в котором могут быть реализованы различные аспекты настоящего изобретения. Хотя заявленный предмет изобретения описан выше в общем контексте машиноисполняемых инструкций компьютерной программы, которая запущена на локальном компьютере и/или удаленном компьютере, специалисты в данной области техники признают, что предмет изобретения также может быть реализован в сочетании с другими программными модулями. В общем, программные модули включают в себя процедуры, программы, компоненты, структуры данных и т.д., которые выполняют отдельные задачи и/или реализуют отдельные абстрактные типы данных.
Более того, специалисты в данной области техники примут во внимание, что способы изобретения могут быть применены на практике с другими конфигурациями вычислительной системы, в том числе однопроцессорными или многопроцессорными вычислительными системами, мини-ЭВМ, мейнфреймами, а также персональными компьютерами, "карманными" вычислительными устройствами, основанной на микропроцессорах и/или программируемой бытовой электронной аппаратурой и т.п., каждая из которых может оперативно обмениваться данными с одним или более ассоциативно связанными устройствами. Проиллюстрированные аспекты заявленного предмета изобретения также могут быть реализованы на практике в распределенных вычислительных окружениях, в которых определенные задачи выполняются удаленными обрабатывающими устройствами, которые связаны через сеть обмена данными. Тем не менее, некоторые, если не все, аспекты предмета изобретения могут быть применены на практике на автономных компьютерах. В распределенном вычислительном окружении программные модули могут быть размещены на локальных и/и удаленных устройствах хранения данных.
Фиг.19 - это схематическая блок-схема примера вычислительного окружения 1900, с которым может взаимодействовать заявленный предмет изобретения. Система 1900 включает в себя одного или более клиентов 1910. Клиентом(ами) 1910 могут быть аппаратные средства и/или программное обеспечение (к примеру, потоки, процессы, вычислительные устройства). Система 1900 также включает в себя один или более серверов 1920. Сервером(ами) 1920 могут быть аппаратные средства и/или программное обеспечение (к примеру, потоки, процессы, вычислительные устройства). Серверы 1920 могут размещать потоки, чтобы выполнять преобразования, например, посредством использования предмета изобретения.
Одна из возможных связей между клиентом 1910 и сервером 1920 может быть в виде пакета данных, приспособленного для передачи между двумя или более вычислительными процессами. Система 1900 включает в себя структуру 1940 обмена данными, которая может быть использована, чтобы облегчить обмен данными между клиентом(ами) 1910 и сервером(ами) 1920. Клиент(ы) 1910 удобно подключены к одному или более запоминающим устройствам 1950 данных клиента, которые могут быть использованы, чтобы сохранять информацию локально на клиенте(ах) 1910. Также сервер(ы) 1920 удобно подключены к одному или более запоминающим устройствам 1930 данных сервера, которые могут быть использованы, чтобы сохранять информацию локально на серверах 1920.
Что касается фиг.20, типичное окружение 2000 для реализации различных сторон заявленного предмета изобретения включает в себя компьютер 2012. Компьютер 2012 включает в себя процессор 2014, системную память 2016 и системную шину 2018. Системная шина 2018 соединяет компоненты системы, в том числе (но не только) системную память 2016 с процессором 2014. Процессор 2014 может быть любым из различных доступных процессоров. Архитектуры с двумя микропроцессорами и другие многопроцессорные архитектуры также могут быть использованы в качестве процессора 2014.
Системная шина 2018 может быть любого из нескольких типов структур(ы) шин, в том числе шины памяти или контроллера памяти, периферийной шины или внешней шины и/или локальной шины, используя любую из множества архитектур шин, в том числе (но не только) 11-битную шину, шину промышленного стандарта (ISA), шину микроканальной архитектуры (MCA), расширенную шину ISA (EISA), встроенный интерфейс накопителей (IDE), локальную шину Ассоциации по стандартам в области видеоэлектроники (VLB), шину соединения периферийных компонентов (PCI), универсальную последовательную шину (USB), ускоренный графический порт (AGP), шину Международной ассоциации производителей плат памяти для персональных вычислительных машин (PCMCIA) и шину интерфейса малых вычислительных систем (SCSI).
Системная память 2016 включает в себя энергозависимую память 2020 и энергонезависимую память 2022. Базовая система ввода-вывода (BIOS), содержащая основные процедуры, чтобы передавать информацию между элементами в вычислительной машине 2012, например, при загрузке, сохраняется в энергонезависимой памяти 2022. В качестве иллюстрации, но не ограничения, энергонезависимая память 2022 может включать в себя постоянное запоминающее устройство (ПЗУ), программируемое ПЗУ (ППЗУ), электрически программируемое ПЗУ (ЭППЗУ), электрически стираемое программируемое ПЗУ (ЭСППЗУ) или флэш-память. Энергозависимое запоминающее устройство 2020 включает в себя оперативное запоминающее устройство (ОЗУ), которое выступает в качестве внешнего кэша. В качестве иллюстрации, но не ограничения, ОЗУ доступно во многих формах, например статическое ОЗУ (СОЗУ), динамическое ОЗУ (ДОЗУ), синхронное ДОЗУ (СДОЗУ), СДОЗУ с двойной скоростью передачи данных (DDR СДОЗУ), улучшенное СДОЗУ (ESDRAM), Rambus direct RAM (RDRAM), direct Rambus dynamic RAM (DRDRAM) и Rambus dynamic RAM (RDRAM).
Компьютер 2012 также включает в себя сменный/стационарный, энергозависимый/энергонезависимый носитель хранения данных вычислительной машины. Фиг.20 иллюстрирует, например, накопитель 2024 на дисках. Накопитель 2024 на дисках включает в себя (но не только) такие устройства, как накопитель на магнитных дисках, накопитель на гибких дисках, ленточный накопитель, накопитель Jaz, накопитель Zip, накопитель LS-100, карту флэш-памяти или карту Memory Stick. Помимо этого, накопитель 2024 на дисках может включать в себя носитель хранения данных независимо или в сочетании с другим носителем хранения, в том числе (но не только) накопитель на оптических дисках, например устройство чтения компакт-дисков (CD-ROM), накопитель на записываемых компакт-дисках (CD-R Drive), накопитель на перезаписываемых компакт-дисках (CD-RW Drive) или накопитель чтения универсальных цифровых дисков (DVD-ROM). Чтобы содействовать подключению дисковых запоминающих устройств 2024 к системной шине 2018, типично используется съемный или несъемный интерфейс, такой как интерфейс 2026.
Следует принимать во внимание, что фиг.20 описывает программное обеспечение, которое выступает в качестве посредника между пользователями и базовыми ресурсами компьютера, описанными в подходящем операционном окружении 2000. Такое программное обеспечение включает в себя операционную систему 2028. Операционная система 2028, которая может быть сохранена на накопителе 2024 на дисках, служит для того, чтобы контролировать и распределять ресурсы вычислительной системы 2012. Системные приложения 2030 используют преимущества управления ресурсами операционной системой 2028 посредством программных модулей 2032 и программных данных 2034, сохраненных либо в системной памяти 2016, либо на накопителе 2024 на дисках. Следует принимать во внимание, что заявленный предмет изобретения может быть реализован с различными операционными системами или сочетаниями операционных систем.
Пользователь вводит команды или информацию в компьютер 2012 посредством устройств(а) 2036 ввода. Устройства 2036 ввода включают в себя (но не только) указательное устройство, такое как мышь, шаровой манипулятор, перо, сенсорную панель, клавиатуру, микрофон, джойстик, игровую панель, спутниковую антенну, сканер, плату ТВ-тюнера, цифровую камеру, цифровую видеокамеру, веб-камеру и т.п. Эти и другие устройства ввода подключаются к процессору 2014 через системную шину 2018 посредством интерфейсного порта(ов) 2038. Интерфейсный порт(ы) 2038 включает в себя, например, последовательный порт, параллельный порт, игровой порт и универсальную последовательную шину (USB). Устройство(а) 2040 вывода использует некоторые из тех же типов портов, что и устройство(а) 2036 ввода. Таким образом, например, порт USB может быть использован, чтобы обеспечить ввод в компьютер 2012 и чтобы выводить информацию из компьютера 2012 на устройство 2040 вывода. Адаптер 2042 вывода предоставлен, чтобы проиллюстрировать, что существуют некоторые устройства 2040 вывода (такие как мониторы, динамики и принтеры) среди прочих устройств 2040 вывода, которые требуют специальных адаптеров. Адаптеры 2042 вывода включают в себя, в качестве иллюстрации, но не ограничения, видео- и звуковые платы, которые обеспечивают средство соединения между устройством 2040 вывода и системной шиной 2018. Следует заметить, что другие устройства и/или системы устройств предоставляют возможности как ввода, так и вывода, такие как удаленный компьютер(ы) 2044.
Компьютер 2012 может работать в сетевом окружении, используя логические подключения к одному или более удаленным компьютерам, например удаленным компьютерам 2044. Удаленным компьютером(ами) 2044 может быть персональный компьютер, сервер, маршрутизатор, сетевая ПЭВМ, рабочая станция, устройство на базе микропроцессора, одноранговое устройство или другой стандартный сетевой узел и т.п. и типично включает в себя большинство или все элементы, описанные относительно компьютера 2012. В целях краткости только запоминающее устройство 2046 хранения проиллюстрировано с удаленным компьютером (ами) 2044. Удаленные компьютеры 2044 логически подключены к компьютеру 2012 посредством сетевого интерфейса 2048 и затем физически подключены через подключение 2050 связи. Сетевой интерфейс 2048 заключает в себе проводные и/или беспроводные сети обмена данными, такие как локальные сети, вычислительные (LAN) и глобальные вычислительные сети (WAN). Технологии LAN включают в себя Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet, Token Ring и т.п. Технологии WAN включают в себя, но не только, двухточечные каналы связи, сети с коммутацией каналов, такие как цифровые сети с комплексными услугами (ISDN) и их разновидности, сети с коммутацией пакетов и цифровые абонентские линии (DSL).
Подключение(я) 2050 связи означает аппаратные средства/программное обеспечение, используемое для того, чтобы подключить сетевой интерфейс 2048 к шине 2018. Хотя подключение 2050 связи показано в целях иллюстративной ясности внутри компьютера 2012, оно также может быть внешним по отношению к компьютеру 2012. Аппаратные средства/программное обеспечение, необходимое для подключения к сетевому интерфейсу 2048, включает в себя (только для типичных целей) внутренние и внешние технологии, например модемы, в том числе модемы на регулярных телефонных линиях, кабельные модемы и DSL-модемы, ISDN-адаптеры и платы Ethernet.
То, что было описано выше, включает в себя примеры предмета изобретения. Конечно, невозможно описать каждое вероятное сочетание компонентов или методологий в целях описания заявленного предмета изобретения, но обычный специалист в данной области техники может признать, что многие дополнительные сочетания и перестановки предмета изобретения допустимы. Следовательно, заявленный предмет изобретения предназначен охватывать все подобные преобразования, модификации и разновидности, которые попадают под сущность и область применения прилагаемой формулы изобретения.
В частности и относительно различных функций, выполняемых вышеописанными компонентами, устройствами, схемами, системами и т.п., термины (в том числе ссылка на "средство"), используемые для описания этих компонентов, предназначены для того, чтобы соответствовать (если не указано иное) любому компоненту, который выполняет указанную функцию описанного компонента (к примеру, функциональный эквивалент), даже если он структурно не эквивалентен раскрытой структуре, которая выполняет функцию в проиллюстрированных в данном документе типичных аспектах заявленного предмета изобретения. В этом смысле также следует принимать во внимание, что изобретение включает в себя систему, а также машиночитаемый носитель, имеющий машиноисполняемые инструкции для выполнения действий и/или событий различных способов заявленного предмета изобретения.
Помимо этого, хотя конкретный признак предмета изобретения, возможно, был раскрыт относительно только одной из нескольких реализаций, этот признак может быть объединен с одним или более признаков других реализаций, что может быть требуемо и предпочтительно для любого данного или конкретного приложения. Более того, в тех рамках, в которых термины "включает в себя" и "в том числе" и их варианты используются либо в подробном описании, либо в формуле изобретения, предполагается что эти термины являются включающими, аналогично термину "содержит".
ПРИЛОЖЕНИЕ A
namespace OS.Storage.Synchronization.SelfHost
{
/// <summary>
/// Здесь представлен совместно используемый файловый ресурс системы хранения данных, который соответствует
/// SynchronizedFolder.
/// </summary>
public class Share
{
public string Path{ get; }
public string Name { get;}
}
/// <summary>
/// Режим синхронизации равноправного узла.
/// </summary>
enum SynchronizationMode
{
Automatic, Manual
}
/// <summary>
/// SyncController разработан как объект длительного использования, который отслеживает
/// локальное хранилище по умолчанию для синхронизированных папок. Он отвечает на изменения в
/// синхронизированных папках посредством выполнения соответствующих операций
/// синхронизации. Он также синхронизирует метаданные, такие как списки членов и
/// разрешения, со всеми равноправными узлами в сообществе.
///
/// Это одноэлементное множество, которое инициируется посредством вызова статического метода Start,
/// который возвращает дескриптор для созданного экземпляра SyncController.
/// Чтобы остановить, вызывается метод Stop() для этого экземпляра.
/// Альтернативно, шаблон using может быть использован для того, чтобы автоматически остановить
/// контроллер:
/// using (SyncController Start())
/// {
///…
/// }
/// </summary>
public class SyncController: DisposableObject
{
public static void Start();
public void Stop();
}
/// <summary>
/// Здесь представлена локальная SynchronizedFolder.
/// </summary>
public class SynchronizedFolder
{
/// <summary>
/// Совместно используемый файловый ресурс системы хранения данных
/// </summary>
/// <value></value>
public Share Share { get; }
public string Name { get; }
public string Description { get;}
public Item Container { get; }
/// <summary>
/// Возвращает всех пользователей, которые синхронизированы с синхронизированной папкой
/// </summary>
/// <value></value>
public Users Users { get; }
/// <summary>
/// Создает новую синхронизированную папку в указанном контейнере
/// </summary>
/// <param name="container"></param>
/// <returns>The created synchronized folder.</returns>
public static SynchronizedFolder Create(Item container, string synchronizedFolderName, out string errorMessage);
/// <summary>
/// Открывает существующую синхронизированную папку.
/// </summary>
/// <param name="container"></param>
public static SynchronizedFolder Open(Item container);
/// <summary>
/// Присоединяется как существующее сообщество.
/// </summary>
/// <param name="container">The container to share</param>
/// <param name="synchronizedFolderName">The name of the community</param>
/// <param name="peer"></param>
/// <returns></returns>
public static SynchronizedFolder Join(Item container, string synchronizedFolderName, Peer peer)
/// <summary>
/// Удаляются все папки для пользователя.
/// Если удаляется папка последнего диспетчера и остаются только папки пользователей, не являющихся диспетчерами,
/// выдается исключение.
/// </summary>
/// <param name="user"></param>
public void Remove(User user);
/// <summary>
/// Удаляется папка равноправного узла. Если это не текущий равноправный узел,
/// текущий пользователь должен быть владельцем или диспетчером.
/// Если удаляется папка последнего диспетчера и остаются только папки пользователей, не являющихся диспетчерами,
/// выдается исключение.
/// </summary>
/// <param name="peer"></param>
public void Remove(Peer Peer);
/// <summary>
/// Инициируется синхронизация с соответствующими равноправными узлами.
/// </summary>
public void Synchronize();
/// <summary>
/// Сохраняются все конфигурационные изменения в папках, их пользователях и
/// равноправных узлах и т.д., в хранилище.
/// </summary>
public void Save();
}
/// <summary>
/// Типы пользователей в системе.
/// </summary>
enum UserType
{
Reader,
Writer,
Manager
}
/// <summary>
/// Набор пользователей. Пользователи могут быть добавлены и удалены
/// из этого набора.
/// </summary>
public class Users: IEnumerable<User>
{
Enumerator GetEnumerator();
void Add(User user);
void Remove(User user);
}
/// <summary>
/// Набор равноправных узлов. Равноправные узлы могут быть добавлены и удалены
/// из этого набора.
/// </summary>
public class Peers: IEnumerable<Peers>
{
Enumerator GetEnumerator();
void Add(Peer Peer);
void Remove(Peer Peer);
}
/// <summary>
/// Представляет одного пользователя. Пользователи владеют равноправными узлами.
/// </summary>
public class User
{
public Guid Sid { get; }
/// <summary>
/// Имя пользователя, например, levn.
/// </summary>
public string UserName { get; }
/// <summary>
/// Домен пользователя, например, redmond.
/// </summary>
public string Domain { get; }
/// <summary>
/// Тип пользователя, например, Manager. Его задание
/// требует, чтобы вы были диспетчером, иначе выдается
/// исключение.
/// </summary>
public UserType UserType { get; set }
/// <summary>
/// Набор равноправных узлов, находящихся в распоряжении этого пользователя.
/// Это null, если пользователь приглашен,
/// но еще не присоединился (принял).
/// </summary>
/// <value></value>
public Peer[] Peers {get;}
}
/// <summary>
/// Представляется удаленная папка, которая синхронизируется с
/// локальной SynchronizedFolder.
/// </summary>
public class Peer
{
/// <summary>
/// Совместно используемый файловый ресурс системы хранения данных
/// </summary>
/// <value></value>
public Share Share { get; }
/// <summary>
/// Владелец равноправного узла
/// </summary>
/// <value></value>
public User User { get; }
/// <summary>
/// Режим синхронизации равноправного узла.
/// </summary>
/// <value></value>
public SynchronizationMode SynchronizationMode { get; }
}
}
Claims (20)
1. Способ создания связи синхронизации в защищенном сообществе с синхронизацией между равноправными узлами, заключающийся в том, что
принимают ввод пользователя на первом вычислительном устройстве, который уточняет, что первая папка на первом вычислительном устройстве должна быть синхронизирована со второй папкой на втором вычислительном устройстве;
в ответ на ввод первое вычислительное устройство создает приглашение, которое включает в себя информацию для создания связи синхронизации между первой и второй папками, причем информация включает в себя список членов, который задает права доступа к первой папке для каждого пользователя в синхронизированном сообществе так, что список членов включает в себя, по меньшей мере, пользователя другого вычислительного устройства в синхронизированном сообществе в дополнение к пользователю второго вычислительного устройства, а также права доступа для, по меньшей мере, другого пользователя и пользователя второго вычислительного устройства для доступа к первой папке; и
передают приглашение от первого вычислительного устройства ко второму вычислительному устройству так, чтобы при исполнении приглашения вторым вычислительным устройством связь синхронизации была установлена между первой и второй папками так, чтобы во второй папке был сохранен список членов, включающий в себя права доступа для пользователя второго вычислительного устройства, а также права доступа, по меньшей мере, одного другого пользователя для доступа к первой папке.
принимают ввод пользователя на первом вычислительном устройстве, который уточняет, что первая папка на первом вычислительном устройстве должна быть синхронизирована со второй папкой на втором вычислительном устройстве;
в ответ на ввод первое вычислительное устройство создает приглашение, которое включает в себя информацию для создания связи синхронизации между первой и второй папками, причем информация включает в себя список членов, который задает права доступа к первой папке для каждого пользователя в синхронизированном сообществе так, что список членов включает в себя, по меньшей мере, пользователя другого вычислительного устройства в синхронизированном сообществе в дополнение к пользователю второго вычислительного устройства, а также права доступа для, по меньшей мере, другого пользователя и пользователя второго вычислительного устройства для доступа к первой папке; и
передают приглашение от первого вычислительного устройства ко второму вычислительному устройству так, чтобы при исполнении приглашения вторым вычислительным устройством связь синхронизации была установлена между первой и второй папками так, чтобы во второй папке был сохранен список членов, включающий в себя права доступа для пользователя второго вычислительного устройства, а также права доступа, по меньшей мере, одного другого пользователя для доступа к первой папке.
2. Способ по п.1, в котором права доступа уточняют, является ли пользователь второго вычислительного устройства диспетчером, так, чтобы пользователь мог изменять права доступа любого пользователя в синхронизированном сообществе.
3. Способ по п.1, в котором первая папка включает в себя папку запросов для хранения запросов переданных к/от первого вычислительного устройства для осуществления связи синхронизации в синхронизированном сообществе.
4. Способ по п.3, в котором папка запросов включает в себя только одну вложенную папку, которая содержит запросы, переданные к/от диспетчера синхронизированного сообщества.
5. Способ по п.3, в котором пользователь первого вычислительного устройства является диспетчером синхронизированного сообщества, причем папка запросов включает в себя вложенную папку для каждого узла в синхронизированном сообществе, причем каждая вложенная папка включает в себя запросы, переданные узлом к диспетчеру, и запросы, переданные диспетчером к узлу.
6. Способ по п.1, в котором дополнительно принимают запрос от второго вычислительного устройства на удаление второй папки из синхронизированного сообщества, в ответ на это удаляют связь синхронизации между первой и второй папками, включающее в себя обновление списка членов для указания удаления второй папки из синхронизированного сообщества; и синхронизируют список членов с репликой списка членов сохраненного на другом вычислительном устройстве, который составляет синхронизированное сообщество.
7. Способ по п.1, в котором дополнительно принимают указание от компонента первого вычислительного устройства, на котором содержимое первой папки было изменено; в ответ на это синхронизируют первую папку со второй папкой.
8. Способ по п.7, в котором компонент первого вычислительного устройства является компонентом базовой системы хранения данных, которая поддерживает первую папку так, что не требуется нового механизма в компонентах синхронизированного сообщества для отслеживания изменений первой папки.
9. Способ по п.1, в котором приглашение также включает в себя данные первой папки, которые должны быть реплицированы во вторую папку.
10. Машиночитаемый носитель данных, содержащий сохраненные на нем инструкции, при исполнении которых процессор выполняет этапы способа для создания связи синхронизации в защищенном сообществе с синхронизацией между равноправными узлами, заключающийся в том, что
принимают ввод пользователя на первом вычислительном устройстве, который задает то, что первая папка на первом вычислительном устройстве должна быть синхронизирована со второй папкой на втором вычислительном устройстве;
в ответ на ввод первое вычислительное устройство создает приглашение, которое включает в себя информацию для создания связи синхронизации между первой и второй папками, причем информация включает в себя список членов, который задает права доступа к первой папке для каждого пользователя в синхронизированном сообществе так, что список членов включает в себя, по меньшей мере, одного пользователя другого вычислительного устройства в синхронизированном сообществе в дополнение к пользователю второго вычислительного устройства, а также права доступа для, по меньшей мере, другого пользователя и пользователя второго вычислительного устройства для доступа к первой папке; и
передают приглашение от первого вычислительного устройства ко второму вычислительному устройству так, чтобы при исполнении приглашения вторым вычислительным устройством связь синхронизации была установлена между первой и второй папками так, чтобы во второй папке был сохранен список членов, включающий в себя права доступа для пользователя второго вычислительного устройства, а также права доступа, по меньшей мере, одного другого пользователя для доступа к первой папке.
принимают ввод пользователя на первом вычислительном устройстве, который задает то, что первая папка на первом вычислительном устройстве должна быть синхронизирована со второй папкой на втором вычислительном устройстве;
в ответ на ввод первое вычислительное устройство создает приглашение, которое включает в себя информацию для создания связи синхронизации между первой и второй папками, причем информация включает в себя список членов, который задает права доступа к первой папке для каждого пользователя в синхронизированном сообществе так, что список членов включает в себя, по меньшей мере, одного пользователя другого вычислительного устройства в синхронизированном сообществе в дополнение к пользователю второго вычислительного устройства, а также права доступа для, по меньшей мере, другого пользователя и пользователя второго вычислительного устройства для доступа к первой папке; и
передают приглашение от первого вычислительного устройства ко второму вычислительному устройству так, чтобы при исполнении приглашения вторым вычислительным устройством связь синхронизации была установлена между первой и второй папками так, чтобы во второй папке был сохранен список членов, включающий в себя права доступа для пользователя второго вычислительного устройства, а также права доступа, по меньшей мере, одного другого пользователя для доступа к первой папке.
11. Носитель по п.10 в котором права доступа задают, является ли пользователь второго вычислительного устройства диспетчером, так, чтобы пользователь мог изменять права доступа любого пользователя в синхронизированном сообществе.
12. Носитель по п.10, в котором первая папка включает в себя папку запросов для хранения запросов переданных к/от первого вычислительного устройства для осуществления связи синхронизации в синхронизированном сообществе.
13. Носитель по п.12, в котором папка запросов включает в себя только одну вложенную папку, которая содержит запросы, переданные к/от диспетчера синхронизированного сообщества.
14. Носитель по п.12, в котором пользователь первого вычислительного устройства является диспетчером синхронизированного сообщества, причем папка запросов включает в себя вложенную папку для каждого узла в синхронизированном сообществе, причем каждая вложенная папка включает в себя запросы, переданные узлом к диспетчеру, и запросы, переданные диспетчером к узлу.
15. Носитель по п.10, в котором дополнительно принимают запрос от второго вычислительного устройства на удаление второй папки из синхронизированного сообщества, в ответ на это удаляют связь синхронизации между первой и второй папками, включающее в себя обновление списка членов для указания удаления второй папки из синхронизированного сообщества; и синхронизируют список членов с репликой списка членов сохраненного на другом вычислительном устройстве, который составляет синхронизированное сообщество.
16. Носитель по п.10, в котором дополнительно принимают указание от компонента первого вычислительного устройства, на котором содержимое первой папки было изменено; в ответ на это синхронизируют первую папку со второй папкой.
17. Носитель по п.16, в котором компонент первого вычислительного устройства является компонентом базовой системы хранения данных, которая поддерживает первую папку так, что не требуется нового механизма в компонентах синхронизированного сообщества для отслеживания изменений первой папки.
18. Компьютерная система, сконфигурированная в качестве диспетчера в защищенном сообществе с синхронизацией между равноправными узлами, содержащая процессор и запоминающее устройство, в котором сохранены следующие компоненты:
компонент отслеживания системы хранения данных, причем компонент отслеживания отслеживает изменения, которые умеют место в системе хранения данных;
компонент синхронизации для создания связей синхронизации между папками в вычислительной системе и папками сохраненными на других вычислительных системах в синхронизированном сообществе, причем компонент синхронизации включает в себя компонент диспетчера в пользовательской синхронизации для создания связей синхронизации, для создания синхронизированных папок, для приглашения пользователей присоединиться к синхронизированному сообществу, для приема приглашений присоединиться к синхронизированному сообществу, удаления пользователей из синхронизированного сообщества и поддержания списка членов прав доступа каждого пользователя к синхронизированным папкам в синхронизированном сообществе; и
приложение синхронизации, которое принимает ввод пользователя в компьютерной системе для передачи компоненту синхронизации;
причем при приеме ввода пользователя задают, что первая папка в вычислительной системе должна быть синхронизирована с синхронизированным сообществом, причем приложение синхронизации передает ввод пользователя диспетчеру пользовательской синхронизации компонента синхронизации, так что диспетчер пользовательской синхронизации создает приглашение, которое включает в себя указание на то, что первая папка должна быть синхронизирована с другой папкой на второй вычислительной системе в синхронизированном сообществе, и которое также включает в себя список членов, который задает, какие права доступа будет иметь пользователь второй вычислительной системы, а также, по меньшей мере, один другой пользователь другой вычислительной системы в синхронизированном сообществе, к первой папке;
причем диспетчер пользовательской синхронизации дополнительно передает приглашение второй вычислительной системе так, что в ответ на выбор пользователем второй вычислительной системы второй папки, с которой необходимо синхронизировать первую папку, создают связь синхронизации между первой и второй папками так, чтобы во второй папке был сохранен список членов, включающий в себя права доступа для пользователя второй вычислительной системы, а также права доступа, по меньшей мере, одного другого пользователя для доступа к первой папке.
компонент отслеживания системы хранения данных, причем компонент отслеживания отслеживает изменения, которые умеют место в системе хранения данных;
компонент синхронизации для создания связей синхронизации между папками в вычислительной системе и папками сохраненными на других вычислительных системах в синхронизированном сообществе, причем компонент синхронизации включает в себя компонент диспетчера в пользовательской синхронизации для создания связей синхронизации, для создания синхронизированных папок, для приглашения пользователей присоединиться к синхронизированному сообществу, для приема приглашений присоединиться к синхронизированному сообществу, удаления пользователей из синхронизированного сообщества и поддержания списка членов прав доступа каждого пользователя к синхронизированным папкам в синхронизированном сообществе; и
приложение синхронизации, которое принимает ввод пользователя в компьютерной системе для передачи компоненту синхронизации;
причем при приеме ввода пользователя задают, что первая папка в вычислительной системе должна быть синхронизирована с синхронизированным сообществом, причем приложение синхронизации передает ввод пользователя диспетчеру пользовательской синхронизации компонента синхронизации, так что диспетчер пользовательской синхронизации создает приглашение, которое включает в себя указание на то, что первая папка должна быть синхронизирована с другой папкой на второй вычислительной системе в синхронизированном сообществе, и которое также включает в себя список членов, который задает, какие права доступа будет иметь пользователь второй вычислительной системы, а также, по меньшей мере, один другой пользователь другой вычислительной системы в синхронизированном сообществе, к первой папке;
причем диспетчер пользовательской синхронизации дополнительно передает приглашение второй вычислительной системе так, что в ответ на выбор пользователем второй вычислительной системы второй папки, с которой необходимо синхронизировать первую папку, создают связь синхронизации между первой и второй папками так, чтобы во второй папке был сохранен список членов, включающий в себя права доступа для пользователя второй вычислительной системы, а также права доступа, по меньшей мере, одного другого пользователя для доступа к первой папке.
19. Система по п.18, в которой при приеме запроса на удаление из второй вычислительной системы диспетчер пользовательской синхронизации обновляет список членов посредством удаления связи синхронизации между первой и второй папками из синхронизированного сообщества, и затем синхронизирует обновленный список членов с репликой списка членов, которая хранится на другой вычислительной системе, которая является частью синхронизированного сообщества.
20. Система по п.18, в которой приложение синхронизации дополнительно обеспечивает интерфейс пользователя в ответ на ввод пользователя, который выбирает пользователя из списка членов, причем интерфейс пользователя обеспечивает опцию для задания, выбранного пользователя в качестве диспетчера, читателя, писателя в синхронизированном сообществе и опцию для удаления пользователя из синхронизированного сообщества.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/211,119 | 2005-08-24 | ||
US11/211,119 US7930346B2 (en) | 2005-08-24 | 2005-08-24 | Security in peer to peer synchronization applications |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2008106904A RU2008106904A (ru) | 2009-08-27 |
RU2421799C2 true RU2421799C2 (ru) | 2011-06-20 |
Family
ID=37772095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2008106904/08A RU2421799C2 (ru) | 2005-08-24 | 2006-07-20 | Безопасность в приложениях синхронизации равноправных узлов |
Country Status (16)
Country | Link |
---|---|
US (1) | US7930346B2 (ru) |
EP (1) | EP1917608B1 (ru) |
JP (1) | JP4955682B2 (ru) |
KR (1) | KR101311145B1 (ru) |
CN (1) | CN101243443A (ru) |
AU (1) | AU2006284414B2 (ru) |
BR (1) | BRPI0615024A2 (ru) |
CA (1) | CA2616242A1 (ru) |
EG (1) | EG25571A (ru) |
IL (1) | IL188662A0 (ru) |
MX (1) | MX2008002502A (ru) |
NO (1) | NO340412B1 (ru) |
NZ (1) | NZ565968A (ru) |
RU (1) | RU2421799C2 (ru) |
WO (1) | WO2007024380A2 (ru) |
ZA (1) | ZA200800961B (ru) |
Families Citing this family (120)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7689721B2 (en) * | 1998-05-29 | 2010-03-30 | Research In Motion Limited | System and method for pushing information from a host system to a mobile data communication device |
EP1854019A4 (en) * | 2004-09-22 | 2010-12-22 | Cyberdefender Corp | NETWORK FOR PROTECTION AGAINST THREATS |
WO2007087109A2 (en) | 2005-12-21 | 2007-08-02 | Transip, Inc. | System and method for efficient replication of and access to application specific environments and data |
US8527660B2 (en) * | 2006-12-22 | 2013-09-03 | Palm, Inc. | Data synchronization by communication of modifications |
US7680067B2 (en) * | 2007-03-09 | 2010-03-16 | Palm, Inc. | Peer-to-peer data synchronization architecture |
US8402284B2 (en) * | 2007-04-30 | 2013-03-19 | Hewlett-Packard Development Company, L.P. | Symbiotic storage devices |
US20090006451A1 (en) * | 2007-06-29 | 2009-01-01 | Microsoft Corporation | Web Page-Container Interactions |
US8626771B2 (en) * | 2007-06-29 | 2014-01-07 | Microsoft Corporation | Container reputation |
US8838729B2 (en) | 2007-06-29 | 2014-09-16 | Microsoft Corporation | Gathering statistics based on container exchange |
KR100897849B1 (ko) * | 2007-09-07 | 2009-05-15 | 한국전자통신연구원 | 비정상 프로세스 탐지 방법 및 장치 |
US8090685B2 (en) * | 2007-09-14 | 2012-01-03 | Microsoft Corporation | Knowledge based synchronization of subsets of data with no move condition |
US20090196311A1 (en) * | 2008-01-31 | 2009-08-06 | Microsoft Corporation | Initiation and expiration of objects in a knowledge based framework for a multi-master synchronization environment |
US8185495B2 (en) * | 2008-02-01 | 2012-05-22 | Microsoft Corporation | Representation of qualitative object changes in a knowledge based framework for a multi-master synchronization environment |
US8086565B2 (en) * | 2008-02-18 | 2011-12-27 | Microsoft Corporation | File system watcher in the presence of different file systems |
CN101604234B (zh) * | 2008-06-13 | 2011-06-01 | 英业达股份有限公司 | 存储装置的数据同步***及其方法 |
US8762420B2 (en) * | 2008-06-20 | 2014-06-24 | Microsoft Corporation | Aggregation of data stored in multiple data stores |
US8090681B2 (en) * | 2008-06-26 | 2012-01-03 | Microsoft Corporation | Resolving conflicts in content management systems |
US8458128B2 (en) * | 2008-08-26 | 2013-06-04 | Microsoft Corporation | Minimal extensions required for multi-master offline and collaboration for devices and web services |
US7941410B2 (en) * | 2008-09-30 | 2011-05-10 | Microsoft Corporation | Method and system of managing conflicts for a set of synchronized folders |
US8412930B2 (en) | 2008-10-09 | 2013-04-02 | Microsoft Corporation | Device authentication within deployable computing environment |
US8380663B2 (en) * | 2008-12-17 | 2013-02-19 | Sybase, Inc. | Data integrity in a database environment through background synchronization |
US8832023B2 (en) * | 2009-01-30 | 2014-09-09 | Apple Inc. | System for managing distributed assets and metadata |
US8407241B2 (en) * | 2009-06-12 | 2013-03-26 | Microsoft Corporation | Content mesh searching |
WO2011002818A1 (en) * | 2009-06-29 | 2011-01-06 | Cyberdefender Corporation | Systems and methods for operating an anti-malware network on a cloud computing platform |
WO2011011709A2 (en) * | 2009-07-24 | 2011-01-27 | Plumchoice, Inc. | System and methods for providing a multi-device, multi-service platform via a client agent |
US9311378B2 (en) * | 2009-10-09 | 2016-04-12 | International Business Machines Corporation | Data synchronization between a data management system and an external system |
US20110153391A1 (en) * | 2009-12-21 | 2011-06-23 | Michael Tenbrock | Peer-to-peer privacy panel for audience measurement |
US20130232198A1 (en) * | 2009-12-21 | 2013-09-05 | Arbitron Inc. | System and Method for Peer-to-Peer Distribution of Media Exposure Data |
GB201007191D0 (en) * | 2010-04-29 | 2010-06-09 | British Broadcasting Corp | Content provision system |
US8924304B2 (en) * | 2010-06-04 | 2014-12-30 | Apple Inc. | Methods for using unique identifiers to identify systems in collaborative interaction in a mesh network |
US20120134282A1 (en) * | 2010-11-30 | 2012-05-31 | Nokia Corporation | Method and apparatus for selecting devices to form a community |
US9002897B2 (en) | 2010-12-28 | 2015-04-07 | Microsoft Technology Licensing, Llc | Aspected interfaces and methods for synchronized containers and other data structures |
WO2012099617A1 (en) | 2011-01-20 | 2012-07-26 | Box.Net, Inc. | Real time notification of activities that occur in a web-based collaboration environment |
KR101548448B1 (ko) * | 2011-06-03 | 2015-08-28 | 애플 인크. | 네트워크-기반 디지털 데이터 리포지토리의 관리 |
US9201895B2 (en) | 2011-06-03 | 2015-12-01 | Apple Inc. | Management of downloads from a network-based digital data repository based on network performance |
EP2729877A4 (en) | 2011-07-08 | 2015-06-17 | Box Inc | DESKTOP APPLICATION FOR ACCESS AND INTERACTION WITH JOBS IN A CLOUD-BASED CONTENT MANAGEMENT SYSTEM AND SYNCHRONIZATION MECHANISMS THEREFOR |
WO2013062599A1 (en) | 2011-10-26 | 2013-05-02 | Box, Inc. | Enhanced multimedia content preview rendering in a cloud content management system |
US9098474B2 (en) | 2011-10-26 | 2015-08-04 | Box, Inc. | Preview pre-generation based on heuristics and algorithmic prediction/assessment of predicted user behavior for enhancement of user experience |
US8942854B2 (en) * | 2011-11-28 | 2015-01-27 | Kohler Co. | System and method for identifying electrical devices in a power management system |
WO2013082320A1 (en) | 2011-11-29 | 2013-06-06 | Box, Inc. | Mobile platform file and folder selection functionalities for offline access and synchronization |
US9904435B2 (en) | 2012-01-06 | 2018-02-27 | Box, Inc. | System and method for actionable event generation for task delegation and management via a discussion forum in a web-based collaboration environment |
US11232481B2 (en) | 2012-01-30 | 2022-01-25 | Box, Inc. | Extended applications of multimedia content previews in the cloud-based content management system |
US9965745B2 (en) | 2012-02-24 | 2018-05-08 | Box, Inc. | System and method for promoting enterprise adoption of a web-based collaboration environment |
US20130268480A1 (en) * | 2012-04-05 | 2013-10-10 | Box, Inc. | Method and apparatus for selective subfolder synchronization in a cloud-based environment |
US9575981B2 (en) | 2012-04-11 | 2017-02-21 | Box, Inc. | Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system |
US9218406B2 (en) * | 2012-04-26 | 2015-12-22 | Connected Data, Inc. | System and method for managing user data in a plurality of storage appliances over a wide area network for collaboration, protection, publication, or sharing |
US10601799B2 (en) | 2012-04-26 | 2020-03-24 | Connected Data, Inc. | System and method for visualizing data sharing arrangements for an organization |
US9396156B2 (en) | 2012-04-26 | 2016-07-19 | Connected Data, Inc. | System and method for socially organized storage and shared access to storage appliances |
US9413587B2 (en) | 2012-05-02 | 2016-08-09 | Box, Inc. | System and method for a third-party application to access content within a cloud-based platform |
WO2013166520A1 (en) | 2012-05-04 | 2013-11-07 | Box, Inc. | Repository redundancy implementation of a system which incrementally updates clients with events that occurred via cloud-enabled platform |
US9691051B2 (en) | 2012-05-21 | 2017-06-27 | Box, Inc. | Security enhancement through application access control |
US8914900B2 (en) | 2012-05-23 | 2014-12-16 | Box, Inc. | Methods, architectures and security mechanisms for a third-party application to access content in a cloud-based platform |
US20130332856A1 (en) | 2012-06-10 | 2013-12-12 | Apple Inc. | Digital media receiver for sharing image streams |
US10338940B2 (en) * | 2012-06-27 | 2019-07-02 | International Business Machines Corporation | Adjusting adminstrative access based on workload migration |
GB2505072A (en) | 2012-07-06 | 2014-02-19 | Box Inc | Identifying users and collaborators as search results in a cloud-based system |
US9712510B2 (en) | 2012-07-06 | 2017-07-18 | Box, Inc. | Systems and methods for securely submitting comments among users via external messaging applications in a cloud-based platform |
US10567498B2 (en) * | 2012-07-27 | 2020-02-18 | Samsung Electronics Co., Ltd. | Terminal and server performing data synchronization |
US9794256B2 (en) | 2012-07-30 | 2017-10-17 | Box, Inc. | System and method for advanced control tools for administrators in a cloud-based service |
KR101638656B1 (ko) | 2012-08-23 | 2016-07-11 | 엘에스산전 주식회사 | 산업용 자동화를 위한 클라우드 컴퓨팅 기반의 데이터 공유 시스템 및 산업용 기기 관리 장치 |
US9558202B2 (en) | 2012-08-27 | 2017-01-31 | Box, Inc. | Server side techniques for reducing database workload in implementing selective subfolder synchronization in a cloud-based environment |
US9135462B2 (en) | 2012-08-29 | 2015-09-15 | Box, Inc. | Upload and download streaming encryption to/from a cloud-based platform |
US9195519B2 (en) | 2012-09-06 | 2015-11-24 | Box, Inc. | Disabling the self-referential appearance of a mobile application in an intent via a background registration |
US9117087B2 (en) | 2012-09-06 | 2015-08-25 | Box, Inc. | System and method for creating a secure channel for inter-application communication based on intents |
US9292833B2 (en) | 2012-09-14 | 2016-03-22 | Box, Inc. | Batching notifications of activities that occur in a web-based collaboration environment |
US10915492B2 (en) | 2012-09-19 | 2021-02-09 | Box, Inc. | Cloud-based platform enabled with media content indexed for text-based searches and/or metadata extraction |
US9959420B2 (en) | 2012-10-02 | 2018-05-01 | Box, Inc. | System and method for enhanced security and management mechanisms for enterprise administrators in a cloud-based environment |
US9495364B2 (en) | 2012-10-04 | 2016-11-15 | Box, Inc. | Enhanced quick search features, low-barrier commenting/interactive features in a collaboration platform |
US9665349B2 (en) | 2012-10-05 | 2017-05-30 | Box, Inc. | System and method for generating embeddable widgets which enable access to a cloud-based collaboration platform |
US10235383B2 (en) | 2012-12-19 | 2019-03-19 | Box, Inc. | Method and apparatus for synchronization of items with read-only permissions in a cloud-based environment |
US9396245B2 (en) | 2013-01-02 | 2016-07-19 | Box, Inc. | Race condition handling in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform |
US9953036B2 (en) | 2013-01-09 | 2018-04-24 | Box, Inc. | File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform |
US9507795B2 (en) | 2013-01-11 | 2016-11-29 | Box, Inc. | Functionalities, features, and user interface of a synchronization client to a cloud-based environment |
US10311121B2 (en) | 2013-01-11 | 2019-06-04 | Apple Inc. | Validation and delivery of digital assets |
EP2757491A1 (en) | 2013-01-17 | 2014-07-23 | Box, Inc. | Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform |
US9501363B1 (en) | 2013-03-15 | 2016-11-22 | Nuodb, Inc. | Distributed database management system with node failure detection |
US10740323B1 (en) | 2013-03-15 | 2020-08-11 | Nuodb, Inc. | Global uniqueness checking in distributed databases |
US11176111B2 (en) | 2013-03-15 | 2021-11-16 | Nuodb, Inc. | Distributed database management system with dynamically split B-tree indexes |
WO2014168913A1 (en) | 2013-04-08 | 2014-10-16 | Nuodb, Inc. | Database management system with database hibernation and bursting |
US9411870B2 (en) * | 2013-05-08 | 2016-08-09 | iData Crunch | System and method for location aware fine-grained multi-channel synchronization of mobile repositories along with aggregate analytic computation |
US10846074B2 (en) | 2013-05-10 | 2020-11-24 | Box, Inc. | Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client |
US10725968B2 (en) | 2013-05-10 | 2020-07-28 | Box, Inc. | Top down delete or unsynchronization on delete of and depiction of item synchronization with a synchronization client to a cloud-based platform |
US9633037B2 (en) | 2013-06-13 | 2017-04-25 | Box, Inc | Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform |
US9805050B2 (en) | 2013-06-21 | 2017-10-31 | Box, Inc. | Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform |
US9535924B2 (en) | 2013-07-30 | 2017-01-03 | Box, Inc. | Scalability improvement in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform |
US10509527B2 (en) | 2013-09-13 | 2019-12-17 | Box, Inc. | Systems and methods for configuring event-based automation in cloud-based collaboration platforms |
US9535909B2 (en) | 2013-09-13 | 2017-01-03 | Box, Inc. | Configurable event-based automation architecture for cloud-based collaboration platforms |
CN104699723B (zh) * | 2013-12-10 | 2018-10-19 | 北京神州泰岳软件股份有限公司 | 数据交换适配器、异构***之间数据同步***和方法 |
US10614041B2 (en) * | 2014-03-17 | 2020-04-07 | Citrix Systems, Inc. | Sync as a service for cloud-based applications |
US10530854B2 (en) | 2014-05-30 | 2020-01-07 | Box, Inc. | Synchronization of permissioned content in cloud-based environments |
US9430669B2 (en) | 2014-07-23 | 2016-08-30 | Dropbox, Inc. | Collection folders in a content management system |
US10038731B2 (en) | 2014-08-29 | 2018-07-31 | Box, Inc. | Managing flow-based interactions with cloud-based shared content |
US9894119B2 (en) | 2014-08-29 | 2018-02-13 | Box, Inc. | Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms |
US20170243403A1 (en) * | 2014-11-11 | 2017-08-24 | Bent Image Lab, Llc | Real-time shared augmented reality experience |
WO2016077506A1 (en) | 2014-11-11 | 2016-05-19 | Bent Image Lab, Llc | Accurate positioning of augmented reality content |
US10114615B1 (en) * | 2014-12-16 | 2018-10-30 | United Technologies Corporation | Feature based control system for multi-user CAx |
CN104834879A (zh) * | 2015-03-11 | 2015-08-12 | 嘉兴市烟草公司平湖分公司 | 多***同步采集扫描枪 |
IN2015CH01317A (ru) * | 2015-03-18 | 2015-04-10 | Wipro Ltd | |
US10884869B2 (en) | 2015-04-16 | 2021-01-05 | Nuodb, Inc. | Backup and restore in a distributed database utilizing consistent database snapshots |
US10114957B2 (en) | 2015-04-17 | 2018-10-30 | Dropbox, Inc. | Collection folder for collecting file submissions and using facial recognition |
US9692826B2 (en) | 2015-04-17 | 2017-06-27 | Dropbox, Inc. | Collection folder for collecting file submissions via a customizable file request |
US10885209B2 (en) | 2015-04-17 | 2021-01-05 | Dropbox, Inc. | Collection folder for collecting file submissions in response to a public file request |
US10180954B2 (en) | 2015-05-29 | 2019-01-15 | Nuodb, Inc. | Disconnected operation within distributed database systems |
US10067969B2 (en) | 2015-05-29 | 2018-09-04 | Nuodb, Inc. | Table partitioning within distributed database systems |
US10642750B2 (en) | 2015-08-03 | 2020-05-05 | Arista Networks, Inc. | System and method of a shared memory hash table with notifications and reduced memory utilization |
US11068469B2 (en) | 2015-09-04 | 2021-07-20 | Arista Networks, Inc. | System and method of a dynamic shared memory hash table with notifications |
WO2017066801A1 (en) | 2015-10-16 | 2017-04-20 | Bent Image Lab, Llc | Augmented reality platform |
US10713966B2 (en) | 2015-12-31 | 2020-07-14 | Dropbox, Inc. | Assignments for classrooms |
WO2017165705A1 (en) | 2016-03-23 | 2017-09-28 | Bent Image Lab, Llc | Augmented reality for the internet of things |
WO2018013934A1 (en) * | 2016-07-14 | 2018-01-18 | Digital Asset Holdings | Digital asset architecture |
KR102600366B1 (ko) | 2017-08-15 | 2023-11-08 | 누오디비 인코포레이티드 | 분산형 데이터베이스에서의 인덱스 분할 |
CN107656970A (zh) * | 2017-08-31 | 2018-02-02 | 郑州云海信息技术有限公司 | 一种数据同步方法、装置及服务器 |
US10872062B2 (en) * | 2017-10-27 | 2020-12-22 | Dropbox, Inc. | Moderated collaborative editing in collaborative content items |
US10866963B2 (en) | 2017-12-28 | 2020-12-15 | Dropbox, Inc. | File system authentication |
US10942723B2 (en) | 2019-04-05 | 2021-03-09 | Sap Se | Format for multi-artefact software packages |
US10956140B2 (en) | 2019-04-05 | 2021-03-23 | Sap Se | Software installation through an overlay file system |
US11232078B2 (en) | 2019-04-05 | 2022-01-25 | Sap Se | Multitenancy using an overlay file system |
US11113249B2 (en) | 2019-04-05 | 2021-09-07 | Sap Se | Multitenant application server using a union file system |
US10809994B1 (en) * | 2019-04-05 | 2020-10-20 | Sap Se | Declarative multi-artefact software installation |
US11924350B2 (en) | 2021-07-29 | 2024-03-05 | Digital Asset (Switzerland) GmbH | Cryptographically enforced partial blinding for distributed system |
US20240211446A1 (en) * | 2022-12-22 | 2024-06-27 | Dropbox, Inc. | Implementing different synchronization processes using a multi-root system |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6662212B1 (en) * | 1999-08-31 | 2003-12-09 | Qualcomm Incorporated | Synchronization of a virtual workspace using E-mail extensions |
US7917628B2 (en) * | 1999-12-02 | 2011-03-29 | Western Digital Technologies, Inc. | Managed peer-to-peer applications, systems and methods for distributed data access and storage |
US8793374B2 (en) * | 1999-12-02 | 2014-07-29 | Western Digital Technologies, Inc. | Managed peer-to-peer applications, systems and methods for distributed data access and storage |
US6754678B2 (en) * | 1999-12-20 | 2004-06-22 | California Institute Of Technology | Securely and autonomously synchronizing data in a distributed computing environment |
US6892210B1 (en) | 2000-12-29 | 2005-05-10 | Worldsync, Inc. | Database management and synchronization across a peer-to-peer network |
FR2833446B1 (fr) * | 2001-12-12 | 2004-04-09 | Viaccess Sa | Protocole de controle du mode d'acces a des donnees transmises en mode point a point ou point multi-point |
US20030120699A1 (en) | 2001-12-24 | 2003-06-26 | Storage Technology Corporation | Variable synchronicity between duplicate transactions |
US20060136441A1 (en) * | 2002-04-02 | 2006-06-22 | Tetsunosuke Fujisaki | Method and apparatus for synchronous project collaboration |
US6965674B2 (en) * | 2002-05-21 | 2005-11-15 | Wavelink Corporation | System and method for providing WLAN security through synchronized update and rotation of WEP keys |
US20040010510A1 (en) * | 2002-07-10 | 2004-01-15 | Timo Hotti | Method and system for database synchronization |
US7340502B2 (en) * | 2002-10-24 | 2008-03-04 | Microsoft Corporation | Method and apparatus for maintaining consistency of a shared space across multiple endpoints in a peer-to-peer collaborative computer system |
US20050037787A1 (en) * | 2003-06-27 | 2005-02-17 | Rosett-Wireless Corporation | Wireless intelligent portable-server system (WIPSS) |
JP4583376B2 (ja) | 2003-08-21 | 2010-11-17 | マイクロソフト コーポレーション | ハードウェア/ソフトウェアインタフェースシステムにより管理可能な情報のユニットに対する同期処理サービスを実現するシステムおよび方法 |
KR20060113353A (ko) * | 2003-08-21 | 2006-11-02 | 마이크로소프트 코포레이션 | 하드웨어/소프트웨어 인터페이스 시스템에 의해 관리가능한 정보 단위들을 조직하기 위한 디지털 이미지스키마의 구현을 위한 시스템 및 방법 |
US7734690B2 (en) * | 2003-09-05 | 2010-06-08 | Microsoft Corporation | Method and apparatus for providing attributes of a collaboration system in an operating system folder-based file system |
EP1667382A4 (en) * | 2003-09-11 | 2006-10-04 | Fujitsu Ltd | PACKET RELAY DEVICE |
US7464263B2 (en) * | 2004-03-25 | 2008-12-09 | International Business Machines Corporation | Method, system and program product for associating event categorization and routing with security authorization roles |
US7818679B2 (en) * | 2004-04-20 | 2010-10-19 | Microsoft Corporation | Method, system, and apparatus for enabling near real time collaboration on an electronic document through a plurality of computer systems |
US20060218394A1 (en) * | 2005-03-28 | 2006-09-28 | Yang Dung C | Organizational role-based controlled access management system |
US7693958B2 (en) * | 2005-06-20 | 2010-04-06 | Microsoft Corporation | Instant messaging with data sharing |
-
2005
- 2005-08-24 US US11/211,119 patent/US7930346B2/en active Active
-
2006
- 2006-07-20 ZA ZA200800961A patent/ZA200800961B/xx unknown
- 2006-07-20 KR KR1020087004149A patent/KR101311145B1/ko active IP Right Grant
- 2006-07-20 EP EP06788124.3A patent/EP1917608B1/en active Active
- 2006-07-20 RU RU2008106904/08A patent/RU2421799C2/ru active
- 2006-07-20 CN CNA2006800294456A patent/CN101243443A/zh active Pending
- 2006-07-20 NZ NZ565968A patent/NZ565968A/en unknown
- 2006-07-20 MX MX2008002502A patent/MX2008002502A/es active IP Right Grant
- 2006-07-20 WO PCT/US2006/028390 patent/WO2007024380A2/en active Application Filing
- 2006-07-20 AU AU2006284414A patent/AU2006284414B2/en active Active
- 2006-07-20 JP JP2008527921A patent/JP4955682B2/ja active Active
- 2006-07-20 BR BRPI0615024-1A patent/BRPI0615024A2/pt not_active IP Right Cessation
- 2006-07-20 CA CA002616242A patent/CA2616242A1/en not_active Withdrawn
-
2008
- 2008-01-08 IL IL188662A patent/IL188662A0/en active IP Right Grant
- 2008-01-15 NO NO20080232A patent/NO340412B1/no unknown
- 2008-02-21 EG EG2008020301A patent/EG25571A/xx active
Also Published As
Publication number | Publication date |
---|---|
AU2006284414B2 (en) | 2011-02-24 |
NO340412B1 (no) | 2017-04-18 |
NO20080232L (no) | 2008-05-21 |
US7930346B2 (en) | 2011-04-19 |
WO2007024380A3 (en) | 2007-11-29 |
EP1917608A4 (en) | 2010-05-26 |
CN101243443A (zh) | 2008-08-13 |
KR20080047361A (ko) | 2008-05-28 |
ZA200800961B (en) | 2009-04-29 |
KR101311145B1 (ko) | 2013-09-25 |
EP1917608A2 (en) | 2008-05-07 |
NZ565968A (en) | 2010-05-28 |
US20070067349A1 (en) | 2007-03-22 |
AU2006284414A1 (en) | 2007-03-01 |
JP4955682B2 (ja) | 2012-06-20 |
RU2008106904A (ru) | 2009-08-27 |
EG25571A (en) | 2012-02-29 |
BRPI0615024A2 (pt) | 2011-04-26 |
WO2007024380A2 (en) | 2007-03-01 |
MX2008002502A (es) | 2008-04-07 |
EP1917608B1 (en) | 2016-06-22 |
JP2009506423A (ja) | 2009-02-12 |
CA2616242A1 (en) | 2007-03-01 |
IL188662A0 (en) | 2008-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2421799C2 (ru) | Безопасность в приложениях синхронизации равноправных узлов | |
US11630841B2 (en) | Traversal rights | |
US7577691B2 (en) | Extending hierarchical synchronization scopes to non-hierarchical scenarios | |
JP2007299431A (ja) | レプリケーション・ファシリティ | |
JP2011522337A (ja) | サーバクラスタに配信されるコンピュータシステムのソフトウェアモジュールの同期化方法、同期化システムおよびデータストレージへの適用 | |
Bartlang | Architecture and methods for flexible content management in peer-to-peer systems | |
RU2419849C2 (ru) | Механизм синхронизации комплекта приложений для продуктивной работы и бизнес-приложений | |
Martin et al. | A Bibliographical Survey on Data Sharing Systems for Mobile Ad Hoc Networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PC41 | Official registration of the transfer of exclusive right |
Effective date: 20150526 |