JP7355959B2 - External location synchronization - Google Patents
External location synchronization Download PDFInfo
- Publication number
- JP7355959B2 JP7355959B2 JP2023042244A JP2023042244A JP7355959B2 JP 7355959 B2 JP7355959 B2 JP 7355959B2 JP 2023042244 A JP2023042244 A JP 2023042244A JP 2023042244 A JP2023042244 A JP 2023042244A JP 7355959 B2 JP7355959 B2 JP 7355959B2
- Authority
- JP
- Japan
- Prior art keywords
- directory
- client device
- content management
- management system
- anchor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
関連出願の相互参照
本出願は、2020年12月23日に出願された「SYNCHRONIZING AN EXTERNAL LOCATION」という名称の米国出願第17/133,006号、及び2020年12月23日に出願された「SYNCHRONIZING AN EXTERNAL LOCATION」という名称の米国出願第17/132,954号の優先権を主張し、これら両出願は、2020年10月19日に出願された「SYNCHRONIZING AN EXTERNAL LOCATION」という名称の米国仮特許出願第63/093,699号に対してU.S.C. §119(e)に基づく優先権の利益を主張しており、この出願はその全体が参照により本明細書に明示的に組み込まれる。
CROSS-REFERENCE TO RELATED APPLICATIONS This application is a cross reference to U.S. Application No. 17/133,006 entitled “SYNCHRONIZING AN EXTERNAL LOCATION” filed on December 23, 2020; 17/132,954, entitled ``EXTERNAL LOCATION,'' and both applications claim priority to U.S. Provisional Patent Application No. 63, entitled ``SYNCHRONIZING AN EXTERNAL LOCATION,'' filed on October 19, 2020. USC §119(e) to No./093,699, which application is expressly incorporated herein by reference in its entirety.
コンテンツ管理システムは、ユーザが、全ての必要なコンテンツアイテムを1つの場所に格納し、管理することを可能にする。コンテンツ管理システムは、一般に、サーバ上にコンテンツアイテムを格納し、ユーザがネットワークを介してコンテンツアイテムにアクセスすることを可能にする。いくつかのコンテンツ管理システムは、ユーザがローカルクライアントデバイスに格納されたコンテンツアイテムをコンテンツ管理システムに同期させることを可能にする。しかしながら、コンテンツ管理システムは、クライアントデバイスに取り付けられた外部ドライブに格納されたコンテンツアイテムの同期を提供しない。 Content management systems allow users to store and manage all necessary content items in one place. Content management systems typically store content items on servers and allow users to access content items over a network. Some content management systems allow users to synchronize content items stored on local client devices to the content management system. However, content management systems do not provide synchronization of content items stored on external drives attached to client devices.
本技術は、コンテンツ管理システムの同期ディレクトリの外部に位置するオブジェクトを同期させることができる。クラウドストレージとクライアントデバイスとの間の同期を提供するコンテンツ管理システムは、コンテンツをクライアントデバイス上の特定のディレクトリに同期させる。同期ディレクトリの外部に位置するオブジェクトは、通常、コンテンツ管理システムの同期サービスにアクセス可能ではない。しかしながら、ユーザの最も重要なオブジェクトのうちのいくつかは、同期ディレクトリの外部に位置する可能性があり、したがって、そのようなコンテンツアイテムを同期させることができる必要がある。 The present technology can synchronize objects located outside of a content management system's synchronization directory. Content management systems that provide synchronization between cloud storage and client devices synchronize content to specific directories on the client device. Objects located outside of the synchronization directory are typically not accessible to the content management system's synchronization service. However, some of a user's most important objects may be located outside of the synchronization directory, and therefore there is a need to be able to synchronize such content items.
外部ハードドライブ上の外部ディレクトリに格納されたオブジェクトは、更に大きな課題を提示するが、外部ハードドライブ上のオブジェクトは、同期型コンテンツ管理システムを通じてバックアップするためのユーザの最も重要なものの一部でありうる。例えば、ユーザは、通常、日常的には必要とされない重要なオブジェクトをアーカイブするために外部ハードドライブを利用するが、それほど重要ではない。外部ハードドライブは、同期クライアントアプリケーションを実行しているコンピュータがそのようなハードドライブに常にアクセス可能であるとは限らず、クライアントデバイスのハードドライブとは異なるフォーマットになっている可能性があり、また、それらは読み出し専用である可能性があるという点で、複雑な問題を提供する。 Objects stored in external directories on external hard drives present an even greater challenge, but objects on external hard drives are some of the most important to users for backup through synchronous content management systems. sell. For example, users typically utilize external hard drives to archive important objects that are not needed on a daily basis, but are not very important. External hard drives may not always be accessible to the computer running the sync client application, may be in a different format than the client device's hard drive, and may , they present a complication in that they may be read-only.
外部ハードドライブが、クライアントコンピュータのハードドライブ上の利用可能なストレージ空間よりも大量のバイトを格納する場合、更なる問題が生じる可能性がある。そのような場合、オブジェクトは、同期型コンテンツ管理システムにアップロードされる前に、クライアントのハードドライブに最初に格納されることができない。 A further problem can arise if the external hard drive stores a larger number of bytes than the available storage space on the client computer's hard drive. In such cases, the object cannot be first stored on the client's hard drive before being uploaded to the synchronous content management system.
本技術は、これらの問題の多くを克服し、外部ハードドライブ上であっても、クライアントデバイスのハードドライブ上のロケーションに、同期対象のオブジェクトを最初にコピーすることなく、外部ディレクトリをコンテンツ管理システムに同期させることを可能にする。 This technology overcomes many of these issues and allows content management systems to integrate external directories, even on external hard drives, without first copying the objects to be synchronized to a location on the client device's hard drive. allows you to synchronize.
いくつかの実施形態では、開示される技術は、とりわけ、オブジェクト同期能力及び協調機能(collaboration features)を有するコンテンツ管理システムとの関連で展開される。図1には、例示的なシステム構成100が示されており、クライアントデバイス150とインタラクションを行うコンテンツ管理システム110を示している。
In some embodiments, the disclosed techniques are deployed in the context of a content management system that has object synchronization capabilities and collaboration features, among other things. An
アカウント account
コンテンツ管理システム110は、オブジェクトをアカウントと関連付けて格納しうるとともに、(1つ以上の)オブジェクトを取り出す、修正する、ブラウジングする、及び/又は共有する等の、種々のオブジェクト管理タスクを実行しうる。更に、コンテンツ管理システム110は、アカウントが複数のクライアントデバイスから(1つ以上の)オブジェクトにアクセスすることを可能にしうる。
コンテンツ管理システム110は、複数のアカウントをサポートする。サブジェクト(ユーザ、グループ、チーム、会社等)は、コンテンツ管理システム110でアカウントを作成しうるとともに、アカウント詳細は、サブジェクトデータベース140に格納されうる。サブジェクトデータベース140は、サブジェクトIDによって登録済みサブジェクトを識別しうるとともに、登録済みサブジェクトのプロファイル情報を、サブジェクトIDと関連付けて格納しうる。場合によっては、登録済みサブジェクトのプロファイル情報は、サブジェクト名及び/又は電子メールアドレスを含む。サブジェクトデータベース140は、アカウントタイプ(例えば、無料又は有料アカウントの種々の段階)、割り当てられたストレージ空間、使用されるストレージ空間、当該デバイス上に常駐する登録されたコンテンツ管理クライアントアプリケーション152を有するクライアントデバイス150、セキュリティ設定、パーソナル構成設定等の、アカウント管理情報を含みうる。いくつかの実施形態では、アカウントと関連付けられたいくつかの情報は、直接格納されなくてもよく、むしろ、この情報は導出されてもよい。例えば、使用されるストレージ空間は、明示的に格納されてもよいし、必要な場合に計算されてもよい。
いくつかの実施形態では、サブジェクトデータベース140は、サブジェクトのアカウントと関連付けられた完全な情報を格納している必要はない。サブジェクトのアカウントと関連付けられた情報の一部は、メタデータデータベース146等の、コンテンツ管理システム110の他のデータベースに格納されてもよいし、又はコンテンツ管理システム110の外部のデータベースに格納されてもよい。
In some embodiments, subject database 140 need not store complete information associated with a subject's account. Some of the information associated with a subject's account may be stored in other databases of
サブジェクトデータベース140は、サブジェクトと関連付けられたアカウントのグループを格納してもよい。グループは、グループパーミッションステートメント及び/又はアクセス制御リストに基づくパーミッションを有しうるとともに、当該グループのメンバーは、パーミッションを継承しうる。例えば、マーケティンググループは、オブジェクトの1つのセットへのアクセスを有しうる一方で、エンジニアリンググループは、オブジェクトの別のセットへのアクセスを有しうる。管理者グループは、グループの変更、サブジェクトアカウントの変更等を行いうる。グループは、サブジェクトIDによって識別されるサブジェクトでもある。 Subject database 140 may store groups of accounts associated with subjects. Groups may have permissions based on group permission statements and/or access control lists, and members of the group may inherit permissions. For example, a marketing group may have access to one set of objects, while an engineering group may have access to another set of objects. The administrator group can change groups, change subject accounts, etc. Groups are also subjects identified by subject IDs.
いくつかの実施形態では、サブジェクトデータベース140は、複数のテーブル、インデックス、及び他のデータ構造に分けられうる。 In some embodiments, subject database 140 may be divided into multiple tables, indexes, and other data structures.
オブジェクトストレージ(Object Storage) Object Storage
コンテンツ管理システム110の機能は、オブジェクトの格納であり、当該オブジェクトはオブジェクトストレージ142に格納されうる。オブジェクトは、一般に、ファイルシステムに記録されうる任意のエンティティである。オブジェクトは、ドキュメント、協調オブジェクト、テキストファイル、オーディオファイル、画像ファイル、ビデオファイル、ウェブページ、実行可能ファイル、バイナリファイル、ディレクトリ、フォルダ、zipファイル、プレイリスト、アルバム等のデジタルデータを含む、任意のオブジェクトでありうる。
The function of
いくつかの実施形態では、オブジェクトは、コレクションにグループ化されてもよく、当該コレクションは、複数のオブジェクトを含むフォルダ、又は、共通の属性によって関連付け若しくはグループ化される複数のオブジェクトを指しうる。 In some embodiments, objects may be grouped into collections, which may refer to folders containing multiple objects or multiple objects that are related or grouped by common attributes.
いくつかの実施形態では、オブジェクトストレージ142は、特定の機能を処理するために、他のタイプのストレージ又はデータベースと組み合わされる。オブジェクトストレージ142がオブジェクトを格納しうる一方、オブジェクトに関するメタデータは、メタデータデータベース146に格納されうる。同様に、オブジェクトがオブジェクトストレージ142に格納される場所に関するデータは、コンテンツディレクトリ144に格納されうる。更に、変更、アクセス等に関するデータは、オブジェクトデータベース148に格納されうる。オブジェクトデータベース148は、オブジェクトへのアクセスを有するサブジェクトIDを識別するサブジェクトアカウント識別子も含みうる。 In some embodiments, object storage 142 is combined with other types of storage or databases to handle specific functions. While object storage 142 may store objects, metadata about objects may be stored in metadata database 146. Similarly, data regarding where objects are stored in object storage 142 may be stored in content directory 144. Additionally, data regarding changes, accesses, etc. may be stored in object database 148. Object database 148 may also include subject account identifiers that identify subject IDs that have access to objects.
いくつかの実施形態では、オブジェクトデータベース148は、複数のテーブル、インデックス及び他のデータ構造に分けられうる。 In some embodiments, object database 148 may be divided into multiple tables, indexes, and other data structures.
オブジェクトストレージ142、コンテンツディレクトリ144、オブジェクトデータベース148、及びメタデータデータベース146等の、種々のストレージ/データベースの各々は、2つ以上のそのようなストレージ又はデータベースで構成可能であり、多くのデバイス及びロケーションに分散可能である。その他の構成も可能である。例えば、オブジェクトストレージ142、コンテンツディレクトリ144、オブジェクトデータベース148、及び/又はメタデータデータベース146からのデータは、1つ以上のオブジェクトストレージ又はデータベースに組み合わせられうる、又は、追加のオブジェクトストレージ又はデータベースに更にセグメント化されうる。このため、コンテンツ管理システム110は、図1に示されるよりも多い又は少ないストレージ及び/又はデータベースを含んでもよい。
Each of the various storages/databases, such as object storage 142, content directory 144, object database 148, and metadata database 146, can be configured with two or more such storages or databases and can be connected to many devices and locations. It can be distributed to Other configurations are also possible. For example, data from object storage 142, content directory 144, object database 148, and/or metadata database 146 may be combined into one or more object storages or databases, or further segmented into additional object storages or databases. can be converted into As such,
いくつかの実施形態では、オブジェクトストレージ142は、少なくとも1つのオブジェクトストレージサービス116と関連付けられ、当該サービスは、オブジェクトのストレージを管理するためのソフトウェア又は他のプロセッサ実行可能命令を含み、オブジェクトのストレージを管理することは、オブジェクトを格納のために受信すること、オブジェクトを格納のために準備すること、オブジェクトのためのストレージロケーションを選択すること、オブジェクトをストレージから取り出すこと等を含むが、これらに限定されない。いくつかの実施形態では、オブジェクトストレージサービス116は、オブジェクトストレージ142に格納するために、オブジェクトをより小さいチャンクに分割しうる。オブジェクトを構成する各チャンクのロケーションは、コンテンツディレクトリ144に記録されうる。コンテンツディレクトリ144は、オブジェクトストレージ142に格納された各オブジェクトのコンテンツエントリを含みうる。コンテンツエントリは、オブジェクトを識別するオブジェクトIDと関連付けられうる。 In some embodiments, object storage 142 is associated with at least one object storage service 116 that includes software or other processor-executable instructions for managing the storage of objects, and that includes software or other processor-executable instructions for managing the storage of objects. Managing includes, but is not limited to, receiving objects for storage, preparing objects for storage, selecting storage locations for objects, retrieving objects from storage, etc. Not done. In some embodiments, object storage service 116 may divide objects into smaller chunks for storage in object storage 142. The location of each chunk that makes up the object may be recorded in the content directory 144. Content directory 144 may include a content entry for each object stored in object storage 142. A content entry may be associated with an object ID that identifies the object.
いくつかの実施形態では、オブジェクトの各オブジェクト及び各チャンクは更に、決定論的ハッシュ関数から識別されてもよい。オブジェクト及びオブジェクトのチャンクを識別するこの方法は、オブジェクトの重複がそのように認識されることを保証してもよく、これは、決定論的ハッシュ関数が同じオブジェクトの全てのコピーに対して同じハッシュを出力するが、異なるオブジェクトに対して異なるハッシュを出力するためである。この方法を使用して、オブジェクトストレージサービス116は、オブジェクトの異なるバージョンごとに固有のハッシュを出力しうる。 In some embodiments, each object and each chunk of objects may further be identified from a deterministic hash function. This method of identifying objects and chunks of objects may ensure that duplicates of objects are recognized as such, since a deterministic hash function will generate the same hash for all copies of the same object. This is because it outputs different hashes for different objects. Using this method, object storage service 116 may output unique hashes for different versions of an object.
オブジェクトストレージサービス116は更に、オブジェクトデータベース148内のオブジェクトのコンテンツパスを指定又は記録しうる。コンテンツパスは、オブジェクトの名前及び/又はオブジェクトと関連付けられたフォルダ階層を含みうる。例えば、コンテンツパスは、オブジェクトがクライアントデバイス上のローカルファイルシステムに格納される、フォルダ又はフォルダのパスを含みうる。いくつかの実施形態では、オブジェクトデータベースは、オブジェクトが導出されるフルパスを可能にする、任意のオブジェクトの直接の祖先又は直接の子のみを格納しうる。 Object storage service 116 may further specify or record the content path of the object within object database 148. The content path may include the name of the object and/or the folder hierarchy associated with the object. For example, the content path may include a folder or path to a folder in which the object is stored on the local file system on the client device. In some embodiments, the object database may store only the immediate ancestors or direct children of any object, allowing the full path from which the object is derived.
オブジェクトがブロックでオブジェクトストレージ142に格納されて、ディレクトリ構造のようなツリーの下に格納されなくてもよい一方、そのようなディレクトリ構造はサブジェクトにとって快適なナビゲーション構造である。オブジェクトストレージサービス116は、オブジェクトのコンテンツパスを定義又は記録しうる。ここで、ディレクトリ構造の「ルート(root)」ノードは、別のディレクトリからアクセス特権を継承するディレクトリとは対照的に、それに割り当てられた特定のアクセス特権を有する任意のディレクトリでありうる。 While objects may be stored in object storage 142 in blocks and not under a tree such as a directory structure, such a directory structure is a comfortable navigation structure for subjects. Object storage service 116 may define or record content paths for objects. Here, the "root" node of a directory structure can be any directory that has specific access privileges assigned to it, as opposed to a directory that inherits access privileges from another directory.
いくつかの実施形態では、ルートディレクトリは、単一ディレクトリ構造の外観を与えるように、別のルートディレクトリの下にマウントされてもよい。これは、アカウントが複数のルートディレクトリへのアクセスを有する場合に生じうる。上述のように、ディレクトリ構造は、サブジェクトにとって快適なナビゲーション構造にすぎないが、オブジェクトストレージ142内のオブジェクトのストレージロケーションとは相関しない。 In some embodiments, a root directory may be mounted under another root directory to give the appearance of a single directory structure. This can occur if an account has access to multiple root directories. As mentioned above, the directory structure is merely a navigational structure that is comfortable for the subject, but is not correlated with the storage location of objects within object storage 142.
アカウントがオブジェクトを閲覧するディレクトリ構造は、コンテンツ管理システム110におけるストレージロケーションに相関しないが、当該ディレクトリ構造は、クライアントデバイス150によって使用されるファイルシステムに依存して、クライアントデバイス150上のストレージロケーションに相関しうる。
Although the directory structure in which an account views objects is not correlated to storage location in
上述のように、コンテンツディレクトリ144内のコンテンツエントリは、オブジェクトを構成する各チャンクのロケーションを更に含みうる。より具体的には、コンテンツエントリは、オブジェクトを構成するチャンクのオブジェクトストレージ142内のロケーションを識別するコンテンツポインタを含みうる。 As mentioned above, a content entry within content directory 144 may further include the location of each chunk that makes up the object. More specifically, a content entry may include a content pointer that identifies the location within object storage 142 of the chunks that make up the object.
オブジェクトストレージサービス116は、オブジェクト又はオブジェクトの複数のバージョンを構成する、複製オブジェクト又は複製ブロックを識別することによって、必要とされるストレージ空間の量を減らすことができる。複数のコピーを格納する代わりに、オブジェクトストレージ142は、オブジェクト又はオブジェクトのブロックの、単一のコピーを格納しうるとともに、コンテンツディレクトリ144は、複製を単一のコピーにリンクするためのポインタ又は他のメカニズムを含みうる。 Object storage service 116 can reduce the amount of storage space required by identifying duplicate objects or blocks that make up an object or multiple versions of an object. Instead of storing multiple copies, object storage 142 may store a single copy of an object or block of an object, and content directory 144 may contain pointers or other information to link replicas to the single copy. mechanism.
オブジェクトストレージサービス116は更に、オブジェクト、オブジェクトタイプ、フォルダ、ファイルパス、及び/又は種々のアカウント、コレクション、又はグループに対する関係を記述するメタデータを、オブジェクトのオブジェクトIDと関連付けて、
メタデータ・データベース146に格納しうる。
Object storage service 116 further associates metadata with the object ID of the object that describes the object, object type, folder, file path, and/or relationship to various accounts, collections, or groups;
The information may be stored in metadata database 146.
オブジェクトストレージサービス116は更に、変更、アクセス等に関するデータのログをオブジェクトデータベース148に格納しうる。オブジェクトデータベース148は、オブジェクトのオブジェクトIDを含みうるとともに、オプションとして、タイムスタンプ又はバージョン番号及び任意の他の関連データとともに、変更又はアクセスアクションの記述を含みうる。オブジェクトデータベース148は更に、変更又はオブジェクトアクセスによって影響を受けるブロックへのポインタを含みうる。オブジェクトストレージサービスは、オブジェクトに対する変更、オブジェクトの異なる複数のバージョン(分岐するバージョンツリーを含む)、及びオブジェクトデータベース148から取得されうる変更履歴、を追跡するオブジェクトバージョンコントロールを使用することによって、操作を取り消す能力を提供しうる。 Object storage service 116 may also store logs of data regarding changes, accesses, etc. in object database 148. Object database 148 may include an object ID for the object and optionally a description of the modification or access action, along with a timestamp or version number and any other related data. Object database 148 may further include pointers to blocks affected by the modification or object access. The object storage service undoes operations by using object version control to track changes to the object, different versions of the object (including branching version trees), and a history of changes that may be retrieved from the object database 148. ability.
オブジェクトの同期(Object Synchronization) Object Synchronization
コンテンツ管理システム110の別の機能は、少なくとも1つのクライアントデバイス150とのオブジェクトの同期である。(1つ以上の)クライアントデバイスは、異なる形態を取りうるとともに、異なる能力を有しうる。例えば、クライアントデバイス150-1は、その上に常駐する複数のアプリケーションによってアクセス可能なローカルファイルシステムを有するコンピューティングデバイスである。クライアントデバイス150-2は、オブジェクトが特定のアプリケーションにのみアクセス可能であるか又は特定のアプリケーションによって与えられるパーミッションによってアクセス可能であり、オブジェクトが典型的にはアプリケーション固有空間又はクラウドのいずれかに格納される、コンピューティングデバイスである。クライアントデバイス150-3は、ウェブブラウザを介してコンテンツ管理システム110にアクセスし、ウェブインタフェースを介してオブジェクトにアクセスする、任意のクライアントデバイスである。例示的なクライアントデバイス150-1、150-2、及び150-3は、ラップトップ、モバイル端末、又はウェブブラウザ等のフォームファクタで描かれているが、それらの説明はこれらの例示的なフォームファクタのデバイスに限定されないことを理解されたい。例えば、クライアント150-2等のモバイル端末は、その上に常駐する複数のアプリケーションによってアクセス可能なローカルファイルシステムを有しうるか、又はクライアント150-2は、ウェブブラウザを介してコンテンツ管理システム110にアクセスしうる。したがって、フォームファクタは、クライアント150の能力を考慮する際に限定するものと考えられるべきではない。クライアントデバイス150に関して本明細書で説明される1つ以上の機能は、デバイスの特定の能力に応じて、全てのクライアントデバイス上で利用可能であってもよい又は利用可能でなくてもよい-ファイルアクセスモデルはそのような能力の1つである。
Another function of
いくつかの実施形態では、クライアントデバイス150は、外部ハードドライブ151に通信可能に接続されうる。
In some embodiments,
多くの実施形態では、クライアントデバイスは、コンテンツ管理システム110のアカウントと関連付けられるが、いくつかの実施形態では、クライアントデバイスは、共有リンクを使用してコンテンツにアクセスでき、アカウントを必要としない。
In many embodiments, client devices are associated with an account on
上述のように、いくつかのクライアントデバイスは、ウェブブラウザを使用してコンテンツ管理システム110にアクセスしうる。しかしながら、クライアントデバイスは、クライアントデバイス150に格納されて実行されるクライアントアプリケーション152を使用して、コンテンツ管理システム110にアクセスすることもできる。クライアントアプリケーション152は、クライアント同期サービス156を含みうる。
As mentioned above, some client devices may access
クライアント同期サービス156は、クライアントデバイス150とコンテンツ管理システム110との間で、オブジェクトに対する変更を同期させるために、サーバ同期サービス112と通信しうる。
クライアントデバイス150は、クライアント同期サービス156を介してコンテンツをコンテンツ管理システム110と同期させうる。同期は、プラットフォームに依存しないものでありうる。即ち、コンテンツは、種々のタイプ、能力、オペレーティングシステム等の複数のクライアントデバイスにわたって同期されうる。クライアント同期サービス156は、同期サービス156によって監視されるクライアントデバイス150のファイルシステムの指定されたディレクトリ内のオブジェクトに対する任意の変更(新しい、削除された、修正された、コピーされた、又は移動されたオブジェクト)を同期させうる。
オブジェクトは、クライアントデバイス150からコンテンツ管理システム110に同期可能であり、逆もまた同様である。同期がクライアントデバイス150からコンテンツ管理システム110へのものである実施形態では、サブジェクトが、クライアントデバイス150のファイルシステムからオブジェクトを直接操作しうる一方、クライアント同期サービス156は、監視されるフォルダ内のファイルに対する変更についてクライアントデバイス150上の指定されたディレクトリを監視しうる。
Objects can be synchronized from
クライアント同期サービス156が、監視しているディレクトリ内のコンテンツの書き込み、移動、コピー、又は削除を検出すると、クライアント同期サービス156は、当該変更をオブジェクトストレージサービス116に同期させうる。いくつかの実施形態では、クライアント同期サービス156は、オブジェクトをブロックに分割すること、固有の識別子を生成するためにオブジェクトをハッシングすること等の、上述の機能を含む、オブジェクトストレージサービス116のいくつかの機能を実行しうる。クライアント同期サービス156は、クライアントストレージインデックス164内のコンテンツにインデックスを付け、その結果をストレージインデックス164に保存しうる。インデックス付けは、オブジェクト識別子を加えたパスを格納することと、オブジェクトごとに固有のクライアント識別子を格納することとを含みうる。いくつかの実施形態では、クライアント同期サービス156は、サーバ同期サービス112からオブジェクト識別子を学習し、クライアントデバイス150のオペレーティングシステムから固有のクライアント識別子を学習する。
When
クライアント同期サービス156は、ストレージインデックス164を使用して、クライアントストレージ内のオブジェクトの少なくとも一部と、コンテンツ管理システム110上のサブジェクトアカウントと関連付けられたオブジェクトとの同期を容易にしうる。例えば、クライアント同期サービス156は、ストレージインデックス164をコンテンツ管理システム110と比較し、クライアントストレージ上のコンテンツと、コンテンツ管理システム110上のサブジェクトアカウントと関連付けられたコンテンツとの間の差分を検出しうる。その後、クライアント同期サービス156は、必要に応じて、クライアントストレージ上のコンテンツをアップロード、ダウンロード、修正、及び削除することによって、差分を調整することを試みうる。オブジェクトストレージサービス116は、オブジェクトについての変更された又は新しいブロックを格納し、オブジェクトデータベース148、メタデータデータベース146、コンテンツディレクトリ144、オブジェクトストレージ142、サブジェクトデータベース140等を必要に応じて更新しうる。
コンテンツ管理システム110からクライアントデバイス150に同期させる場合、オブジェクトデータベース148に記録されているオブジェクトのマウント、修正、追加、削除、移動に関するデータが、通知サービス117を使用してクライアントデバイス150に送信される通知をトリガしうる。クライアントデバイス150が変更を通知されると、クライアントデバイス150は、クライアントデバイスに知られている最後の同期ポイント以降の、オブジェクトデータベース148においてリストされた変更を求める要求を行いうる。クライアントデバイス150が、コンテンツ管理システム110との同期が外れていると判定すると、クライアント同期サービス156は、変更を含むオブジェクトブロックを要求し、変更されたオブジェクトのそのローカルコピーを更新する。
When synchronizing from the
いくつかの実施形態では、ストレージインデックス164は、ツリーデータ構造を格納しており、当該ツリーデータ構造では、1つのツリーが、サーバ同期サービス112によるディレクトリの最新の表現を反映している一方、別のツリーが、クライアント同期サービス156によるディレクトリの最新の表現を反映している。クライアント同期サービスは、サーバ同期サービス112にデータを要求することによって、又はクライアントデバイス150上の変更をコンテンツ管理システム110にコミットすることによって、ツリー構造が一致することを保証するように機能しうる。
In some embodiments, the storage index 164 stores a tree data structure in which one tree reflects the most recent representation of the directory by the
場合によっては、クライアントデバイス150は、利用可能なネットワーク接続を有さないことがある。このシナリオでは、クライアント同期サービス156は、オブジェクト変更についてリンクされたコレクションを監視し、ネットワーク接続が利用可能であるタイミングにおけるコンテンツ管理システム110への後の同期のために、それらの変更をキューに入れうる。同様に、サブジェクトは、コンテンツ管理システム110との同期を手動で開始、停止、一時停止、又は再開しうる。
In some cases,
クライアント同期サービス156は、コンテンツ管理システム110上の特定のサブジェクトアカウントと関連付けられた全てのコンテンツを同期させてもよい。あるいは、クライアント同期サービス156は、コンテンツ管理システム110上の特定のサブジェクトアカウントと関連付けられたオブジェクトのうちの一部を選択的に同期させてもよい。オブジェクトのうちの一部のみを選択的に同期させることは、クライアントデバイス150上の空間を維持し、帯域幅を節約しうる。
いくつかの実施形態では、クライアント同期サービス156は、特定のサブジェクトアカウントと関連付けられたオブジェクトの一部を選択的に格納し、オブジェクトの残りの部分のためにプレースホルダオブジェクトをクライアントストレージに格納する。例えば、クライアント同期サービス156は、コンテンツ管理システム110上の対応する完全なオブジェクトの、同一のファイル名、パス、拡張子、メタデータを有するが、当該完全なオブジェクトのデータを欠いている、プレースホルダオブジェクトを格納しうる。プレースホルダオブジェクトは、数バイト以下のサイズでありうる一方、対応する完全なオブジェクトはそれより大幅に大きいことがある。クライアントデバイス150がオブジェクトへのアクセスを試みた後に、クライアント同期サービス156は、コンテンツ管理システム110からオブジェクトのデータを取り出し、完全なオブジェクトをクライアントデバイス150に提供しうる。このアプローチは、コンテンツ管理システム110上の、サブジェクトのオブジェクトへの完全なアクセスを依然として提供しながら、空間及び帯域幅の大幅な節約を提供できる。
In some embodiments,
協調機能(Collaboration features) Collaboration features
コンテンツ管理システム110の別の機能は、サブジェクト間の協調を容易にすることである。協調機能には、オブジェクト共有、オブジェクトにコメントすること、オブジェクトに対する共同作業、インスタントメッセージング、プレゼンスの提供、及びオブジェクトに関するシーン状態情報等が含まれる。
Another function of
共有(Sharing) Sharing
コンテンツ管理システム110は、共有サービス128を介して共有オブジェクトを管理しうる。オブジェクトへのリンクを提供することによってオブジェクトを共有することは、コンテンツ管理システム110とネットワーク通信を行う任意のコンピューティングデバイスからオブジェクトへアクセス可能にすることを含みうる。しかしながら、いくつかの実施形態では、リンクは、コンテンツ管理システム110と、アイデンティティ及びアクセス管理(IAM:Identity and Access Management)サービス132によって実施されるアクセス制限と関連付けられうる。コンテンツを共有することは更に、各サブジェクトアカウントがオブジェクトへのアクセスを有するように、コンテンツ管理システム110内のコンテンツを(オブジェクトと関連付けられた元のサブジェクトアカウントに加えて)少なくとも1つの追加のサブジェクトアカウントと共有するために、共有サービス128を使用して、コンテンツをリンクすることを含みうる。追加のサブジェクトアカウントは、コンテンツを受け入れることによってコンテンツへのアクセスを得ることができ、当該コンテンツは、次いで、ウェブインタフェースサービス124を介してアクセス可能であるか、又はクライアントデバイス150上のそれらのアカウントと関連付けられたディレクトリ構造内から直接アクセス可能である。共有は、プラットフォームに依存しない方法で実行されうる。即ち、コンテンツは、種々のタイプ、能力、オペレーティングシステム等の複数のクライアントデバイス150にわたって共有されうる。コンテンツは更に、種々のタイプのサブジェクトアカウントにわたって共有されうる。
コンテンツ管理システム110内でオブジェクトを共有するために、共有サービス128は、オブジェクトと関連付けられたオブジェクトデータベース148内のコンテンツアイテムとともに、チームのサブジェクトID又は1つ以上のサブジェクトアカウントのサブジェクトIDを追加してもよく、それにより、追加された(1つ以上の)サブジェクトアカウントにオブジェクトへのアクセスを許可する。共有サービス128は更に、オブジェクトへのサブジェクトアカウントのアクセスを制限するために、オブジェクトデータベース148内のコンテンツアイテムにサブジェクトIDがアクセスすることを許可されないようにしうる。共有サービス128は、オブジェクト識別子、オブジェクトへのアクセスが与えられたサブジェクト識別子、及びアクセスレベルをオブジェクトデータベース148内に記録しうる。例えば、いくつかの実施形態では、単一のコンテンツアイテムに関連付けられたサブジェクト識別子が、関連付けられたオブジェクトに関するそれぞれのサブジェクト識別子に対して異なるパーミッションを特定しうる。
To share an object within
いくつかの実施形態では、コンテンツ管理システム110は、個別のオブジェクトに関する完全なアクセス権の記述を含むアクセス制御リスト145を含みうる。コンテンツ管理システム内の任意の個別のオブジェクトのためのアクセス制御リストは、オブジェクトデータベース148から導出されうる。いくつかの実施形態では、個別のオブジェクトのための永続的なアクセス制御リスト145を維持することは望ましくなく、個別のオブジェクトのためのアクセス制御リスト145は必要な場合に導出されうるためである。
In some embodiments,
コンテンツ管理システム110の外部でオブジェクトを共有するために、共有サービス128は、ユニフォームリソースロケータ(URL)等のカスタムネットワークアドレスを生成してもよく、これにより、任意のウェブブラウザが、認証無しでコンテンツ管理システム110内のオブジェクト又はコレクションにアクセスすることが可能になる。これを達成するために、共有サービス128は、生成されたURLにコンテンツ識別データを含めてもよく、これは、後で、要求されたオブジェクトを適切に識別して返送するために使用されうる。例えば、共有サービス128は、生成されたURL内に、アカウント識別子とコンテンツパス又はオブジェクト識別コードとを含めうる。URLの選択に応じて、当該URLに含まれるコンテンツ識別データがコンテンツ管理システム110へ送信されてよく、当該コンテンツ管理システムは、受信されたコンテンツ識別データを使用して、適切なオブジェクトを識別して当該オブジェクトを返送しうる。
To share objects outside of
URLを生成することに加えて、共有サービス128は、オブジェクトへのURLが作成されたことをオブジェクトデータベース148に記録するように構成されてもよい。いくつかの実施形態では、オブジェクトに関連付けられたオブジェクトデータベース148へのエントリが、オブジェクトへのURLが作成されたかどうかを示すURLフラグを含みうる。例えば、URLフラグは、オブジェクトへのURLが作成されていないことを示すために、0又は偽(false)に初期設定されたブール値でありうる。共有サービス128は、オブジェクトへのURLを生成した後、フラグの値を1又は真(true)に変更しうる。
In addition to generating URLs,
いくつかの実施形態では、共有サービス128は、パーミッションのセットを、オブジェクトに対するURLに関連付けうる。例えば、サブジェクトがURLを介してオブジェクトへのアクセスを試みる場合に、共有サービス128は、制限されたパーミッションのセットを当該オブジェクトに対して提供しうる。制限されたパーミッションの例には、サブジェクトがオブジェクトをダウンロードできない、オブジェクトを保存できない、オブジェクトをコピーできない、オブジェクトを修正できない等の制限が含まれる。いくつかの実施形態では、制限されたパーミッションは、指定されたドメインからのみ、即ち、企業ネットワークドメイン内からのみ、又は指定されたドメインに関連付けられたアカウント、例えば、企業アカウント(例えば、@acme.com)に関連付けられたアカウントによってのみ、オブジェクトへのアクセスを許可する制限を含む。
In some embodiments,
いくつかの実施形態では、共有サービス128は更に、生成されたURLを非アクティブ化するように構成されてもよい。例えば、オブジェクトデータベース148への各エントリは、生成されたURLからの要求に応答してコンテンツを返すべきかどうかを示すURLアクティブフラグを含んでもよい。例えば、共有サービス128は、URLアクティブフラグが1又は真に設定されている場合にのみ、生成されたリンクによって要求されたオブジェクトを返しうる。このように、URLアクティブフラグの値を変更することで、URLが生成されたオブジェクトへのアクセスを容易に制限することができる。これにより、オブジェクトを移動させたり、生成されたURLを削除したりすることなく、共有オブジェクトにサブジェクトがアクセスすることを制限できる。同様に、共有サービス128は、URLアクティブフラグの値を1又は真に再び変更することによって、URLを再アクティブ化しうる。これにより、新たなURLを生成する必要なく、サブジェクトがオブジェクトへのアクセスを容易に復元できる。
In some embodiments,
いくつかの実施形態では、コンテンツ管理システム110は、オブジェクトをアップロードするためのURLを指定してもよい。例えば、サブジェクトアカウントを有する第1のサブジェクトがそのようなURLを要求し、URLを投稿サブジェクトに提供することができ、投稿サブジェクトは、当該URLを使用してオブジェクトを第1のサブジェクトのサブジェクトアカウントにアップロードできる。
In some embodiments,
チームサービス(Team Service) Team Service
いくつかの実施形態では、コンテンツ管理システム110はチームサービス130を含む。チームサービス130は、サブジェクトアカウントの定義されたチームを作成及び管理するための機能を提供しうる。チームは、サブチーム(例えば、ビジネスユニット、又はプロジェクトチーム等)を有する会社のために作成されうるとともに、チーム及びサブチームに割り当てられたサブジェクトアカウント、又はチームは、サブジェクトアカウントの任意の定義されたグループのために作成されうる。チームサービス130は、チーム、プライベートサブジェクトアカウントフォルダ、及びアクセス制限された共有フォルダに対して、共通の共有空間を提供しうる。チームサービスは更に、管理者がチーム内のコレクション及びオブジェクトを管理するための管理インタフェースを提供しうるとともに、チームに関連付けられたサブジェクトアカウントを管理しうる。チーム、サブチーム、サブジェクトアカウントは全て、サブジェクトデータベース140内のサブジェクト識別子を与えられ、サブジェクトアカウントによるチームへのメンバーシップもサブジェクトデータベース140に記録される。
In some embodiments,
IAM(アイデンティティ及びアクセス管理)サービス IAM (Identity and Access Management) Service
いくつかの実施形態では、コンテンツ管理システム110はIAMサービス132を含む。IAMサービス132は、オブジェクトにアクセスしようとするサブジェクトアカウントがオブジェクトにアクセスするための適切な権限を有することを保証する。IAMサービス132は、名前空間にアクセスするための要求に従い、サブジェクトアカウントに許可された能力を返しうる、クライアントアプリケーション152からトークンを受信しうる。複数のレベルのアクセスを有するサブジェクトアカウント(例えば、サブジェクト権限及び管理者権限を有するサブジェクトアカウント)の場合、IAMサービス132は更に、管理者による意図しないアクションを回避するために明示的な特権エスカレーション(privilege escalation)を必要としうる。
In some embodiments,
存在及びシーン状態(Presence and Seen State) Presence and Seen State
いくつかの実施形態では、コンテンツ管理システムは、オブジェクトが共有されているサブジェクトが、どのように当該オブジェクトとインタラクションを行っているか、又は当該オブジェクトとインタラクションを行ったかについての情報を提供しうる。いくつかの実施形態では、コンテンツ管理システム110は、オブジェクトが共有されているサブジェクトが、現在オブジェクトを閲覧していることを報告しうる。例えば、クライアント協調サービス160は、クライアントデバイス150がオブジェクトにアクセスしている場合に通知サービス117に通知しうる。通知サービス117は、その後、同じオブジェクトへのアクセスを有する他のサブジェクトの全てのクライアントデバイスに、そのオブジェクトに対するクライアントデバイス150のサブジェクトの存在を通知しうる。
In some embodiments, a content management system may provide information about how subjects with whom an object is shared are interacting with or have interacted with the object. In some embodiments,
いくつかの実施形態では、コンテンツ管理システム110は、共有オブジェクトとのサブジェクトのインタラクションの履歴を報告しうる。協調サービス126は、メタデータデータベース146及びオブジェクトデータベース148等のデータソースに問い合わせて、サブジェクトがオブジェクトを保存したこと、サブジェクトがオブジェクトを未だ閲覧していないこと等を判定するとともに、通知サービス117を使用して、このステータス情報を他のサブジェクトに配布することで、誰がオブジェクトを現在閲覧中であるか又は閲覧していたか、又は誰がオブジェクトを修正したかを知ることができるようにしうる。
In some embodiments,
協調サービス126は、オブジェクトが元々、コメント機能をサポートしていなくても、コンテンツに関連付けられたコメントを容易にしうる。そのようなコメントは、メタデータデータベース146に格納されうる。
協調サービス126は、サブジェクトについての通知を発信及び送信しうる。例えば、サブジェクトは、コメント内に別のサブジェクトをメンションでき、協調サービス126は、コメント内でメンションされたことのそのサブジェクトに対する通知を送信しうる。種々の他のオブジェクトイベントが、オブジェクトの削除、オブジェクトの共有等を含む通知をトリガしうる。
協調サービス126は、サブジェクトがインスタントメッセージ、音声通話、電子メール等を送受信しうるメッセージングプラットフォームを提供しうる。
協調オブジェクト(Collaboration Objects) Collaboration Objects
いくつかの実施形態では、コンテンツ管理サービスは更に、インタラクション型オブジェクト協調プラットフォームを提供しうる協調ドキュメントサービス134を含んでよく、それによって、サブジェクトは協調オブジェクトを同時に作成し、協調オブジェクト内にコメントを行い、協調オブジェクト内のタスクを管理しうる。協調オブジェクトは、サブジェクトが協調オブジェクトエディタを使用して作成及び編集することが可能なファイルでありうるとともに、協調オブジェクト要素を含みうる。協調オブジェクト要素は、協調オブジェクト識別子、1つ以上の作成者識別子、協調オブジェクトテキスト、協調オブジェクト属性、インタラクション情報、コメント、共有しているサブジェクト等を含みうる。協調オブジェクト要素は、データベースエンティティとして格納されてよく、これにより、協調オブジェクトの検索及び取り出しが可能になる。複数のサブジェクトが、同時に又は異なる時間に、協調オブジェクトにアクセスし、閲覧し、編集し、協働(collaboate)しうる。いくつかの実施形態では、これは、ウェブインタフェースを介してオブジェクトにアクセスすることを2つのサブジェクトに要求することによって管理されてよく、そこでオブジェクトの同じコピー上で同時に作業できる。 In some embodiments, the content management service may further include a collaborative document service 134 that may provide an interactive object collaboration platform, allowing subjects to simultaneously create collaborative objects and make comments within collaborative objects. , may manage tasks within a collaborative object. A collaborative object can be a file that a subject can create and edit using a collaborative object editor, and can include collaborative object elements. Collaboration object elements may include a collaboration object identifier, one or more author identifiers, collaboration object text, collaboration object attributes, interaction information, comments, shared subjects, and the like. Collaborative object elements may be stored as database entities, allowing search and retrieval of collaborative objects. Multiple subjects may access, view, edit, and collaborate on collaborative objects at the same time or at different times. In some embodiments, this may be managed by requiring two subjects to access the object via a web interface, where they can work on the same copy of the object simultaneously.
協調コンパニオンインタフェース(Collaboration Companion Interface) Collaboration Companion Interface
いくつかの実施形態では、クライアント協調サービス160は、クライアントデバイス150上に提示されているオブジェクトに関連する情報を表示する目的で、ネイティブアプリケーションコンパニオンインタフェースを提供しうる。クライアントデバイス150に格納されて実行されるネイティブアプリケーションによってオブジェクトがアクセスされる実施形態では、オブジェクトは、コンテンツアプリケーション152によって管理されるように、クライアントデバイス150のファイルシステムの指定されたロケーションあり、ネイティブアプリケーションは、上述の協調データを表示するためにネイティブな方法を提供しなくてもよい。そのような実施形態では、クライアント協調サービス160は、サブジェクトがオブジェクトを開いたことを検出してもよく、協調データ等の、オブジェクトのための追加情報を有するオーバーレイを提供しうる。例えば、追加情報は、オブジェクトに対するコメント、オブジェクトの状態、オブジェクトを以前に又は現在閲覧している他のサブジェクトのアクティビティを含みうる。このようなオーバーレイは、他のサブジェクトが現在オブジェクトを編集中であることに起因して変更が失われる可能性があることを、サブジェクトに警告しうる。
In some embodiments, client collaboration service 160 may provide a native application companion interface for the purpose of displaying information related to objects being presented on
いくつかの実施形態では、上述のサービス又はストレージ/データベースのうちの1つ以上は、公開又はプライベートアプリケーションプログラミングインタフェースを使用してアクセスされうる。 In some embodiments, one or more of the services or storage/databases described above may be accessed using public or private application programming interfaces.
特定のソフトウェアアプリケーションは、サブジェクトの代わりに、APIを介してオブジェクトストレージ142にアクセスしうる。例えば、クライアントデバイス150上で実行されるアプリケーション等のソフトウェアパッケージは、コンテンツを読み出す、書き込む、作成する、削除する、共有する、又は他の方法で操作するために、サブジェクトが認証クレデンシャル(credential)を提供する場合に、コンテンツ管理システム110に対して直接、APIコールをプログラムで行いうる。
A particular software application may access object storage 142 via an API on behalf of a subject. For example, a software package, such as an application, running on
サブジェクトは、ウェブインタフェースサービス124によって生成されて供給されるウェブインタフェースを介して、サブジェクトアカウントに格納されたコンテンツを閲覧又は操作しうる。例えば、サブジェクトは、ウェブブラウザ内で、コンテンツ管理システム110によって提供されるウェブアドレスにナビゲートしうる。オブジェクトの新バージョンをアップロードする等、ウェブインタフェースを介して行われるオブジェクトストレージ142内のコンテンツに対する変更又は更新が、サブジェクトのアカウントに関連付けられた他のクライアントデバイスに伝え戻されてもよい。例えば、それぞれが独自のクライアントソフトウェアを有する複数のクライアントデバイスが、単一のアカウントと関連付けられてもよく、アカウント内のオブジェクトが、複数のクライアントデバイスのそれぞれ間で同期されてもよい。
A subject may view or manipulate content stored in the subject account via a web interface generated and provided by web interface service 124. For example, a subject may navigate within a web browser to a web address provided by
クライアントデバイス150は、サブジェクトの代わりにコンテンツ管理システム110に接続しうる。サブジェクトは、例えばクライアントデバイス150がデスクトップ又はラップトップコンピュータ、電話機、テレビ、インターネット・オブ・シングス(internet-of-things)デバイス等である場合、クライアントデバイス150と直接インタラクションを行いうる。代替的に又は追加的に、クライアントデバイス150は、例えばクライアントデバイス150がサーバである場合、サブジェクトがクライアントデバイス150に対する物理的なアクセスを有することなく、サブジェクトの代わりに動作しうる。
クライアントデバイス150のいくつかの機能は、クライアントデバイス150上にインストールされたアプリケーションによって有効化される。いくつかの実施形態では、アプリケーションは、コンテンツ管理システム固有のコンポーネントを含みうる。例えば、コンテンツ管理システム固有のコンポーネントは、スタンドアロンのアプリケーション152、1つ以上のアプリケーションプラグイン、及び/又はブラウザ拡張でありうる。しかしながら、サブジェクトは、クライアントデバイス150上に常駐し、かつ、コンテンツ管理システム110と通信するように構成された、ウェブブラウザ等のサードパーティアプリケーションを介して、コンテンツ管理システム110とインタラクションを行ってもよい。種々の実装形態では、クライアント側のアプリケーション152は、サブジェクトがコンテンツ管理システム110とインタラクションを行うためのサブジェクトインタフェース(UI)を提示しうる。例えば、サブジェクトは、ファイルシステムと統合されたファイルシステムエクスプローラを介して、又はウェブブラウザアプリケーションを使用して表示されるウェブページを介して、コンテンツ管理システム110とインタラクションを行いうる。
Some features of
いくつかの実施形態では、クライアントアプリケーション152は、コンテンツ管理システム110の2つ以上のアカウントのコンテンツを管理し、かつ、同期させるように構成されうる。そのような実施形態では、クライアントアプリケーション152は、複数のアカウントにログインしたままで、当該複数のアカウントに通常のサービスを提供しうる。いくつかの実施形態では、各アカウントは、ファイルシステム内のフォルダとして見えてもよく、そのフォルダ内の全てのオブジェクトがコンテンツ管理システム110と同期されてもよい。いくつかの実施形態では、クライアントアプリケーション152は、複数のアカウントのうちの1つを選択してプライマリアカウント又はデフォルトアカウントとするセレクタを含んでもよい。
In some embodiments, client application 152 may be configured to manage and synchronize content for two or more accounts on
サードパーティサービス(Third Party Services) Third Party Services
いくつかの実施形態では、コンテンツ管理システム110は、ワークスペースサービス、電子メールサービス、タスクサービス等の、1つ以上のサードパーティサービスとのインタフェースを行うための機能を含みうる。そのような実施形態では、コンテンツ管理システム110は、サードパーティサービスとのインタラクションを行うことで、それらのサードパーティサービスからの機能又はデータを、コンテンツ管理システム110によって提供される種々のサブジェクトインタフェースにもたらすために、サードパーティサービスにおけるサブジェクトアカウントのためのログイン・クレデンシャルの提供を受けうる。
In some embodiments,
コンテンツ管理システム110には特定のコンポーネントが提示されるが、システム100のアーキテクチャ構成が単に1つの可能性のある構成であり、より多くの又はより少ないコンポーネントを有する他の構成が可能であることを、当業者であれば理解されたい。更に、サービスは、多かれ少なかれ機能性を有してよく、別のサービスを伴うものとして説明された機能性を含むことさえある。更に、一実施形態に関して本明細書に記載の機能は、別の実施形態に関して記載の機能と組み合わされてもよい。
Although specific components of
システム100には特定のコンポーネントが提示されるが、システム100のアーキテクチャ構成が単に1つの可能性のある構成であり、より多くの又はより少ないコンポーネントを有する他の構成が可能であることを、当業者であれば理解されたい。
Although specific components are presented in
図2は、いくつかの実施形態によるクライアント同期サービスの例を示す。クライアント同期サービス156は、図1のクライアントデバイス150に実装されうる。しかしながら、いくつかの実施形態では、クライアント同期サービス156は別のコンピューティングデバイス上で実装されうる。クライアント同期サービス156は、コンテンツ管理システム110と、クライアント同期サービス156が実行されるクライアントデバイス150との間で、オブジェクトに対する変更を同期させるように構成される。
FIG. 2 illustrates an example client synchronization service according to some embodiments.
クライアント同期サービス156は、ファイルシステムインタフェース205と、サーバインタフェース210と、ツリーストレージ220と、プランナ225と、スケジューラ230とを含みうる。追加の又は代替のコンポーネントも含まれうる。
ファイルシステムインタフェース205は、クライアントデバイス150のローカルファイルシステム270上のオブジェクトに対する変更を処理し、ローカルツリー250を更新するように、又はローカルファイルシステム270に変更を加えるように構成される。例えば、ファイルシステムインタフェース205は、クライアントデバイス150のローカルファイルシステム270上の監視されるディレクトリ内のオブジェクトに対する変更を検出しうる。変更は更に、図1のクライアントアプリケーション152を介して行われて検出されてもよい。ファイルシステムインタフェース205は、ローカルツリー250を更新しうる。ローカルツリー250に対する更新は、クライアントデバイス上のオブジェクトに対する変更(新しい、削除された、修正された、コピーされた、名前変更された、又は移動されたオブジェクト)に基づいて行われうる。
サーバインタフェース210は、コンテンツ管理システム110におけるオブジェクトに対するリモート変更の処理及びリモートツリー210の更新を支援するように構成される。例えば、サーバインタフェース210は、クライアントデバイス150とコンテンツ管理システム110との間で、オブジェクトに対する変更を同期させるために、サーバ同期サービス112と通信しうる。コンテンツ管理システム110におけるオブジェクトに対する変更(新しい、削除された、修正された、コピーされた、名前変更された、又は移動されたオブジェクト)が検出されうるとともに、コンテンツ管理システム110における変更を反映するために、リモートツリー210に対して更新が行われうる。サーバインタフェース210は更に、オブジェクトデータベース148を更新するために、ローカルファイルシステム270におけるオブジェクトに対するローカル変更のサーバ同期サービス112への通信を支援するように構成される。
ツリーストレージ220は、クライアント同期サービス156によって使用されるツリーデータ構造を格納し、維持するように構成される。例えば、ツリーストレージ220は、ローカルツリー250、同期ツリー235、及びリモートツリー210を格納しうる。いくつかの実施形態では、ツリーストレージ220は、レイテンシ及び応答時間を低減するために、ツリーデータ構造を永続的メモリ(例えば、ハードディスク又は他の二次記憶装置)並びにメインメモリ(例えば、RAM又は他の一次記憶装置)に格納しうる。例えば、クライアントデバイス又はクライアント同期サービス156の起動時に、ツリーデータ構造が永続的メモリから取り出され、メインメモリにロードされうる。ツリーストレージ220は、メインメモリ上のツリーデータ構造にアクセスして更新するしうるとともに、クライアントデバイス又はクライアント同期サービス156がシャットダウンされる前に、ツリーストレージ220は、更新されたツリーデータ構造を永続的メモリに格納されうる。
リモートツリー210は、サーバ状態又はクライアントデバイスからリモートに(例えば、コンテンツ管理システムのサーバ上に)格納されたオブジェクトの状態を表す。ローカルツリー250は、ファイルシステム状態、又はクライアントデバイス上にローカルに格納された対応するオブジェクトの状態を表す。同期ツリー235は、ローカルツリー及びリモートツリーのためのマージベースを表す。マージベースは、ローカルツリーとリモートツリーとの共通の祖先、又はローカルツリーとリモートツリーとの間の最後の既知の同期状態と考えられうる。
各ツリーデータ構造(例えば、リモートツリー210、同期ツリー235、又はローカルツリー250)は、1つ以上のノードを含みうる。ツリーデータ構造内の各ノードは、オブジェクト(例えば、ファイル、ドキュメント、フォルダ等)を表しうる。ツリーデータ構造内の各ノードは、例えば、オブジェクトの親ノードのオブジェクト識別子を指定するディレクトリオブジェクト識別子、オブジェクトのオブジェクト名、オブジェクトのオブジェクト識別子、及びオブジェクトのメタデータ等のデータを含みうる。
Each tree data structure (eg,
プランナ225は、ツリーデータ構造の状態に基づいて、コンテンツ管理システム110に関連付けられたサーバ状態と、クライアントデバイス150に関連付けられたファイルシステム状態との間の差を検出するように構成される。例えば、プランナ225は、リモートツリー210と同期ツリー235との間に差があるかどうかを判定しうる。リモートツリー210と同期ツリー235との間の差は、コンテンツ管理システム110に格納された1つ以上のオブジェクトに対してリモートで実行されたアクションが、サーバ状態とファイルシステム状態とを非同期にしたことを示す。同様に、プランナ225は更に、ローカルツリー250と同期ツリー235との間に差があるかどうかを判定しうる。ローカルツリー250と同期ツリー235との間の差は、クライアントデバイス150上のローカルファイルシステム270に格納された1つ以上のオブジェクトに対してローカルで実行されたアクションが、サーバ状態とファイルシステム状態とを非同期にしたことを示す。差が検出された場合、プランナ225は、ツリーデータ構造を同期させる動作のセットを生成する。
いくつかのシナリオでは、リモートツリーと同期ツリーとの間の差に基づいて生成される動作のセットと、ローカルツリーと同期ツリーとの間の差に基づいて生成される動作のセットとが競合しうる。プランナ225は更に、2セットの動作を単一の統合された動作プランに統合するように構成されうる。
In some scenarios, the set of behaviors generated based on the differences between the remote tree and the sync tree may conflict with the set of behaviors generated based on the differences between the local tree and the sync tree. sell.
スケジューラ230は、生成された動作プランを取得し、それらの動作の実行を管理するように構成される。いくつかの実施形態によれば、スケジューラ230は、動作プランにおける各動作を、動作を実行するために実行される必要がある1つ以上のタスクの系列に変換する。いくつかのシナリオでは、いくつかのタスクが古くなるか、又はもはや関連性が無くなりうる。スケジューラ230は、それらのタスクを識別し、それらのタスクをキャンセルするように構成される。 Scheduler 230 is configured to obtain the generated operation plans and manage the execution of those operations. According to some embodiments, scheduler 230 converts each operation in the operation plan into a sequence of one or more tasks that need to be executed to perform the operation. In some scenarios, some tasks may become obsolete or no longer relevant. Scheduler 230 is configured to identify those tasks and cancel those tasks.
ローカルツリー250と同期ツリー235との間に差が存在する場合、変更をコンテンツ管理システム110に同期させる必要がある。 ローカルファイルシステム270の変更をコンテンツ管理システム110に同期させるために、クライアント同期サービスは、特定の同期動作に関連するサーバ同期サービス112にインテントをコミットしうる。意図をコミットするために、クライアントデバイス150上のクライアント同期サービス156は、クライアントデバイス150における動作をコミットする意図を記録する。クライアント同期サービス156は、保留中のコミットをトラッキングするために、クライアントデバイス150のディスク又はメモリ上で動作を永続的にコミットする意図を記録しうる。クライアントデバイス150は、イベントが、失敗又は成功等の保留中のコミットの除去をトリガするまで、ダーティコミットレコード及び追跡修正を格納しうる。クライアント同期サービス156は更に、動作をコミットすることを要求するメッセージをサーバ同期サービス112に送信することによって、動作をサーバ同期サービス112にコミットする。
If differences exist between
サーバ同期サービス112は、コンテンツ管理システム110へのコミットが成功したか、又は誤差を示す返信メッセージを送信しうる。コミットが成功したことをクライアント同期サービス156が知ると、クライアント同期サービス156は、同期された動作を含めるためにリモートツリー610及び同期ツリー620を更新し、かつ、クライアントデバイス150から動作をコミットする意図をクリアする。
クライアントアプリケーション152は、クライアントデバイスに知られている最後の同期時刻以降にオブジェクトデータベース148に記録されたオブジェクト上で発生するイベントに関する情報を要求することによって、サーバに存在する変更を学習しうる。いくつかの実施形態では、クライアント同期サービス156は、定期的に、又は可能性ある変更についての通知の受信に応答して、更新された情報を求める要求を行う。コンテンツ管理システムにおけるアカウントに変更が生じた場合、サーバ同期サービス112は、実行された動作に関する情報を、リモートツリー215を更新しうるクライアント同期サービス156に送信しうる。その後、クライアント同期サービス156は、ローカルファイルシステム270が更新される必要があることを示す、リモートツリー215と同期ツリー235との間の差を検出しうる。プランナ225は、ローカルファイルシステム270を更新するために必要とされる動作を識別しうるとともに、サーバインタフェース210は、コンテンツ管理システム110からの、オブジェクト等を構成するブロック等の任意のデータを要求しうる。
Client application 152 may learn of changes that exist at the server by requesting information about events that occur on objects recorded in object database 148 since the last synchronization time known to the client device. In some embodiments,
クライアント同期サービス156は、ローカルファイルシステム270、ローカルツリー250、及び同期ツリー235を更新することで、システムを同期状態にしうる。更に、クライアント同期サービス156は、オブジェクトデータベース148から受信された情報に関連する同期時刻を識別する情報を格納することで、クライアントアプリケーションが少なくとも最後の同期時刻までは最新であることを示しうる。いくつかの実施形態では、最後の同期時刻は、オブジェクトデータベース148内の行に関連し、コンテンツ管理システム110から受信される暗号署名されたカーソルの一部として格納されうる。クライアント同期サービスは、次回、更新された情報を要求すると、読み出しを開始するオブジェクトデータベース148内のポイントを識別するためのカーソルを供給する。
アンカーオブジェクト(Anchor Object) Anchor Object
いくつかの実施形態では、コンテンツ管理システム110は、クライアントデバイス150上の監視されるディレクトリの外部にある外部ディレクトリのためのアンカーオブジェクトを生成する機能を含みうる。アンカーオブジェクトは、専用の属性を有するオブジェクトである。クライアントアプリケーション152は、アンカーオブジェクトを、クライアント同期サービス156によって監視されるディレクトリの外部にあるディレクトリを指すオブジェクトとして認識しうる。例えば、図2は、クライアント同期サービス156によって監視されるディレクトリ内のアンカーオブジェクト271を示しており、アンカーオブジェクト271は、外部ディレクトリ外部ハードドライブ151を指す。アンカーオブジェクト271は、図2の外部ハードドライブ151を指すものとして示されているが、アンカーオブジェクト271は、同期サービス156によって監視されるディレクトリの外側にある、クライアントデバイス150上の他のディレクトリを指す場合もあることを理解されたい。
In some embodiments,
アンカーオブジェクトを利用することにより、アンカーオブジェクトによって表される外部ディレクトリのコンテンツをコンテンツ管理システム110に同期させることができる。いくつかの実施形態では、アンカーオブジェクトは、クライアントデバイス150に最初に格納されることなく、外部ディレクトリ内のオブジェクトを直接同期させるようにクライアント同期サービスに指示するプロパティと関連付けられうる。
Anchor objects can be used to synchronize the content of external directories represented by anchor objects to
コンテンツ管理システム110の観点から、アンカーオブジェクトによって表される外部ディレクトリは、当該アンカーオブジェクトを含むディレクトリ内に当該外部ディレクトリが位置するかのように扱われうる。アンカーオブジェクトは、監視されるディレクトリ内のディレクトリとして格納されうるとともに、リモートツリー215に示されるように、その下に位置するオブジェクトと共に現れうる。
From the perspective of
しかしながら、クライアント同期サービス156の観点から、アンカーオブジェクトは、それがローカルツリー250及び同期ツリー235においてどのように表されるかについてのいくつかの特性を変更する専用の属性を有し、外部ディレクトリに格納されたオブジェクトの同期のいくつかの態様を変更しうる。監視されるディレクトリの表現は、アンカーオブジェクト271を含む、監視されるディレクトリ内のオブジェクトのファイルシステム構造を表すローカルツリー構造250に格納されうる。アンカーオブジェクト271は、ローカルツリー構造において、それがアンカーオブジェクトであることを示すために、専用の属性の一部としてフラグを有するファイル又は専用のオブジェクトとして表される。同様に、アンカーオブジェクトの下位の任意のオブジェクトは、それらが外部ディレクトリの一部であることを示すためのフラグ又は専用の属性を有するローカルツリー250又は同期ツリー235にも現れうる。
However, from the perspective of the
いくつかの実施形態では、アンカーオブジェクトの専用の属性は、関連する外部ディレクトリの属性を記述する拡張属性又は最終データストリームである。例えば、専用の属性は、関連する外部ディレクトリのロケーション情報をバイナリ・ラージ・オブジェクト(BLOB:Binary Large Object)として格納するXattrであってもよい。ロケーション情報は、ディレクトリID、iノード・リファレンス、デバイスID、オブジェクトID、ユニークID(UUID)、ターゲットロケーション、パス等を含むが、これらに限定されない。専用の属性は、外部ディレクトリ及びその対応するコンテンツの識別情報及びロケーションについてのソース・オブ・トゥルース(source of truth)として機能しうる。 In some embodiments, the anchor object's dedicated attributes are extended attributes or final data streams that describe attributes of the associated external directory. For example, the dedicated attribute may be an Xattr that stores the location information of the associated external directory as a Binary Large Object (BLOB). Location information includes, but is not limited to, directory IDs, inode references, device IDs, object IDs, unique IDs (UUIDs), target locations, paths, and the like. The dedicated attributes may serve as a source of truth for the identity and location of the external directory and its corresponding content.
いくつかの実施形態では、クライアント同期サービス156は、専用の属性の存在を検出することによってアンカーオブジェクトを認識しうる。オブジェクトが有効なアンカーオブジェクトであると判定した後、クライアント同期サービス156は、専用の属性によって示される、関連する外部ディレクトリのコンテンツを読み出しうる。その後、クライアント同期サービス156は、外部ディレクトリ上に格納されたコンテンツアイテムをコンテンツ管理システム110に同期させるためにサーバ同期サービス112と通信しうる。外部ディレクトリのそのような同期は、定期的に、又は特定のファイルイベントが発生した際に行われうる。図3A及び図3Bに関して、そのようなプロセスがより詳細に説明される。
In some embodiments,
いくつかの実施形態では、Xattr等の専用の属性は、コンテンツ管理システムがアンカーオブジェクトに対する特定のユーザ操作をインターセプト(intercept)し、それに応答して所定のアクションを実行することを可能にしうる。図3A及び図3Bに関して、このプロセスがより詳細に説明される。例えば、ユーザが外部ドライブのUUIDを含むXattrを有するアンカーをダブルクリックすると、外部ドライブがアクセス可能である場合、コンテンツ管理システムは、ユーザインタフェースを介して当該外部ドライブのコンテンツを提示しうる。Xattr内の外部ドライブにアクセスできない場合、コンテンツ管理システムは、コンテンツ管理システム上に格納された、外部ドライブの対応する同期済みコンテンツを提示しうる。 In some embodiments, dedicated attributes, such as Xattr, may allow the content management system to intercept certain user operations on the anchor object and perform predetermined actions in response. This process is explained in more detail with respect to FIGS. 3A and 3B. For example, if a user double-clicks an anchor with an Xattr that includes the UUID of an external drive, and the external drive is accessible, the content management system may present the content of the external drive via the user interface. If the external drive in Xattr is not accessible, the content management system may present the external drive's corresponding synchronized content stored on the content management system.
いくつかの実施形態では、オブジェクトが有効なアンカーオブジェクトであると判定した後、サーバ同期サービス112は、アンカーオブジェクトの専用の属性を読み出して、当該専用の属性に基づいてインメモリ(in-memory)マップを作成しうる。インメモリマップは、クライアントデバイス150のローカルメモリ等、メモリ内のソース・オブ・トゥルースでありうる。そのような実施形態では、クライアント同期サービス156は、インメモリマップを使用して、外部ディレクトリのUUIDを、ローカルツリー構造内のコンテンツ管理システムパスに変換し、これにより、外部ディレクトリのコンテンツを追跡しうる。そのようなインメモリマップは、定期的に、又は特定のファイルイベントで更新される。図4に関して、そのようなプロセスがより詳細に説明される。
In some embodiments, after determining that the object is a valid anchor object, the
クライアントデバイス150のユーザの観点から、アンカーオブジェクトは、クライアントデバイス150のユーザインタフェースを介してフォルダとして表されうる。ユーザがクライアントデバイス150上のユーザインタフェースを介してアンカーオブジェクトに対する操作を実行する場合、ユーザエクスペリエンスは、ユーザインタフェース上の任意の他のフォルダとのインタラクションと同じである。例えば、ユーザは、アンカーオブジェクトを開いて、その対応するコンテンツを見ること、アンカーオブジェクトを削除すること、アンカーオブジェクトを移動させること、又はアンカーオブジェクトの名前を変更することを行いうる。図5に関して、そのようなプロセスがより詳細に説明される。
From the perspective of a user of
アンカーオブジェクトの導入により、クライアントデバイスの外部に格納されたコンテンツアイテムをコンテンツ管理システムに同期させるための既存の技術に対するいくつかの改善が提供される。第1に、外部コンテンツは、最初にクライアントデバイス上にローカルに格納される必要なく、外部ロケーションからコンテンツ管理システムに直接同期されうる。第2に、アンカーオブジェクトは、外部ディレクトリがクライアントデバイスにアクセス可能であるか否かにかかわらず、外部ディレクトリとのインタラクションを行う一貫性のあるユーザエクスペリエンスを提供する。 The introduction of anchor objects provides several improvements over existing techniques for synchronizing content items stored external to a client device to a content management system. First, external content can be synchronized directly from an external location to the content management system without first having to be stored locally on the client device. Second, anchor objects provide a consistent user experience for interacting with external directories regardless of whether the external directories are accessible to the client device.
図3Aは、クライアントデバイスの外部ロケーションを同期させるための例示的な方法300を示す。例示的な方法300は特定のシーケンスの動作を示しているが、当該シーケンスは、本開示の範囲から逸脱することなく変更されうる。例えば、示される動作のいくつかは、並列に実行されてもよいし、又は方法300の機能に実質的に影響を与えない、異なるシーケンスで実行されてもよい。他の例では、方法300を実装する例示的なデバイス又はシステムの異なるコンポーネントが、実質的に同時に、又は特定のシーケンスで、機能を実行しうる。
FIG. 3A shows an
動作302において、クライアントデバイス上で実行されるコンテンツ管理システムのクライアントアプリケーション152は、同期ディレクトリの外部にある外部ディレクトリを検出しうる。例えば、図1に示すクライアントアプリケーション152は、クライアントデバイス150上のクライアント同期サービス156によって監視されるディレクトリ等の、同期ディレクトリの外部にある外部ディレクトリを検出しうる。外部ディレクトリは、クライアントデバイスに接続された外部ハードドライブ、クライアントデバイスがアクセス可能なネットワークドライブ、クライアントデバイス上のフォルダ、クライアントデバイス上のファイルオブジェクト、クライアントデバイスに接続されたカメラ等でありうる。
At
動作304において、コンテンツ管理システムのクライアントアプリケーション152は、グラフィカルユーザインタフェース内に外部ディレクトリを表現しうる。第1の例では、クライアントアプリケーション152は、外部ディレクトリが同期のために利用可能であることをユーザに知らせるメッセージを提示するプロンプトを表示しうる。第2の例では、グラフィカルユーザインタフェース内の外部ディレクトリの表現は、クライアントデバイス150上でアクセス可能なフォルダ又は外部ドライブのリスト内の外部ディレクトリを表すアイコンでありうる。図6A及び図6Bに関して、この動作がより詳細に説明される。
At
動作306において、コンテンツ管理システムのクライアントアプリケーション152は、クライアントデバイス150のユーザから外部ディレクトリの表現の選択を受け付けうる。図6A及び図6Bに関して、この動作がより詳細に説明される。
At
動作308において、コンテンツ管理システムのクライアントアプリケーション152は、外部ディレクトリの表現の選択を受け付けたことに応答して、同期のために外部ディレクトリを登録するオプションを提示しうる。図6A及び図6Bに関して、この動作がより詳細に説明される。
At
動作309において、コンテンツ管理システムのクライアントアプリケーション152は、動作306において外部ディレクトリの表現の選択を受け付けたことに応答して、又は動作308において同期のために外部ディレクトリを登録するためのオプションを提示することと共に、同期から外部ディレクトリ上のオブジェクトを除外するためのオプションを提示しうる。
In
動作310において、コンテンツ管理システムのクライアントアプリケーション152は、外部ディレクトリへのリンクを作成しうる。第1の例では、外部ディレクトリへのリンクは、同期対象の外部ディレクトリを指すものとしてリンクを識別する専用の属性を含む。ディレクトリの属性は、ディレクトリID、iノード・リファレンス、デバイスID、オブジェクトID、UUID、ターゲットロケーション、パス等を含むが、これらに限定されない。第2の例では、リンクは、アンカーオブジェクトと呼ばれるカスタムオブジェクトタイプである。図1に関して上述したように、アンカーオブジェクトは、専用の属性を有するオブジェクトである。アンカーオブジェクトは、同期対象の外部ディレクトリを指すものとしてアンカーオブジェクトを識別し、かつ、ディレクトリの属性を記述するオブジェクトとして、クライアントアプリケーションによって認識される。第3の例では、リンクは、シンボリックリンク又はショートカットである。
At
いくつかの実施形態では、動作310においてリンクが作成されると、コンテンツ管理システムのクライアントアプリケーションは、アンカーオブジェクトによって表される外部ディレクトリのファイルイベントに再帰的にサブスクライブしうる。例えば、クライアントアプリケーション152は、毎時、毎日、又は毎月等の、ある期間の満了後に、アンカーオブジェクトによって表される外部ディレクトリのファイルイベントを検出しうる。クライアントアプリケーション152は、クライアントデバイスの外部ロケーションの同期を更に達成する際に、外部ディレクトリの検出されたファイルイベントを使用しうる。
In some embodiments, once the link is created in
動作312において、クライアントアプリケーション152は、動作310において作成されたリンク271を、クライアントデバイス150上の同期ディレクトリに格納しうる。
In
動作314において、クライアントアプリケーション152は、同期ディレクトリ内の格納されたリンク271を、選択可能なアイコンとして表現しうる。例えば、リンクは、フォルダ、外部ドライブ、カメラ、ファイルオブジェクト、又はカスタムアイコンとして、ユーザインタフェース上で表現されうる。
At
動作316において、クライアントアプリケーション152は、外部ディレクトリを表すリンクを介して外部ディレクトリにアクセスしうる。
At
動作318において、図1に示すクライアントアプリケーション152は、外部ディレクトリにアクセスした後に、当該外部ディレクトリが有効なロケーションであるかどうかを判定しうる。第1の例では、外部ディレクトリが有効なロケーションであると判定することは、外部ディレクトリが存在し、かつ、アクセス可能であると判定することを含む。第2の例では、外部ディレクトリが有効なロケーションであると判定することは、外部ディレクトリが、サポートされているフォーマットであると判定することを含む。サポートされているフォーマットは、クライアントアプリケーションによる読み出しが可能なディスクフォーマットでありうる。サポートされているフォーマットは、拡張属性をサポートするディスクフォーマットでありうる。外部ドライブのフォーマットの例には、FAT32及びexFATが含まれる。いくつかの実施形態では、フォーマットが、必要なメタデータを格納するための拡張属性又は他のメカニズムをサポートしていない場合に、フォーマットは完全にはサポートされないことがある。いくつかの実施形態では、本技術は依然として、限られた方法で機能することが可能でありうる。サポートされていない形式では、単方向同期又は外部ディレクトリのバッチバックアップ等の、機能低下がありうる。
At
動作318において、クライアントアプリケーション152が、外部ディレクトリが有効なロケーションであると判定した場合、プロセスは動作320に進みうる。動作318において、クライアントアプリケーション152が、外部ディレクトリが有効なロケーションではないと判定した場合、プロセスは終了しうる。
If the client application 152 determines in
動作320において、コンテンツ管理システムのクライアントアプリケーションは、外部ディレクトリ上の少なくとも1つのオブジェクトを検出しうる。例えば、図1に示すクライアントアプリケーション152は、外部ディレクトリ上の少なくとも1つのオブジェクトを検出しうる。図1に示すクライアントアプリケーション152は、外部ディレクトリのコンテンツに関するメタデータを読み出しうるとともに、外部ディレクトリ内の各オブジェクトを処理して、各オブジェクトのコンテンツを、ハッシュ化されたブロックに変換しうる。一例では、ハッシュ化されたブロックは、クライアントデバイス150のメモリに一時的に格納される。
At
いくつかの実施形態では、クライアントアプリケーションは、外部ドライブのコンテンツに関連するメタデータを読み出しうるとともに、ある期間の満了後に、各オブジェクトのコンテンツをハッシュ化されたブロックに変換するために、外部ディレクトリ内の各オブジェクトを処理しうる。 In some embodiments, a client application can read metadata associated with the contents of an external drive and, after expiration of a period of time, convert the contents of each object into a hashed block in the external directory. can process each object.
動作322において、図1に示すクライアント同期サービス156は、クライアントデバイスの内部ハードドライブ上に少なくとも1つのオブジェクトを最初に格納することなく、外部ディレクトリ上の少なくとも1つのオブジェクトをコンテンツ管理システムに同期させるためにサーバ同期サービス112と通信しうる。一例では、コンテンツ管理システムは、同期ディレクトリのコンテンツを双方向に同期させるように構成されるが、外部ディレクトリの同期は、外部ディレクトリ内のオブジェクトに加えられた変更がコンテンツ管理システムには同期されるが、コンテンツ管理システムのクラウドストレージ上に表現されるオブジェクトに加えられた変更は外部ディレクトリに同期されないように、単方向の同期である。
At
動作322のいくつかの実施形態では、一部の外部ディレクトリ上のファイルイベントの検出が信頼できない可能性があるため、外部ディレクトリ内で検出されたファイルイベントに基づくものとは対照的に、クライアントアプリケーションは、ある期間の満了後に同期をトリガしてもよい。例えば、図1に示すクライアント同期サービス156は、ある期間の満了後に同期をトリガしうる。一部の状況では信頼できない場合があるが、外部ディレクトリでファイルイベントが検出された後に同期をトリガすることも可能である。例えば、図1に示すクライアント同期サービス156は、外部ディレクトリにおいてファイルイベントが検出された後に同期をトリガしうる。更に、同期を要求するユーザ入力の受け付けに応じて、同期がトリガされてもよい。例えば、図1に示すクライアント同期サービス156は、同期を要求するユーザ入力の受け付けに応じて、同期をトリガしうる。
In some embodiments of
図1に関して説明したように、オブジェクトの同期は、オブジェクトをブロックに分割することを含みうるとともに、ブロックをコンテンツ管理システム110に送信する前に、ブロック識別子を取得するために当該ブロックはハッシュ関数に挿入されうる。ブロック識別子は、コンテンツ管理システム110がこのブロックをすでに格納しているかどうかを判定するために使用されうる。コンテンツ管理システムがブロックをまだ所有していない場合、当該ブロックは、格納のためにコンテンツ管理システムに送信される。動作322の一例では、同期は更に、メモリに一時的に格納された、ハッシュ化されたブロックを、コンテンツ管理システム110に送信することを含む。
As discussed with respect to FIG. 1, synchronizing an object may include dividing the object into blocks and subjecting the blocks to a hash function to obtain a block identifier before sending the blocks to
動作324において、クライアントアプリケーション152は、同期から除外されるべき外部ディレクトリ内のオブジェクトを選択するためのユーザ入力を受け付けるのに有効なユーザインタフェースを提供しうる。
At
いくつかの実施形態では、動作324は、動作322の前に、又はそれと同時に実行されてもよい。
In some embodiments, act 324 may be performed before or concurrently with
動作326において、クライアントデバイス150は、同期から除外されるべき選択されたオブジェクトを、隠しオブジェクトに格納しうる。
At
動作328において、図1に示されるクライアントアプリケーション152は、選択されたオブジェクトが隠しオブジェクト内で参照された場合に、クライアントアプリケーション152のクライアント同期サービス156による同期から、選択されたオブジェクトを除外しうる。
At
いくつかの実施形態では、動作324、326、及び328を実行する代わりに、クライアントアプリケーション152は、同期対象の外部ディレクトリ内のオブジェクトを選択するためのユーザ入力を受け付けるのに有効なユーザインタフェースを提供しうる。例えば、ユーザは、外部ドライブからの全てのフォルダの代わりに、同期対象の外部ドライブからサブフォルダのセットを選択しうる。別の例では、ユーザは、クライアントデバイス150に関連付けられた他のドライブ又はボリュームから、同期対象のサブフォルダのセットを選択しうる。
In some embodiments, instead of performing
図3Bは、アンカーオブジェクトの選択を通じてクライアントデバイスの外部ロケーションにアクセスするための例示的な方法350を示す。例示的な方法350は特定のシーケンスの動作を示しているが、当該シーケンスは、本開示の範囲から逸脱することなく変更されうる。例えば、示される動作のいくつかは、並列に実行されてもよいし、又は方法350の機能に実質的に影響を与えない、異なるシーケンスで実行されてもよい。他の例では、方法350を実装する例示的なデバイス又はシステムの異なるコンポーネントが、実質的に同時に、又は特定のシーケンスで、機能を実行しうる。
FIG. 3B illustrates an
動作330において、クライアントアプリケーション152は、ユーザインタフェースを通じて、外部ディレクトリを表す格納されたリンクの選択を受け付けうる。
At
動作332において、図1に示すクライアントアプリケーション152は、外部ディレクトリがアクセス可能であるかどうかを判定しうる。
At
動作332において、クライアントアプリケーション152が、外部ディレクトリがアクセス可能であると判定した場合、プロセスは動作334に進みうる。
If, at
動作334において、クライアントデバイス150は、外部ディレクトリへのアクセスを提供しうる。
At
動作332において、クライアントアプリケーション152が、外部ディレクトリにアクセス可能ではない判定した場合、プロセスは動作336に進みうる。
If, at
動作336において、コンテンツ管理システムのクライアントアプリケーションは、ステップ334におけるコンテンツ管理システムのウェブインタフェース内で、外部ディレクトリの同期済みコンテンツへのアクセスを提供しうる。例えば、図1に示されるクライアントアプリケーション152は、外部ディレクトリがアクセス可能でない場合に、コンテンツ管理システムのウェブインタフェース内で、外部ディレクトリの同期済みコンテンツへのアクセスを提供しうる。この例では、クライアントアプリケーション152は、外部ディレクトリに格納されたコンテンツではなく、コンテンツ管理システム110に格納された、外部ディレクトリの同期済みコンテンツへのアクセスを提供している。
At
いくつかの実施形態では、Xattr等のアンカーオブジェクトの専用属性は、コンテンツ管理システムが、動作330における選択等の、アンカーオブジェクトに対する特定のユーザ動作をインターセプトし、それに応答して所定の動作を実行することを可能にしうる。例えば、ユーザが外部ドライブのUUIDを含むXattrを有するアンカーをダブルクリックすると、外部ドライブがアクセス可能である場合、クライアントアプリケーション152は、動作334において、ユーザインタフェースを通じて外部ドライブのコンテンツを提示しうる。Xattr内の外部ドライブがアクセス可能でない場合、クライアントアプリケーション152は、動作336において、コンテンツ管理システム上に格納された、外部ドライブの対応する同期済みコンテンツを提示しうる。
In some embodiments, a dedicated attribute of an anchor object, such as can be made possible. For example, if the user double-clicks an anchor with an Xattr that includes the UUID of the external drive, and the external drive is accessible, client application 152 may present the contents of the external drive through the user interface in
いくつかの実施形態では、コンテンツ管理システムのサーバ同期サービスは、外部ディレクトリの同期済みコピーをリンクコンテナに変換しうる。例えば、外部ディレクトリの同期に失敗した場合、サーバ同期サービス112は、コンテンツ管理システム110に格納されている外部ディレクトリの同期済みコピーをリンクコンテナに変換しうる。そのような変換が行われると、ローカルツリー上の外部ディレクトリを表すノードは、無視状態に設定され、これにより、コンテンツ管理システム110及びクライアントアプリケーション152が、そのようなノード上の更なる変更を無視することになる。リモートツリー上の外部ディレクトリを表すノードは、隠し状態(hidden state)に設定され、これにより、外部ディレクトリの同期済みコピーがコンテンツ管理システム110のユーザインタフェース上に示されないようにリモートツリー上のそのようなノードが隠されることになる。この変換プロセスをトリガする可能性がある他の例示的な状況としては、外部ディレクトリのコンテンツの読み出しに時間がかかりすぎること、クライアントデバイス150上のシステム障害、コンテンツ管理システム110上の外部ディレクトリの同期済みコピーが削除されること、又は同期が行われている間に外部ディレクトリがクライアントデバイス150にアクセスできなくなることが挙げられるが、これらに限定されない。
In some embodiments, a content management system's server synchronization service may convert synchronized copies of external directories into link containers. For example, if synchronization of an external directory fails,
図4は、アンカーオブジェクトを生成するための例示的な方法400を示す。例示的な方法400は特定のシーケンスの動作を示しているが、当該シーケンスは、本開示の範囲から逸脱することなく変更されうる。例えば、示される動作のいくつかは、並列に実行されてもよいし、又は方法400の機能に実質的に影響を与えない、異なるシーケンスで実行されてもよい。他の例では、方法400を実装する例示的なデバイス又はシステムの異なるコンポーネントが、実質的に同時に、又は特定のシーケンスで、機能を実行しうる。
FIG. 4 illustrates an
動作410において、クライアントアプリケーション152は、外部ディレクトリについてのアンカーオブジェクトを生成しうる。図1及び図3Aに関して上述したように、アンカーオブジェクトは、専用な属性を有するオブジェクトであり、クライアントアプリケーションは、アンカーオブジェクトを含むディレクトリの外部にある外部ディレクトリを指すオブジェクトとして、アンカーオブジェクトを認識しうる。この例では、クライアントアプリケーションは、外部ディレクトリがアンカーを含むディレクトリ内に位置しているかのように、当該外部ディレクトリを扱う。専用の属性は、ディレクトリの属性を記述する拡張属性又は最終データストリームである。ディレクトリの属性は、ディレクトリID、iノード・リファレンス、デバイスID、オブジェクトID、UUID、ターゲットロケーション、パス等を含むが、これらに限定されない。
At
いくつかの実施形態では、アンカーを格納するディレクトリは、クライアント同期サービス156によって監視されるディレクトリであり、そのコンテンツはコンテンツ管理システムに対して同期される。
In some embodiments, the directory that stores the anchor is a directory that is monitored by the
動作420において、クライアント同期サービス156は、アンカーオブジェクトを認識しうる。この例では、アンカーオブジェクトは、専用の属性の存在によって認識される。
At
動作430において、クライアント同期サービス156は、アンカーオブジェクトの専用の属性を読み出しうる。この例では、クライアント同期サービス156は、外部ディレクトリのコンテンツに関するメタデータを読み出しうるとともに、外部ディレクトリ内の各オブジェクトを処理して、各オブジェクトのコンテンツをハッシュ化されたブロックに変換しうる。
At
動作440において、クライアントアプリケーションの同期サービス156は、アンカーオブジェクトの専用の属性を使用して、外部フォルダの情報を判定しうる。例えば、クライアント同期サービス156は、アンカーオブジェクトの専用の属性を使用して、外部ディレクトリに関連付けられた外部フォルダのコンテンツ、ロケーション情報、又は他の情報を判定しうる。
At
動作450において、クライアント同期サービス156は、外部ディレクトリのデバイスUUIDを、ローカルツリー内のコンテンツ管理システムパスに変換するために、専用の属性に基づいて外部ディレクトリのインメモリマップを作成しうる。専用の属性は、識別情報及びロケーションについてのソース・オブ・トゥルースとして機能する。
At
動作460において、クライアント同期サービス156は、外部ディレクトリのコンテンツを読み出しうる。
At
動作460において、クライアント同期サービス156は、外部ディレクトリ上の少なくとも1つのオブジェクトをコンテンツ管理システムに同期させうる。この例では、ユーザは、どのオブジェクトが同期されるべきであるか、及び、どのオブジェクトが同期されるべきではないかに関するオプションを有しうる。いくつかの実施形態では、動作460の同期は、外部ディレクトリからコンテンツ管理システム110への単方向である。いくつかの実施形態では、同期動作は、外部ディレクトリとコンテンツ管理システム110との間で双方向である。
At
図5は、コンテンツ管理システムサーバによって外部ディレクトリを処理及び同期させるための例示的な方法500を示す。例示的な方法500は特定のシーケンスの動作を示しているが、当該シーケンスは、本開示の範囲から逸脱することなく変更されうる。例えば、示される動作のいくつかは、並列に実行されてもよいし、又は方法500の機能に実質的に影響を与えない、異なるシーケンスで実行されてもよい。他の例では、方法500を実装する例示的なデバイス又はシステムの異なるコンポーネントが、実質的に同時に、又は特定のシーケンスで、機能を実行しうる。
FIG. 5 illustrates an
動作505において、サーバ同期サービス112は、第1のクライアントデバイスから、コンテンツ管理システムによるアンカーオブジェクトの同期を受信しうる。一例では図1、図3A、及び図4に関して上述したように、アンカーオブジェクトは、専用の属性を有するオブジェクトであり、アンカーオブジェクトは、コンテンツ管理システムによって、第1のクライアントデバイスによって到達可能な外部ディレクトリを指すオブジェクトとして認識される。この例では、外部ディレクトリは、アンカーオブジェクトを含む、第1のクライアントデバイス上のディレクトリの外部にある。
At
動作510において、図1に示すウェブインタフェースサービス124は、アンカーオブジェクトを含むディレクトリ内のフォルダとして、アンカーオブジェクトを表現しうる。例えば、アンカーオブジェクトの子オブジェクトは、アンカーオブジェクトを含むディレクトリから成るパス内にあるものとしても表現される。アンカーオブジェクト及び子オブジェクトはコンテンツ管理システムのウェブサーバ上で、ブラウジング可能及び閲覧可能である。別の例では、アンカーオブジェクト及び子オブジェクトは、スマートフォン又はパーソナルコンピュータ等のクライアントデバイスのファイルブラウザ上で、ブラウジング可能及び閲覧可能である。
At
いくつかの実施形態では、アンカーオブジェクト及びその子オブジェクトは、単方向同期用に設定されるが、コンテンツ管理システムは、デフォルトでオブジェクトの双方向同期をサポートする。しかしながら、当業者であれば、アンカーオブジェクト及びその子オブジェクトも双方向同期用に設定されうることも理解するであろう。 In some embodiments, an anchor object and its child objects are configured for unidirectional synchronization, but the content management system supports bidirectional synchronization of objects by default. However, those skilled in the art will also understand that the anchor object and its child objects may also be configured for two-way synchronization.
動作515において、図1に示すウェブインタフェースサービス124は、コンテンツ管理システムのウェブサーバを介して、アンカーオブジェクトのパス内の子オブジェクトの選択を受け付けうる。
At
動作525において、ウェブインタフェースサービス124は、コンテンツ管理システムのウェブサーバを介して、子オブジェクトの編集を受け付けうる。いくつかの実施形態では、子オブジェクトのそのような編集は、第2のクライアントデバイスのクライアントアプリケーション上で行われうる。
At
動作530において、図1に示すサーバ同期サービス112は、子オブジェクトが単方向同期用に設定されていると判定しうる。例えば、サーバ同期サービス112は、アンカーオブジェクトをオブジェクトパス内の先祖として有するパス内に子オブジェクトがあると判定することによって、子オブジェクトが単方向同期用に設定されていると判定しうる。別の例では、サーバ同期サービス112は、子オブジェクトが単方向同期用に設定されていることを示す専用の属性に子オブジェクトが関連付けられていると判定することによって、子オブジェクトが単方向同期用に設定されていると判定しうる。
At
動作535において、ウェブインタフェースサービス124は、子オブジェクトが単方向同期用に設定されているとの警告を提供しうる。
At
動作540において、ウェブインタフェースサービス124は、ユーザが編集を同期させたいことを確認する入力をユーザから受け付けうる。
At
動作545において、図1に示すサーバ同期サービス112は、編集を含む子オブジェクトのコピーを作成しうる。この例では、子オブジェクトのコピーは、最初に、外部ディレクトリ以外の、クライアントデバイス150に関連付けられたディレクトリ(例えば、ユーザアカウントディレクトリ、又は他のディレクトリ)の下で、コンテンツ管理システム110上に格納されうる。
At
動作550において、サーバ同期サービス112は、子オブジェクトのコピーを、双方向同期をサポートしているディレクトリに同期させうる。この例では、サーバ同期サービス112は、コピーを外部ディレクトリに同期させなくてもよい。
At
動作550において、サーバ同期サービス112は、アンカーオブジェクトを第2のクライアントデバイスに同期させうる。一例では、アンカーオブジェクトは、第2のクライアントデバイスのファイルシステム上のリンクプレースホルダ(link placeholder)として表現される。第2の例では、第2のクライアントデバイスにおいて選択されると、リンクプレースホルダは、第2のクライアントデバイスに、ウェブブラウザをコンテンツ管理システムのウェブサーバに導かせるように構成される。
At
いくつかの実施形態では、子オブジェクトが単方向同期用に設定されているため、編集は、子オブジェクトの原本に対して同期されない。例えば、子オブジェクトが、アンカーオブジェクトによって表される、外部ドライブの子オブジェクトである場合、コンテンツ管理システムから受信された子オブジェクトの編集は、外部ドライブに格納された子オブジェクトの原本には同期されない。その代わりに、例示的な方法500は、編集を用いて子オブジェクトの別のコピーを作成及び格納することによって、コンテンツ管理システム内の編集を保存するのに役立つ。
In some embodiments, edits are not synchronized to the child object's master because the child object is configured for unidirectional synchronization. For example, if the child object is a child object of an external drive, represented by an anchor object, edits to the child object received from the content management system are not synchronized to the original of the child object stored on the external drive. Instead,
図6Aは、いくつかの実施形態による、例示的なグラフィカルユーザインタフェースを示す。グラフィカルユーザインタフェースは、ウィンドウ602、ローカル同期フォルダ610、及びウェブインタフェース620を含む。ウィンドウ602は、クライアントデバイス150に接続されている外部ドライブに応答して表示される。ウィンドウ602は、選択可能なインタフェース要素604及び606を含む。ローカル同期フォルダ610は、コンテンツ管理システム110に関連付けられたクライアントアプリケーション152によって監視される、クライアントデバイス150上のディレクトリである。ローカル同期フォルダ610のコンテンツを、コンテンツ管理システム110と同期させることができる。この例では、ローカル同期フォルダ610は空である。
FIG. 6A shows an example graphical user interface, according to some embodiments. The graphical user interface includes a
ウェブインタフェース620は、コンテンツ管理システム110のウェブビューを提示する。この例では、ウェブインタフェース620は、コンテンツ管理システム110上に格納されたファイルを示すファイル選択インタフェース622を含む。
図3Aに関して説明したように、コンテンツ管理システム110のクライアントアプリケーション152は、外部ドライブを表す選択可能なインタフェース要素604として、外部ドライブを提示しうる。クライアントアプリケーション152は、選択可能なインタフェース要素604の選択をユーザから受け付けうる。クライアントアプリケーション152は更に、コンテンツ管理システム110との同期のために外部ドライブを登録するためのオプション(選択可能なインタフェース要素606)を提示しうる。
As discussed with respect to FIG. 3A, the client application 152 of the
図6Bは、いくつかの実施形態による、別の例示的なグラフィカルユーザインタフェースを示す。図3Aに関して説明したように、ユーザが選択可能なインタフェース要素604及び606の両方を選択すると、クライアント同期サービス156は、最初にクライアントデバイス150の内部ハードドライブ上にコンテンツを格納することなく、外部ディレクトリ上のコンテンツをコンテンツ管理システム110に同期させるために、サーバ同期サービス112との通信を開始しうる。同期の詳細については図3Aで説明されている。
FIG. 6B depicts another example graphical user interface, according to some embodiments. As described with respect to FIG. 3A, when the user selects both
同期が完了した後に、インタフェース要素が、図6Bに示されるグラフィカルユーザインタフェースに現れる。例えば、インタフェース要素632が、ローカル同期フォルダ610に現れ、インタフェース要素634が、ウェブインタフェース620のファイル選択インタフェース622に現れる。インタフェース要素630、632、及び634は全て、これらの異なるロケーションにおける外部ドライブを表す。この例では、インタフェース要素632は、図2に関して説明したようなアンカーオブジェクトである。ユーザは、インタフェース要素630、632、及び634のうちのいずれか1つを選択することによって、外部ドライブにアクセスしうる。このユーザインタフェース設計は、外部ドライブのコンテンツがクライアントデバイス150の内部ハードドライブに格納されていなくても、外部ドライブとのインタラクションを行う際に一貫性のあるユーザエクスペリエンスを提供する。
After synchronization is complete, interface elements appear in the graphical user interface shown in FIG. 6B. For example,
図6Cは、いくつかの実施形態による、別の例示的なグラフィカルユーザインタフェースを示す。グラフィカルユーザインタフェースは、ウィンドウ640を含む。ウィンドウ640は、インタフェース要素642を含む。この例では、ユーザは、インタフェース要素642を選択し、その後、コンテンツ管理システム110にバックアップされるべき、ローカルフォルダ644等の任意のローカルフォルダを選択しうる。ローカルフォルダの選択を受け付けるために、クライアントアプリケーション152は、ユーザがインタフェース要素642を選択した後に、全てのローカルフォルダを含む別のウィンドウを提示しうる。
FIG. 6C depicts another example graphical user interface, according to some embodiments. The graphical user interface includes
図6Dは、いくつかの実施形態による、別の例示的なグラフィカルユーザインタフェースを示す。ローカルフォルダ644等のローカルフォルダの選択が受け付けられた後に、クライアント同期サービス156は、選択されたローカルフォルダ上のコンテンツをコンテンツ管理システム110に同期させるために、サーバ同期サービス112との通信を開始しうる。同期の詳細については図3Aに関して詳細に説明されている。
FIG. 6D shows another example graphical user interface, according to some embodiments. After the selection of a local folder, such as
同期が完了した後に、ローカルフォルダ644を表すインタフェース要素646が、ローカル同期フォルダ610に現れる。また、インタフェース要素648が、ウェブインタフェース620のファイル選択インタフェース622に現れる。ユーザは、インタフェース要素644、646、及び648のいずれか1つを選択することによって、ローカルフォルダ644のコンテンツにアクセスしうる。
After synchronization is complete, an
図7は、本開示の一部を実装するための例示的なコンピュータシステム700を示す。例えば、例示的なコンピュータシステム700は、本開示を実行するためのクライアントアプリケーションを実行しうる。
FIG. 7 illustrates an
例示的なコンピュータシステム700は、バス735を介して動作するように接続された、プロセッサ705、メモリ710、グラフィカルデバイス715、ネットワークデバイス720、インタフェース725、及びストレージデバイス730を含む。プロセッサ705は、ブートストラッピング処理を介してメモリ710にロードされるマシン命令(例えば、縮小命令セット(RISC)、複合命令セット(CISC)等)を読み出し、OSによって提供されるフレームワーク内でアプリケーションを実行するためのオペレーティングシステム(OS)を実行する。例えば、プロセッサ705は、Windows、Windows Presentation Foundation(WPF)、Windows User Interface(WinUI)等のグラフィカルフレームワーク、又はXamarin若しくはQT等のクロスプラットフォームユーザインタフェースによって提供されるアプリケーションを実行するアプリケーションを実行しうる。他の例では、プロセッサ705は、ウェブブラウザ等のサンドボックス環境のために書かれたアプリケーションを実行しうる。
プロセッサ705は、命令、ユーザデータ、OSコンテンツ、及びプロセッサ705内に(例えば種々のキャッシュ内に)格納することができない他のコンテンツ、を格納するようにメモリ710を制御する。プロセッサ705は更に、グラフィカルコンテンツをディスプレイ740に出力するグラフィカルデバイス715(例えば、グラフィカルプロセッサ)を制御しうる。いくつかの例では、グラフィカルデバイス715はプロセッサ705内に一体化されうる。更に別の例では、ディスプレイ740は、コンピュータシステム700(例えば、ラップトップ、タブレット、電話機等)と一体でありうる。 Processor 705 controls memory 710 to store instructions, user data, OS content, and other content that cannot be stored within processor 705 (eg, in various caches). Processor 705 may further control a graphical device 715 (eg, a graphical processor) that outputs graphical content to display 740. In some examples, graphical device 715 may be integrated within processor 705. In yet another example, display 740 can be integral to computer system 700 (eg, laptop, tablet, phone, etc.).
グラフィカルデバイス715は、グラフィカル計算等の浮動小数点演算を実行するように最適化されてよく、プロセッサ705の代わりに他の演算を実行するように構成されてよい。例えば、浮動小数点数のために最適化された数学演算を実行する命令によって制御される。例えば、プロセッサ705は、グラフィカルデバイス715のために最適化された動作のために、グラフィカルデバイス715に命令を割り当てうる。例えば、グラフィカルデバイス715は、人工知能(AI)、自然言語処理(NLP)、ベクトル演算に関連する動作を実行しうる。その結果はプロセッサ705に戻されうる。別の例では、プロセッサ705において実行されるアプリケーションは、命令を提供することで、プロセッサ705に、動作を実行するようにグラフィカルデバイス715に要求させうる。他の例では、グラフィカルデバイス715は、処理結果を別のコンピュータシステムに戻しうる(即ち、分散コンピューティング)。 Graphical device 715 may be optimized to perform floating point operations, such as graphical calculations, and may be configured to perform other operations on behalf of processor 705. For example, it is controlled by instructions that perform mathematical operations optimized for floating point numbers. For example, processor 705 may assign instructions to graphical device 715 for operation optimized for graphical device 715. For example, graphical device 715 may perform operations related to artificial intelligence (AI), natural language processing (NLP), and vector operations. The results may be returned to processor 705. In another example, an application executing on processor 705 may provide instructions to cause processor 705 to request graphical device 715 to perform an operation. In other examples, graphical device 715 may return processing results to another computer system (ie, distributed computing).
プロセッサ705は更に、複数の無線チャネル745及び少なくとも1つの通信規格(例えば、Wi-Fi(即ち、802.11ax、802.11e等)、Bluetooth(登録商標)、第3世代パートナーシッププロジェクトによって提供される種々の規格(例えば、3G、4G、5G)、又は衛星通信ネットワーク(例えば、Starlink))を使用して、データを送信及び受信するためのネットワークデバイス720を制御しうる。ネットワークデバイス720は、サーバ755又は他のサービスプロバイダに接続するために、ネットワーク750に無線接続しうる。ネットワークデバイス720は更に、物理的(即ち、回路)接続を介してネットワーク750に接続されうる。ネットワークデバイス720は更に、ポイント・ツー・ポイント(P2P)又は短距離無線接続を使用して、ローカル電子デバイス760に直接接続しうる。
Processor 705 further includes a plurality of
プロセッサ705は更に、双方向又は単方向通信のために外部デバイス770と接続するインタフェース725を制御しうる。インタフェース725は、回路接続を形成する任意の適切なインタフェースであり、任意の適切なインタフェース(例えば、ユニバーサルシリアルバス(USB)、Thunderbolt等)によって実装されうる。外部デバイス765は、データを処理するために、又はプロセッサ705において実行される異なるアプリケーションのための機能を実行するために、インタフェース725からデータを受信することが可能である。例えば、外部デバイス765は、別の表示装置、楽器、コンピュータインタフェースデバイス(例えば、キーボード、マウス等)、オーディオデバイス(例えば、アナログデジタル変換器(ADC)、デジタルアナログ変換器(DAC))、コンテンツを格納するためのストレージデバイス、認証デバイス、外部ネットワークインタフェース(例えば、5Gホットスポット)、プリンタ等でありうる。 Processor 705 may further control an interface 725 that connects with external devices 770 for bidirectional or unidirectional communication. Interface 725 is any suitable interface that forms a circuit connection and may be implemented by any suitable interface (eg, Universal Serial Bus (USB), Thunderbolt, etc.). External device 765 can receive data from interface 725 to process the data or perform functions for different applications executing on processor 705. For example, external device 765 may include another display device, a musical instrument, a computer interface device (e.g., keyboard, mouse, etc.), an audio device (e.g., analog-to-digital converter (ADC), digital-to-analog converter (DAC)), content It can be a storage device for storage, an authentication device, an external network interface (eg, a 5G hotspot), a printer, etc.
Claims (20)
コンテンツ管理システムによってアンカーオブジェクトを同期させるための通信を、第1のクライアントデバイスから受信することであって、前記アンカーオブジェクトは、前記コンテンツ管理システムに、前記第1のクライアントデバイスが到達可能な外部ディレクトリを指すものとして前記アンカーオブジェクトを認識させる属性を有するオブジェクトであり、前記外部ディレクトリは、前記アンカーオブジェクトを含む前記第1のクライアントデバイス上のディレクトリの外部にある、ことと、
前記アンカーオブジェクトを、前記コンテンツ管理システムのウェブサーバ上の前記アンカーオブジェクトを含む前記ディレクトリ内のフォルダとして表現することであって、前記アンカーオブジェクトの子オブジェクトが、前記アンカーオブジェクトより下位のパス内にあるものとして表現される、ことと、
前記第1のクライアントデバイス上の前記アンカーオブジェクトを同期させることであって、当該アンカーオブジェクトは、前記第1のクライアントデバイスのファイルシステム上のリンクプレースホルダとして表現される、ことと、
を含む、方法。 A method,
receiving a communication from a first client device for synchronizing an anchor object by a content management system, wherein the anchor object is provided to the content management system in an external directory reachable by the first client device; an object having attributes that cause the anchor object to be recognized as pointing to an object, the external directory being external to a directory on the first client device that includes the anchor object;
representing the anchor object as a folder within the directory containing the anchor object on a web server of the content management system, wherein child objects of the anchor object are within a path below the anchor object; What is expressed as something,
synchronizing the anchor object on the first client device, the anchor object being represented as a link placeholder on a file system of the first client device;
including methods.
前記アンカーオブジェクト及び前記子オブジェクトは、前記コンテンツ管理システムの前記ウェブサーバ上でブラウジング可能であり、かつ、閲覧可能である、方法。 The method according to claim 1 ,
The anchor object and the child object are browsable and viewable on the web server of the content management system.
前記アンカーオブジェクトを第2のクライアントデバイスに同期させることを含み、当該アンカーオブジェクトは、前記第2のクライアントデバイスの第2のファイルシステム上の第2のリンクプレースホルダとして表現され、前記外部ディレクトリは、前記第2のクライアントデバイスが到達可能ではない、方法。 2. The method of claim 1 , comprising synchronizing the anchor object to a second client device, the anchor object being located at a second link place on a second file system of the second client device. the external directory is not reachable by the second client device.
前記リンクプレースホルダは、前記第2のクライアントデバイスにおいて選択されると、前記第2のクライアントデバイスに、ウェブブラウザを前記コンテンツ管理システムの前記ウェブサーバに導かせるように構成されている、方法。 4. The method according to claim 3 ,
The method, wherein the link placeholder, when selected at the second client device, is configured to cause the second client device to direct a web browser to the web server of the content management system.
前記アンカーオブジェクト及び前記子オブジェクトは、単方向の同期用に設定されている、方法。 The method according to claim 1 ,
The method, wherein the anchor object and the child object are configured for unidirectional synchronization.
前記コンテンツ管理システムの前記ウェブサーバを介して、前記アンカーオブジェクトの前記パス内にある子オブジェクトの選択を受け付けることと、
前記子オブジェクトが単方向の同期用に設定されているとの警告を提供することと、
を含む、方法。 The method according to claim 1 ,
accepting, via the web server of the content management system, a selection of child objects within the path of the anchor object;
providing a warning that the child object is configured for unidirectional synchronization;
including methods.
前記コンテンツ管理システムの前記ウェブサーバを介して、子オブジェクトに対する編集を受け付けることと、
前記子オブジェクトが単方向の同期用に設定されていると判定することと、
前記子オブジェクトが単方向の同期用に設定されているとの警告を提供することと、
ユーザアカウントが前記編集を同期させたいことを確認する入力を受け付けることと、
を含む、方法。 The method according to claim 1 ,
accepting edits to child objects via the web server of the content management system;
determining that the child object is configured for unidirectional synchronization;
providing a warning that the child object is configured for unidirectional synchronization;
accepting input confirming that the user account wishes to synchronize said edits; and
including methods.
前記編集を含む前記子オブジェクトのコピーを作成することと、
双方向の同期をサポートしているディレクトリであって、前記外部ディレクトリとは異なる当該ディレクトリ内に、前記子オブジェクトの前記コピーを同期させることと、
を含む、方法。 8. The method according to claim 7 ,
creating a copy of the child object containing the edit;
synchronizing the copy of the child object in a directory that supports bidirectional synchronization and that is different from the external directory;
including methods.
前記子オブジェクトが単方向の同期用に設定されていると判定することは、
前記子オブジェクトが前記アンカーオブジェクトの子オブジェクトであると判定することを含む、方法。 8. The method according to claim 7 ,
Determining that the child object is configured for unidirectional synchronization includes:
A method comprising determining that the child object is a child object of the anchor object.
前記子オブジェクトが単方向の同期用に設定されていると判定することは、
前記子オブジェクトが、オブジェクトが単方向の同期用に設定されていることを示す属性と関連付けられていると判定することを含む、方法。 8. The method according to claim 7 ,
Determining that the child object is configured for unidirectional synchronization includes:
A method comprising determining that the child object is associated with an attribute indicating that the object is configured for unidirectional synchronization.
アンカーオブジェクトを生成することであって、前記アンカーオブジェクトは、コンテンツ管理システムのクライアントアプリケーションに、第1のクライアントデバイスが到達可能な外部ディレクトリを指すものとして前記アンカーオブジェクトを認識させる属性を有するオブジェクトであり、前記外部ディレクトリは、前記アンカーオブジェクトを含む前記第1のクライアントデバイス上のディレクトリの外部にある、ことと、
前記アンカーオブジェクトを、前記第1のクライアントデバイス上の前記アンカーオブジェクトを含む前記ディレクトリ内のフォルダとして表現することであって、前記アンカーオブジェクトの子オブジェクトが、前記アンカーオブジェクトより下位のパス内にあるものとして表現され、当該アンカーオブジェクトは、前記第1のクライアントデバイスのファイルシステム上のリンクプレースホルダとして表現される、ことと、
前記外部ディレクトリ上の少なくとも1つのオブジェクトを、前記コンテンツ管理システムに同期させることと、
を行わせる、コンピュータ読取可能媒体。 a non-transitory computer-readable medium containing instructions that, when executed by a computing system, cause the computing system to:
generating an anchor object, the anchor object having attributes that cause a client application of a content management system to recognize the anchor object as pointing to an external directory reachable by the first client device; the external directory is external to the directory on the first client device that includes the anchor object; and
representing the anchor object as a folder within the directory containing the anchor object on the first client device, the child objects of the anchor object being in a path below the anchor object; , the anchor object is represented as a link placeholder on a file system of the first client device;
synchronizing at least one object on the external directory to the content management system;
A computer readable medium that causes the computer to perform .
前記コンピュータ読取可能媒体は、前記コンピューティングシステムによって実行されると当該コンピューティングシステムに、
前記クライアントアプリケーションによって前記アンカーオブジェクトを認識することであって、前記アンカーオブジェクトは前記属性の存在によって認識される、ことと、
前記外部ディレクトリのコンテンツを読み出すことと、
を行わせる命令を更に含む、コンピュータ読取可能媒体。 12. The computer readable medium of claim 11 ,
The computer-readable medium, when executed by the computing system, causes the computing system to:
recognizing the anchor object by the client application , the anchor object being recognized by the presence of the attribute;
reading the contents of the external directory;
A computer readable medium further comprising instructions for performing.
前記アンカーオブジェクトを格納する前記ディレクトリは、前記クライアントアプリケーションが前記コンテンツ管理システムに同期させる同期ディレクトリである、コンピュータ読取可能媒体。 13. The computer readable medium of claim 12 ,
The computer-readable medium wherein the directory storing the anchor object is a synchronization directory that the client application synchronizes to the content management system.
前記コンピュータ読取可能媒体は、前記コンピューティングシステムによって実行されると当該コンピューティングシステムに、
前記アンカーオブジェクトを含む、前記同期ディレクトリ内のオブジェクトのファイルシステム構造を表すローカルツリー構造内に、前記同期ディレクトリの表現を格納することを行わせ、前記アンカーオブジェクトは、それが前記アンカーオブジェクトであることを示すためのフラグを前記属性の一部として有する前記フォルダとして、前記ローカルツリー構造内で表現される、コンピュータ読取可能媒体。 14. The computer readable medium of claim 13 ,
The computer-readable medium, when executed by the computing system, causes the computing system to:
causing a representation of the synchronization directory to be stored in a local tree structure representing a file system structure of objects in the synchronization directory, including the anchor object, the anchor object being the anchor object; The computer-readable medium is represented in the local tree structure as the folder having a flag as part of the attributes to indicate the folder.
前記コンピュータ読取可能媒体は、前記コンピューティングシステムによって実行されると当該コンピューティングシステムに、
前記アンカーオブジェクトの前記属性を読み出すことと、
前記外部ディレクトリのデバイス汎用固有識別子(UUID)を前記ローカルツリー構造内のコンテンツ管理システムパスに変換するために、前記属性に基づいてインメモリマップを作成することと、
を行わせる命令を更に含む、コンピュータ読取可能媒体。 15. The computer readable medium of claim 14 ,
The computer-readable medium, when executed by the computing system, causes the computing system to:
reading the attribute of the anchor object;
creating an in-memory map based on the attributes to convert a universally unique device identifier (UUID) of the external directory to a content management system path within the local tree structure ;
A computer readable medium further comprising instructions for performing.
前記属性は、外部オブジェクトの識別情報及び前記外部オブジェクトのロケーションについてのソース・オブ・トゥルースとして機能する、コンピュータ読取可能媒体。 16. The computer readable medium of claim 15 ,
A computer-readable medium, wherein the attributes serve as a source of truth about an identity of an external object and a location of the external object.
命令を格納するように構成された少なくとも1つのストレージと、
少なくとも1つのプロセッサと、を備え、前記少なくとも1つのプロセッサは、前記命令を実行して前記少なくとも1つのプロセッサに、
第1のクライアントデバイスから、コンテンツ管理システムによってアンカーオブジェクトを同期させるための通信を受信することであって、前記アンカーオブジェクトは、前記コンテンツ管理システムに、前記第1のクライアントデバイスが到達可能な外部ディレクトリを指すものとして前記アンカーオブジェクトを認識させる属性を有するオブジェクトであり、前記外部ディレクトリは、前記アンカーオブジェクトを含む前記第1のクライアントデバイス上のディレクトリの外部にある、ことと、
前記アンカーオブジェクトを、前記コンテンツ管理システムのウェブサーバ上の前記アンカーオブジェクトを含む前記ディレクトリ内のフォルダとして表現することであって、前記アンカーオブジェクトの子オブジェクトが、前記アンカーオブジェクトより下位のパス内にあるものとして表現される、ことと、
前記第1のクライアントデバイス上の前記アンカーオブジェクトを同期させることであって、当該アンカーオブジェクトは、前記第1のクライアントデバイスのファイルシステム上のリンクプレースホルダとして表現される、ことと、
を行わせるように構成される、システム。 A system,
at least one storage configured to store instructions;
at least one processor, the at least one processor executing the instructions to cause the at least one processor to:
receiving a communication from a first client device for synchronizing an anchor object by a content management system, the anchor object providing the content management system with an external directory reachable by the first client device; an object having attributes that cause the anchor object to be recognized as pointing to an object, the external directory being external to a directory on the first client device that includes the anchor object;
representing the anchor object as a folder within the directory containing the anchor object on a web server of the content management system, wherein child objects of the anchor object are within a path below the anchor object; What is expressed as something,
synchronizing the anchor object on the first client device, the anchor object being represented as a link placeholder on a file system of the first client device;
A system configured to cause
前記アンカーオブジェクト及び前記子オブジェクトは、前記コンテンツ管理システムの前記ウェブサーバ上でブラウジング可能であり、かつ、閲覧可能である、システム。 18. The system according to claim 17 ,
The system wherein the anchor object and the child object are browsable and viewable on the web server of the content management system.
前記命令は、前記少なくとも1つのプロセッサに更に、
前記アンカーオブジェクトを第2のクライアントデバイスに同期させ、当該アンカーオブジェクトは、前記第2のクライアントデバイスの第2のファイルシステム上の第2のリンクプレースホルダとして表現され、前記外部ディレクトリは、前記第2のクライアントデバイスが到達可能ではない、システム。 18. The system according to claim 17 ,
The instructions further cause the at least one processor to:
synchronizing the anchor object to a second client device, the anchor object being represented as a second link placeholder on a second file system of the second client device, and the external directory The client device of the system is not reachable.
前記リンクプレースホルダは、前記第2のクライアントデバイスにおいて選択されると、前記第2のクライアントデバイスに、第2のウェブブラウザを前記コンテンツ管理システムの前記ウェブサーバに導かせるように構成されている、システム。 20. The system of claim 19 ,
the link placeholder, when selected at the second client device, is configured to cause the second client device to direct a second web browser to the web server of the content management system; system.
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063093699P | 2020-10-19 | 2020-10-19 | |
US63/093,699 | 2020-10-19 | ||
US17/132,954 | 2020-12-23 | ||
US17/133,006 | 2020-12-23 | ||
US17/133,006 US11604769B2 (en) | 2020-10-19 | 2020-12-23 | Synchronizing an external location |
US17/132,954 US11392554B2 (en) | 2020-10-19 | 2020-12-23 | Synchronizing an external location |
JP2023517817A JP7355964B2 (en) | 2020-10-19 | 2021-07-09 | External location synchronization |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023517817A Division JP7355964B2 (en) | 2020-10-19 | 2021-07-09 | External location synchronization |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2023107766A JP2023107766A (en) | 2023-08-03 |
JP7355959B2 true JP7355959B2 (en) | 2023-10-03 |
Family
ID=87475006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023042244A Active JP7355959B2 (en) | 2020-10-19 | 2023-03-16 | External location synchronization |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7355959B2 (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020019857A1 (en) | 2000-07-12 | 2002-02-14 | Microsoft Corporation | System and method for accessing directory service via an HTTP URL |
US20190208014A1 (en) | 2017-12-28 | 2019-07-04 | Dropbox, Inc. | Allocation and reassignment of unique identifiers for synchronization of content items |
-
2023
- 2023-03-16 JP JP2023042244A patent/JP7355959B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020019857A1 (en) | 2000-07-12 | 2002-02-14 | Microsoft Corporation | System and method for accessing directory service via an HTTP URL |
US20190208014A1 (en) | 2017-12-28 | 2019-07-04 | Dropbox, Inc. | Allocation and reassignment of unique identifiers for synchronization of content items |
Also Published As
Publication number | Publication date |
---|---|
JP2023107766A (en) | 2023-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11630841B2 (en) | Traversal rights | |
US10848557B2 (en) | Server-side selective synchronization | |
US12105677B2 (en) | Per-node metadata for custom node behaviors across platforms | |
JP7355964B2 (en) | External location synchronization | |
JP2022549068A (en) | Binding local device folders to content management systems for synchronization | |
JP7355959B2 (en) | External location synchronization | |
US12111845B2 (en) | Backup feature provided by bidirectional synchronized content management system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230317 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230317 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20230317 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230825 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230921 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7355959 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |