JP5798248B2 - System and method for implementing a scalable data storage service - Google Patents

System and method for implementing a scalable data storage service Download PDF

Info

Publication number
JP5798248B2
JP5798248B2 JP2014518955A JP2014518955A JP5798248B2 JP 5798248 B2 JP5798248 B2 JP 5798248B2 JP 2014518955 A JP2014518955 A JP 2014518955A JP 2014518955 A JP2014518955 A JP 2014518955A JP 5798248 B2 JP5798248 B2 JP 5798248B2
Authority
JP
Japan
Prior art keywords
items
resizable
request
attribute
value
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
Application number
JP2014518955A
Other languages
Japanese (ja)
Other versions
JP2014525082A (en
Inventor
シヴァスブラマニアン,スワミナサン
ステファニ,ステファノ
ブラゴハイン,チランジーブ
ブラックマン,ランデ,エイ
ラス,ティモシー,アンドリュー
ブラッドフォード,レイモンド,エス
マクアリスター,グラント,エイ,エム
クレスザ,ジャクブ
ハミルトン,ジェームズ
カブレラ,ルイス,フェリペ
Original Assignee
アマゾン・テクノロジーズ・インコーポレーテッド
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority to US13/170,031 priority Critical patent/US8595267B2/en
Priority to US13/170,031 priority
Application filed by アマゾン・テクノロジーズ・インコーポレーテッド filed Critical アマゾン・テクノロジーズ・インコーポレーテッド
Priority to PCT/US2012/044371 priority patent/WO2013003443A2/en
Publication of JP2014525082A publication Critical patent/JP2014525082A/en
Application granted granted Critical
Publication of JP5798248B2 publication Critical patent/JP5798248B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network-specific arrangements or communication protocols supporting networked applications
    • H04L67/02Network-specific arrangements or communication protocols supporting networked applications involving the use of web-based technology, e.g. hyper text transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network-specific arrangements or communication protocols supporting networked applications
    • H04L67/10Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network
    • H04L67/1097Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network for distributed storage of data in a network, e.g. network file system [NFS], transport mechanisms for storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network-specific arrangements or communication protocols supporting networked applications
    • H04L67/28Network-specific arrangements or communication protocols supporting networked applications for the provision of proxy services, e.g. intermediate processing or storage in the network
    • H04L67/2804Network-specific arrangements or communication protocols supporting networked applications for the provision of proxy services, e.g. intermediate processing or storage in the network for adding application control or application functional data, e.g. adding metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/964Database arrangement
    • Y10S707/966Distributed
    • Y10S707/967Peer-to-peer
    • Y10S707/968Partitioning
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/964Database arrangement
    • Y10S707/966Distributed
    • Y10S707/971Federated
    • Y10S707/972Partitioning

Description

いくつかの先導的技術機関が、「サービスとしてのソフトウェア」を販売する技術を構築することに投資している。そのようなサービスは、共有記憶装置(例えば、データベースシステム)および/またはコンピューティングリソースへのアクセスをクライアントまたは加入者に提供する。多層電子商取引システム内で、異なるリソースが、加入者および/またはマシン全体からのそれらのアプリケーションに、CPUに、メモリに、ネットワーク帯域幅に、およびI/O能力に割り付けられてもよい。   Several leading technical institutions are investing in building technology to sell “software as a service”. Such services provide clients or subscribers with access to shared storage (eg, database systems) and / or computing resources. Within a multi-layer electronic commerce system, different resources may be allocated to subscribers and / or their applications from the entire machine, CPU, memory, network bandwidth, and I / O capabilities.
ユーザの代わりに大量のデータを管理するデータベースシステムは、セキュリティ問題、防災および復旧問題、データ局所性および可用性問題等を含む、いくつかの理由のうちのいずれかで、しばしば異なる場所において、2つ以上のマシンにわたってそのデータを分散させ、および/または複製してもよい。これらのマシンは、共有リソースプールとしての方法を含む、任意の数の方法で構成されてもよい。   Database systems that manage large amounts of data on behalf of users often have two systems, often at different locations, for any of several reasons, including security issues, disaster prevention and recovery issues, data locality and availability issues, etc. The data may be distributed and / or replicated across these machines. These machines may be configured in any number of ways, including as a shared resource pool.
クライアントアプリケーションとデータベースサーバとの間の相互作用は、典型的には、読み取り・修正・書き込みワークフローを使用して概念化することができる、読み取り動作(読取専用クエリ)、(データを記憶する)書き込み動作、および更新動作を含む。   The interaction between the client application and the database server can typically be conceptualized using a read / modify / write workflow, read operations (read-only queries), write operations (store data) And update operations.
ウェブサービスベースのデータ記憶サービスを実装するように構成される、システムアーキテクチャの一実施形態を図示するブロック図である。1 is a block diagram illustrating one embodiment of a system architecture configured to implement a web service based data storage service. FIG. 一実施形態による、ウェブサービスプラットフォームの種々の構成要素を図示するブロック図である。FIG. 3 is a block diagram illustrating various components of a web service platform, according to one embodiment. 一実施形態による、ウェブサービスプラットフォームの種々の構成要素を図示するブロック図である。FIG. 3 is a block diagram illustrating various components of a web service platform, according to one embodiment. 一実施形態による、ウェブサービスプラットフォームの種々の構成要素を図示するブロック図である。FIG. 3 is a block diagram illustrating various components of a web service platform, according to one embodiment. 一実施形態による、複数のテーブルの中のアイテムとしてのデータの記憶を図示するブロック図である。FIG. 3 is a block diagram illustrating the storage of data as items in a plurality of tables, according to one embodiment. 一実施形態による、複数のテーブルの中のアイテムとしてのデータの記憶を図示するブロック図である。FIG. 3 is a block diagram illustrating the storage of data as items in a plurality of tables, according to one embodiment. 一実施形態による、アイテムが記憶されているテーブルの一次キーとして指定されている、数値属性を含有する、3つのアイテムを図示するブロック図である。FIG. 3 is a block diagram illustrating three items containing numeric attributes, designated as primary keys of a table in which the items are stored, according to one embodiment. 記憶サービスクライアントの代わりに、データ記憶サービスによって維持されるテーブルを作成するための方法の一実施形態を図示するフロー図である。FIG. 6 is a flow diagram illustrating one embodiment of a method for creating a table maintained by a data storage service on behalf of a storage service client. ウェブサービスAPIを通して受信される要求に応答して、テーブルを作成するための方法の一実施形態を図示するフロー図である。FIG. 6 is a flow diagram illustrating one embodiment of a method for creating a table in response to a request received through a web service API. テーブルメタデータを生成するための方法の一実施形態を図示するフロー図である。FIG. 4 is a flow diagram illustrating one embodiment of a method for generating table metadata. CreateTableワークフローの一実施形態を図示するフロー図である。FIG. 6 is a flow diagram illustrating one embodiment of a CreateTable workflow. そうする要求に応答して、アイテムを更新するための方法の一実施形態を図示するフロー図である。FIG. 5 is a flow diagram illustrating one embodiment of a method for updating an item in response to a request to do so. 条件付き更新および/または複数の出力オプションをサポートするAPIを使用して、アイテムを更新するための方法の一実施形態を図示するフロー図である。FIG. 4 is a flow diagram illustrating one embodiment of a method for updating an item using an API that supports conditional updates and / or multiple output options. 非リレーショナルデータ記憶部の中で維持されたテーブルを区分するための方法の一実施形態を図示するフロー図である。FIG. 6 is a flow diagram illustrating one embodiment of a method for partitioning a table maintained in a non-relational data store. クエリを行うための方法の一実施形態を図示するフロー図である。FIG. 3 is a flow diagram illustrating one embodiment of a method for performing a query. クエリを行うための方法の別の実施形態を図示するフロー図である。FIG. 6 is a flow diagram illustrating another embodiment of a method for performing a query. テーブルスキャン動作を行うための方法の一実施形態を図示するフロー図である。FIG. 6 is a flow diagram illustrating one embodiment of a method for performing a table scan operation. 一実施形態による、スキャンまたは応答制限が特定されている、クエリまたはスキャン動作を行うための方法を図示するフロー図である。FIG. 6 is a flow diagram illustrating a method for performing a query or scan operation in which scan or response limits are specified, according to one embodiment. 一実施形態による、データ記憶サービスを提供するシステムのデータモデルの一部分を図示するブロック図である。FIG. 2 is a block diagram illustrating a portion of a data model of a system that provides a data storage service, according to one embodiment. 好ましいスループットモデルを使用して、データ記憶サービスクライアントの代わりにテーブルを作成および管理するための方法の一実施形態を図示するフロー図である。FIG. 5 is a flow diagram illustrating one embodiment of a method for creating and managing a table on behalf of a data storage service client using a preferred throughput model. コミットメント型スループットレベルを維持または修正しながら、特定のテーブルを対象とした要求を果たすための方法の一実施形態を図示するフロー図である。FIG. 3 is a flow diagram illustrating one embodiment of a method for fulfilling a request directed to a particular table while maintaining or modifying a commitment throughput level. 区分が「ライブである」間に、記憶サービスクライアントの代わりに、データ記憶サービスによって維持されているテーブルの区分の複製を移動させるための方法の一実施形態を図示するフロー図である。FIG. 5 is a flow diagram illustrating one embodiment of a method for moving a replica of a partition of a table maintained by a data storage service on behalf of a storage service client while the partition is “live”. 物理的コピー機構を使用して、複製を移動させるための方法の一実施形態を図示するフロー図である。FIG. 6 is a flow diagram illustrating one embodiment of a method for moving a replica using a physical copy mechanism. そうする要求に応答して、データ記憶サービスによって維持されているテーブルの区分を分割するための方法の一実施形態を図示するフロー図である。FIG. 6 is a flow diagram illustrating one embodiment of a method for partitioning a table partition maintained by a data storage service in response to a request to do so. 異常の検出に応答して、データ記憶サービスによって維持されているテーブルの区分を移動させるための方法の一実施形態を図示するフロー図である。FIG. 3 is a flow diagram illustrating one embodiment of a method for moving a table partition maintained by a data storage service in response to detecting an anomaly. 記憶ノード上のホットスポットの検出に応答して、データ記憶サービスによって維持されているテーブルの区分を移動させる、または分割するための方法の一実施形態を図示するフロー図である。FIG. 4 is a flow diagram illustrating one embodiment of a method for moving or partitioning a table partition maintained by a data storage service in response to detecting a hot spot on a storage node. 1つ以上の記憶サービスクライアントの代わりに、複数のテーブルを維持および管理するための方法の一実施形態を図示するフロー図である。FIG. 6 is a flow diagram illustrating one embodiment of a method for maintaining and managing multiple tables on behalf of one or more storage service clients. 一実施形態による、データ記憶サービスの実装に好適であり得る、コンピューティングノードを図示するブロック図である。FIG. 2 is a block diagram illustrating a computing node that may be suitable for implementing a data storage service, according to one embodiment.
実施形態は、いくつかの実施形態および例証的な図面について、一例として本明細書で説明されるが、当業者であれば、実施形態は、説明される実施形態または図面に限定されないことを認識するであろう。図面およびそれらの詳細な説明は、実施形態を開示される特定の形態に限定することを目的としていないが、逆に、添付の請求項によって定義されるような精神および範囲内に入る全ての修正、同等物、および代替案を対象とする意図であることを理解されたい。本明細書で使用される表題は、組織的な目的のためにすぎず、説明または請求項の範囲を限定するために使用されるように意図されていない。本願の全体を通して使用されるように、「してもよい」という言葉は、義務的な意味(すなわち、「しなければならない」を意味する)よりもむしろ、許可の意味(すなわち、「する可能性がある」を意味する)で使用される。同様に、「含む」(「include」、「including」、および「includes」)という言葉は、限定されないが含むことを意味する。   Although embodiments are described herein by way of example for some embodiments and illustrative drawings, those skilled in the art will recognize that embodiments are not limited to the described embodiments or drawings. Will do. The drawings and detailed description thereof are not intended to limit the embodiments to the particular forms disclosed, but on the contrary, all modifications that fall within the spirit and scope as defined by the appended claims. It should be understood that the intention is to cover equivalents, alternatives, and the like. The headings used herein are for organizational purposes only and are not intended to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” means the meaning of permission (ie, “can do”) rather than the mandatory meaning (ie, means “must do”). Used to mean "having sex". Similarly, the terms “include”, “including”, and “includes” mean including but not limited to.
本明細書で説明されるシステムおよび方法は、データ記憶サービスを記憶サービスクライアント(例えば、ユーザ、加入者、あるいはユーザまたは加入者の代わりにデータ記憶サービスにアクセスするクライアントアプリケーション)に提供する、ウェブベースのサービスを実装するために、種々の組み合わせで、および種々の実施形態で採用されてもよい。本明細書で詳細に説明されるように、サービスは、いくつかの実施形態では、クライアントの代わりに、非リレーショナルデータ記憶部、例えば、非リレーショナルデータベースの中で維持される、テーブルのシームレスな規模変更をサポートしてもよい。サービスは、いくつかの実施形態では、複製を通して高レベルの耐久性および可用性を提供してもよい。いくつかの実施形態では、サービス自体は、最大テーブルサイズまたは最大スループット制限を課さなくてもよく、巨大な規模を有するテーブルにさえも、クライアント側区分化を必要としなくてもよい。サービスは、種々の異常(例えば、障害または故障状態、ホットスポット、あるいはテーブルサイズおよび/またはサービス要求スループットの増加)の検出に応答した、データの自動ライブ再区分化、および/または計画あるいは予期されたテーブルサイズおよび/またはスループット増加をサポートするためのデータの明示的な(例えば、積極的および/または加入者主導)ライブ再区分化をサポートしてもよい。言い換えれば、サービスは、いくつかの実施形態では、規模変更可能なテーブルの中のアイテムを記憶する、読み出す、修正する、または削除する1つ以上の要求の受信に応答して、テーブルのサイズ変更(規模変更)および/または再区分化を開始してもよい。   The systems and methods described herein provide a web-based providing a data storage service to a storage service client (eg, a client application that accesses the data storage service on behalf of a user, a subscriber, or a user or subscriber). May be employed in various combinations and in various embodiments to implement these services. As described in detail herein, a service is a seamless scale of tables that, in some embodiments, are maintained in a non-relational data store, eg, a non-relational database, on behalf of a client. Changes may be supported. Services may provide a high level of durability and availability through replication in some embodiments. In some embodiments, the service itself may not impose a maximum table size or maximum throughput limit, and may not require client-side partitioning, even for tables with huge scales. The service is automatically live repartitioning and / or planned or anticipated in response to detection of various anomalies (eg, failure or failure conditions, hot spots, or table size and / or increased service request throughput). Explicit (eg, active and / or subscriber-initiated) live repartitioning of data to support increased table size and / or increased throughput may be supported. In other words, the service, in some embodiments, resizes the table in response to receiving one or more requests to store, read, modify, or delete items in the resizable table. (Scaling) and / or repartitioning may be initiated.
本明細書で説明されるサービスは、種々の実施形態では、融通の利くスキーマ、複数の利用可能な一貫性モデル、種々のサービスレベルおよび/またはビジネスモデルオプション、複数のインデックス作成オプション、および/または複数のクエリタイプをサポートしてもよい。いくつかの実施形態では、記憶サービスクライアント(例えば、ユーザ、加入者、またはクライアントアプリケーション)は、サービスのクライアントがデータベース管理の負担から多分に解放されるように、比較的小さい(および比較的単純な)一式のAPIを使用して、ウェブサービスインターフェースを通してサービスと相互作用してもよい。サービスは、要求を果たす際に少ない待ち時間を呈してもよい。いくつかの以前のデータ記憶サービスと違って、サービスは、マルチテナントおよび自動熱管理をサポートしながら、低費用で予測可能な性能であってもよい。   The services described herein may, in various embodiments, be a flexible schema, multiple available consistency models, various service levels and / or business model options, multiple indexing options, and / or Multiple query types may be supported. In some embodiments, the storage service client (eg, user, subscriber, or client application) is relatively small (and relatively simple) so that the client of the service is likely freed from the burden of database management. ) A set of APIs may be used to interact with the service through the web service interface. The service may exhibit a low latency when fulfilling the request. Unlike some previous data storage services, the service may be low cost and predictable performance while supporting multi-tenant and automatic thermal management.
種々の実施形態では、本明細書で説明されるデータ記憶サービスは、アイテムを入れる(または記憶する)、特定された一次キーを有する1つ以上のアイテムを入手する(または読み出す)、アイテムを削除する、単一のアイテムにおける属性を更新する、インデックスを使用してアイテムについて問い合わせる、およびテーブル全体にわたってスキャンし(例えば、アイテムをリストにし)、随意に、返されるアイテムにフィルタをかける動作といった、記憶サービスクライアントの代わりにサービスによって維持されるテーブルの中のデータへの動作のうちのいくつかまたは全てのサポートを含む、アプリケーションプログラミングインターフェース(API)を提供してもよい。いくつかの実施形態では、サービス(および/またはサービスを実装する基礎的システム)は、最終的に一貫した読み取り動作をサポートすることに加えて、強力な一貫性モデルをサポートしてもよい。いくつかの実施形態では、APIを介して行われるサービス要求は、好ましい一貫性モデル、好ましいサービス要求スループットレベル、または保証が要求されるサービス要求スループットレベル等の1つ以上のユーザ選好の指示を含んでもよい。他の実施形態では、これらのユーザ選好のうちのいくつかまたは全ては、テーブルが作成されたときに特定されてもよく、あるいはクライアント特有、アカウント特有、種々のテーブルタイプに特有であり得、または要求ごとに特定されるよりもむしろ、システム全体のデフォルト値によって特定されてもよい。APIは、極度の規模変更および/または以前のデータ記憶システムおよびサービスによって提供されるものよりも予測可能な性能をサポートしてもよい。   In various embodiments, the data storage services described herein can enter (or store) items, obtain (or read) one or more items with a specified primary key, and delete items. Storing, updating attributes on a single item, querying for an item using an index, and scanning across the table (eg, listing items), optionally filtering the returned items An application programming interface (API) may be provided that includes support for some or all of the operations on the data in the tables maintained by the service on behalf of the service client. In some embodiments, the service (and / or the underlying system that implements the service) may ultimately support a strong consistency model in addition to supporting consistent read operations. In some embodiments, service requests made via the API include one or more user preference indications such as a preferred consistency model, a preferred service request throughput level, or a service request throughput level for which assurance is required. But you can. In other embodiments, some or all of these user preferences may be specified when the table is created, or may be client specific, account specific, various table types specific, or Rather than being specified on a per request basis, it may be specified by system-wide default values. The API may support extreme rescaling and / or predictable performance over that provided by previous data storage systems and services.
いくつかの実施形態では、サービス(および/または基礎的システム)は、例えば、サービスが、基礎的データ記憶システム内の単一の区分の中にアイテムのコンテンツ全体を記憶することを可能にするように、個別アイテムのサイズに上限を課してもよい。これが、ひいては、スループットを劇的に低減させることなく、アイテムのアトミックな更新を行うことを促進してもよく、安定した作業セットの中でアイテムコンテンツを維持することをより容易にしてもよい。言い換えれば、個別アイテムのサイズを制限することにより、いくつかの実施形態では、本システムにおいて強力な一貫性および高い性能の両方を促進してもよい。   In some embodiments, the service (and / or underlying system), for example, allows the service to store the entire content of the item in a single partition within the underlying data storage system. In addition, an upper limit may be imposed on the size of individual items. This in turn may facilitate performing atomic updates of items without dramatically reducing throughput, and may make it easier to maintain item content in a stable working set. In other words, by limiting the size of individual items, some embodiments may facilitate both strong consistency and high performance in the system.
本明細書で説明されるもの等のウェブサービスベースのデータ記憶サービスを実装するように構成される、システムアーキテクチャの一実施形態が、図1で図示されている。所与の構成要素の1つ以上のインスタンスが存在し得る場合、以下でその構成要素の言及は、単数形または複数形のいずれかで行われてもよいことが留意される。しかしながら、いずれか一方の形態の使用は、他方を除外することを目的としていない。種々の実施形態では、図1に図示される構成要素は、コンピュータハードウェア内で直接的に、コンピュータハードウェア(例えば、マイクロプロセッサまたはコンピュータシステム)によって直接的または間接的に実行可能な命令として、あるいはこれらの技法の組み合わせを使用して、実装されてもよい。例えば、図1の構成要素は、図22で図示され、以下で論議されるコンピュータノードの実施形態等のいくつかのコンピューティングノード(または単純にノード)を含む、分散システムによって実装されてもよい。種々の実施形態では、所与の記憶サービスシステム構成要素の機能性が、特定のコンピューティングノードによって実装されてもよく、またはいくつかのコンピューティングノードにわたって分配されてもよい。いくつかの実施形態では、所与のコンピューティングノードが、1つよりも多くの記憶サービスシステム構成要素の機能性を実装してもよい。   One embodiment of a system architecture that is configured to implement a web service-based data storage service, such as that described herein, is illustrated in FIG. It is noted that where one or more instances of a given component may exist, reference to that component may be made in either the singular or plural form below. However, the use of either form is not intended to exclude the other. In various embodiments, the components illustrated in FIG. 1 may be implemented as instructions that can be executed directly or indirectly by computer hardware (eg, a microprocessor or computer system) within computer hardware. Alternatively, it may be implemented using a combination of these techniques. For example, the components of FIG. 1 may be implemented by a distributed system that includes several computing nodes (or simply nodes), such as the computer node embodiments illustrated in FIG. 22 and discussed below. . In various embodiments, the functionality of a given storage service system component may be implemented by a particular computing node or distributed across several computing nodes. In some embodiments, a given computing node may implement the functionality of more than one storage service system component.
一般的に言えば、記憶サービスクライアント110a〜110nは、ネットワーク120を介してウェブサービス要求をウェブサービスプラットフォーム130に提出するように構成可能である、任意のタイプのクライアントを包含してもよい。例えば、所与の記憶サービスクライアント110は、好適なバージョンのウェブブラウザ、あるいは、ウェブブラウザによって提供される実行環境への拡張として、または実行環境内で実行し、ウェブサービスプラットフォーム130によって提供されるデータ記憶サービスへのアクセスを記憶サービスクライアント(例えば、クライアントアプリケーション、ユーザ、および/または加入者)に提供するように構成される、プラグインモジュールまたは他のタイプのコードモジュールを含んでもよい。代替として、記憶サービスクライアント110は、データベースアプリケーション、メディアアプリケーション、オフィスアプリケーション、または永続記憶リソースを利用し得る任意の他のアプリケーション等のアプリケーションを包含してもよい。いくつかの実施形態では、そのようなアプリケーションは、あらゆるタイプのウェブベースのデータの完全ブラウザサポートを必ずしも実装することなく、ウェブサービス要求を生成および処理するための(例えば、好適なバージョンのハイパーテキスト転送プロトコル(HTTP)に対する)十分なプロトコルサポートを含んでもよい。つまり、記憶サービスクライアント110は、ウェブサービスプラットフォーム130と直接相互作用するように構成されるアプリケーションであってもよい。種々の実施形態では、記憶サービスクライアント110は、Representational State Transfer(REST)型のウェブサービスアーキテクチャ、ドキュメントまたはメッセージベースのウェブサービスアーキテクチャ、または別の好適なウェブサービスアーキテクチャに従って、ウェブサービス要求を生成するように構成されてもよい。   Generally speaking, the storage service clients 110a-110n may include any type of client that can be configured to submit web service requests to the web service platform 130 via the network 120. For example, a given storage service client 110 may run as a suitable version of a web browser, or as an extension to or within the execution environment provided by the web browser, and the data provided by the web service platform 130. It may include a plug-in module or other type of code module configured to provide storage service clients (eg, client applications, users, and / or subscribers) with access to the storage service. Alternatively, storage service client 110 may include applications such as database applications, media applications, office applications, or any other application that may utilize persistent storage resources. In some embodiments, such an application (eg, a suitable version of hypertext) for generating and processing web service requests without necessarily implementing full browser support for any type of web-based data. It may include sufficient protocol support (for transport protocol (HTTP)). That is, the storage service client 110 may be an application configured to directly interact with the web service platform 130. In various embodiments, the storage service client 110 generates a web service request according to a Representational State Transfer (REST) type web service architecture, a document or message-based web service architecture, or another suitable web service architecture. May be configured.
いくつかの実施形態では、記憶サービスクライアント110は、これらのアプリケーションにトランスペアレントである方式で、ウェブサービスベースの記憶装置へのアクセスを他のアプリケーションに提供するように構成されてもよい。例えば、記憶サービスクライアント110は、オペレーティングシステムまたはファイルシステムと統合して、本明細書で説明される記憶モデルの好適な変形例に従って記憶装置を提供するように構成されてもよい。しかしながら、オペレーティングシステムまたはファイルシステムは、ファイル、ディレクトリ、および/またはフォルダの従来のファイルシステム階層等の異なる記憶インターフェースをアプリケーションに提示してもよい。そのような実施形態では、アプリケーションは、本明細書で説明される記憶システムサービスモデルを利用するように修正される必要がなくてもよい。代わりに、ウェブサービスプラットフォーム130への接続の詳細は、オペレーティングシステム環境内で実行するアプリケーションの代わりに、記憶サービスクライアント110およびオペレーティングシステムまたはファイルシステムによって協調させられてもよい。   In some embodiments, the storage service client 110 may be configured to provide other applications with access to web service-based storage in a manner that is transparent to these applications. For example, the storage service client 110 may be configured to integrate with an operating system or file system to provide storage according to a preferred variation of the storage model described herein. However, the operating system or file system may present different storage interfaces to the application, such as a conventional file system hierarchy of files, directories, and / or folders. In such embodiments, the application may not need to be modified to utilize the storage system service model described herein. Alternatively, the connection details to the web service platform 130 may be coordinated by the storage service client 110 and the operating system or file system instead of an application executing within the operating system environment.
記憶サービスクライアント110は、ネットワーク120を介して、ウェブサービス要求をウェブサービスプラットフォーム130に伝え、そこから応答を受信してもよい。種々の実施形態では、ネットワーク120は、クライアント110とプラットフォーム130との間のウェブベースの通信を確立するために必要なネットワーキングハードウェアおよびプロトコルの任意の好適な組み合わせを含有してもよい。例えば、ネットワーク120は、概して、集合的にインターネットを実装する、種々の電気通信ネットワークおよびサービスプロバイダを包含してもよい。ネットワーク120は、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)等のプライベートネットワーク、ならびに公衆またはプライベート無線ネットワークを含んでもよい。例えば、所与のクライアント110およびウェブサービスプラットフォーム130の両方が、それぞれ、独自の内部ネットワークを有する企業内で整備されてもよい。そのような実施形態では、ネットワーク120は、所与のクライアント110とインターネットとの間、ならびにインターネットとウェブサービスプラットフォーム130との間のネットワーキングリンクを確立するために必要なハードウェア(例えば、モデム、ルータ、スイッチ、ロードバランサ、プロキシサーバ等)およびソフトウェア(例えば、プロトコルスタック、会計ソフトウェア、ファイアウォール/セキュリティソフトウェア等)を含んでもよい。いくつかの実施形態では、記憶サービスクライアント110は、公衆インターネットよりもむしろプライベートネットワークを使用して、ウェブサービスプラットフォーム130と通信してもよいことに留意されたい。例えば、クライアント110は、本明細書で説明されるデータ記憶サービス(および/または基礎的システム)と同一の企業内で整備されてもよい。そのような場合、クライアント110は、完全にプライベートネットワーク120(例えば、インターネットベースの通信プロトコルを使用し得るが、公的にアクセス可能ではないLANまたはWAN)を通して、プラットフォーム130と通信してもよい   The storage service client 110 may communicate a web service request to the web service platform 130 via the network 120 and receive a response therefrom. In various embodiments, the network 120 may contain any suitable combination of networking hardware and protocols necessary to establish web-based communication between the client 110 and the platform 130. For example, the network 120 may generally include various telecommunications networks and service providers that collectively implement the Internet. The network 120 may include private networks such as a local area network (LAN) or a wide area network (WAN), as well as public or private wireless networks. For example, both a given client 110 and web service platform 130 may each be maintained within an enterprise that has its own internal network. In such an embodiment, the network 120 includes the hardware (eg, modem, router) necessary to establish a networking link between a given client 110 and the Internet, as well as between the Internet and the web services platform 130. , Switches, load balancers, proxy servers, etc.) and software (eg, protocol stacks, accounting software, firewall / security software, etc.). Note that in some embodiments, the storage service client 110 may communicate with the web service platform 130 using a private network rather than the public Internet. For example, the client 110 may be serviced within the same enterprise as the data storage service (and / or underlying system) described herein. In such a case, the client 110 may communicate with the platform 130 through a fully private network 120 (eg, a LAN or WAN that may use Internet-based communication protocols but is not publicly accessible).
一般的に言えば、ウェブサービスプラットフォーム130は、クライアント/ユーザの代わりにデータ記憶サービスによって維持されたテーブル、および/またはこれらのテーブルの中に記憶されたアイテムおよび属性にアクセスする要求等のウェブサービス要求を受信して処理するように構成される、1つ以上のサービス終点を実装するように構成されてもよい。例えば、ウェブサービスプラットフォーム130は、種々のサービス終点を実装するように、およびこれらの終点を対象としたHTTPベースのウェブサービス要求を適正に受信して処理するように構成される、ハードウェアおよび/またはソフトウェアを含んでもよい。一実施形態では、ウェブサービスプラットフォーム130は、クライアント110からウェブサービス要求を受信するように、および処理するためのデータ記憶システムを集合的に実装する種々の構成要素にそれらを転送するように構成される、サーバシステムとして実装されてもよい。他の実施形態では、ウェブサービスプラットフォーム130は、大規模ウェブサービス要求処理負荷を動的に管理するように構成される、負荷バランシングおよび他の要求管理特徴を実装する、(例えば、クラスタトポロジーにおいて)いくつかの明確に異なるシステムとして構成されてもよい。   Generally speaking, web service platform 130 provides web services such as tables maintained by data storage services on behalf of clients / users and / or requests to access items and attributes stored in these tables. It may be configured to implement one or more service endpoints configured to receive and process the request. For example, the web service platform 130 may be configured to implement various service endpoints and hardware and / or configured to properly receive and process HTTP-based web service requests targeted to these endpoints. Or it may include software. In one embodiment, web service platform 130 is configured to receive web service requests from client 110 and forward them to various components that collectively implement a data storage system for processing. It may be implemented as a server system. In other embodiments, the web service platform 130 implements load balancing and other request management features configured to dynamically manage large scale web service request processing loads (eg, in a cluster topology). It may be configured as several distinct systems.
図1に図示されるように、ウェブサービスプラットフォーム130は、フロントエンドモジュール140(とりわけ、サービス要求を受信する、認証する、解析する、抑制する、および/または発送するように構成され得る)と、1つ以上の管理構成要素または自動管理インスタンス150(以下でさらに詳細に説明されるように、種々の可視性および/または制御機能を提供するように構成され得る)と、複数の記憶ノードインスタンス(160a〜160nとして示される)とを含んでもよく、そのそれぞれが、クライアント/ユーザの代わりに、またはデータ記憶サービス(およびその基礎的システム)自体の代わりに、1つ以上のテーブルを維持および管理してもよい。これらのタイプの構成要素のそれぞれによって提供される機能性のうちのいくらかが、種々の実施形態に従って、以下でさらに詳細に説明される。   As illustrated in FIG. 1, the web service platform 130 includes a front-end module 140 (which may be configured to receive, authenticate, parse, suppress, and / or route, among other things, service requests); One or more management components or automatic management instances 150 (which may be configured to provide various visibility and / or control functions, as described in more detail below), and a plurality of storage node instances ( Each of which maintains and manages one or more tables on behalf of the client / user or on behalf of the data storage service (and its underlying system) itself. May be. Some of the functionality provided by each of these types of components is described in further detail below in accordance with various embodiments.
種々の実施形態では、ウェブサービスプラットフォーム130は、異なるタイプのウェブサービス要求をサポートするように構成されてもよい。例えば、いくつかの実施形態では、プラットフォーム130は、クライアント/ユーザの代わりにデータ記憶サービスシステムによって維持および管理されるテーブル(および/またはこれらのテーブルの中に記憶されたデータ)への種々の動作をサポートする、特定のウェブサービスアプリケーションプログラミングインターフェース(API)を実装するように構成されてもよい。そのようなAPIによってサポートされる動作の実施例が、以下でさらに詳細に説明される。   In various embodiments, the web service platform 130 may be configured to support different types of web service requests. For example, in some embodiments, the platform 130 performs various operations on tables (and / or data stored in these tables) maintained and managed by the data storage service system on behalf of the client / user. May be configured to implement a specific web service application programming interface (API) that supports. Examples of operations supported by such APIs are described in further detail below.
クライアントのウェブサービス要求に対するアドレス可能な終点として機能することに加えて、いくつかの実施形態では、ウェブサービスプラットフォーム130は、種々のクライアント管理特徴を実装してもよい。例えば、プラットフォーム130は、要求クライアント110の識別、クライアント要求の数および/または頻度、クライアント110の代わりに記憶された、または読み出されたテーブルおよび/またはアイテムのサイズ、クライアント110によって使用される全体的な記憶帯域幅、クライアント110によって要求される記憶装置の部類、および/または任意の他の測定可能なクライアント使用パラメータを追跡すること等によって、記憶リソースを含む、ウェブサービスのクライアント使用の計測および会計を協調させてもよい。プラットフォーム130はまた、財務会計および請求システムを実装してもよく、またはクライアント使用活動の報告および請求のための外部システムによって問い合わせられ、処理され得る、使用データのデータベースを維持してもよい。いくつかの実施形態では、プラットフォーム130は、ロックマネージャおよび/またはブートストラップ構成(図示せず)を含んでもよい。   In addition to functioning as an addressable endpoint for client web service requests, in some embodiments, web service platform 130 may implement various client management features. For example, the platform 130 may identify the requesting client 110, the number and / or frequency of client requests, the size of tables and / or items stored or retrieved on behalf of the client 110, the entire used by the client 110. Measurement of web service client usage, including storage resources, such as by tracking general storage bandwidth, the type of storage required by client 110, and / or any other measurable client usage parameter Accounting may be coordinated. Platform 130 may also implement a financial accounting and billing system or may maintain a database of usage data that can be queried and processed by an external system for reporting and billing client usage activity. In some embodiments, platform 130 may include a lock manager and / or a bootstrap configuration (not shown).
種々の実施形態では、データ記憶サービスは、本明細書で説明される機能性を果たすように構成される、1つ以上のコンピューティングノード上で実装されてもよい。いくつかの実施形態では、サービスは、それぞれが、本明細書で説明される機能のうちの1つ以上を果たし得る、複数のコンピューティングノードで構成される(図1のウェブサービスプラットフォーム130等の)ウェブサービスプラットフォームによって実装されてもよい。コンピューティングノードの種々の集合は、自動管理クラスタ、データ記憶サービス専用のリソース群、および外部リソースの集合(いくつかの実施形態では、他のウェブサービスまたはアプリケーションと共有され得る)の機能性を提供するように構成されてもよい。   In various embodiments, a data storage service may be implemented on one or more computing nodes that are configured to perform the functionality described herein. In some embodiments, a service is comprised of multiple computing nodes, each of which can perform one or more of the functions described herein (such as web service platform 130 of FIG. 1). ) May be implemented by a web service platform. Various collections of computing nodes provide functionality for automated management clusters, dedicated resources for data storage services, and collections of external resources (which in some embodiments may be shared with other web services or applications) It may be configured to.
いくつかの実施形態では、本システムが本明細書で説明される機能性を提供するように相互作用する、外部リソースは、単純ワークフロー構成要素170として図1で図示される、単純ワークフロー構成要素を含んでもよい。単純ワークフロー構成要素170は、それを通して他の構成要素が単純ワークフローシステムと相互作用する、フレームワークを提供してもよい。いくつかの実施形態では、ウェブサービスプラットフォーム130は、そのフレームワーク上に構築されたアクセスAPIを含んでもよい(図示せず)。このインターフェースは、本システムが、データ記憶サービスによって体験されることが予期される使用パターンに好適なAPIを実装することを可能にしてもよい。いくつかの実施形態では、単純ワークフロー構成要素170を使用する本システムの構成要素またはモジュールは、単純ワークフロー構成要素170によって提供されるインターフェースに直接接続するよりもむしろ、これらのインターフェースを含んでもよい。いくつかの実施形態では、ウェブサービスプラットフォーム130は、単純ワークフロー構成要素170に加えて、外部記憶サービス180および/または他の外部(場合によっては共有)リソース等の1つ以上の外部リソースに依存してもよい。いくつかの実施形態では、単純ワークフロー構成要素170は、特定の区分複製グループを超えて拡張するもの等の分散動作を行うために使用されてもよい。   In some embodiments, an external resource that interacts with the system to provide the functionality described herein is a simple workflow component, illustrated in FIG. May be included. Simple workflow component 170 may provide a framework through which other components interact with the simple workflow system. In some embodiments, the web services platform 130 may include an access API built on that framework (not shown). This interface may allow the system to implement an API suitable for the usage pattern expected to be experienced by the data storage service. In some embodiments, components or modules of the system that use simple workflow components 170 may include these interfaces rather than directly connect to the interfaces provided by simple workflow components 170. In some embodiments, the web service platform 130 relies on one or more external resources, such as an external storage service 180 and / or other external (possibly shared) resources, in addition to the simple workflow component 170. May be. In some embodiments, the simple workflow component 170 may be used to perform distributed operations such as those that extend beyond a particular partitioned replication group.
図2A〜2Cは、一実施形態による、ウェブサービスプラットフォーム130の構成要素のタイプのそれぞれに含まれ得る、種々の要素またはモジュールを図示する。図2Aで図示されるように、フロントエンドモジュール140は、サービス要求の解析および/または抑制(210として示される)、サービス要求の認証および/または計測(215として示される)、サービス要求の発送(225として示される)、および/または区分マップキャッシュの維持(230として示される)を行うように構成される、1つ以上のモジュールを含んでもよい。これらの構成要素特有のモジュールに加えて、フロントエンドモジュール140は、メッセージバス(235として示される)および/または動的構成モジュール(240として示される)等の、ウェブサービスプラットフォーム130を集合的に実装する、複数のタイプのコンピューティングノードに共通している構成要素を含んでもよい。他の実施形態では、より多くの、より少ない、または異なる要素が、フロントエンドモジュール140に含まれてもよく、フロントエンドモジュール140に含まれるものとして図示される要素のうちのいずれかが、ウェブサービスプラットフォーム130の別の構成要素に、またはウェブサービスプラットフォーム130と相互作用して、本明細書で説明されるデータ記憶サービスを提供するように構成される構成要素に含まれてもよい。   2A-2C illustrate various elements or modules that may be included in each of the component types of the web services platform 130, according to one embodiment. As illustrated in FIG. 2A, the front end module 140 analyzes and / or suppresses service requests (shown as 210), authenticates and / or measures service requests (shown as 215), dispatches service requests (shown as 215). And / or one or more modules configured to perform partition map cache maintenance (shown as 230). In addition to these component-specific modules, the front-end module 140 collectively implements the web services platform 130, such as a message bus (shown as 235) and / or a dynamic configuration module (shown as 240). May include components that are common to multiple types of computing nodes. In other embodiments, more, fewer, or different elements may be included in the front end module 140, and any of the elements illustrated as included in the front end module 140 may be It may be included in another component of service platform 130 or in a component configured to interact with web service platform 130 to provide the data storage services described herein.
図2Bで図示されるように、自動管理インスタンス150は、可視性および制御をシステム管理者に提供するように(245として示される)、あるいは熱バランシング(250として示される)、および/または異常制御(255として示される)、リソース割り付け(260として示される)を行うように構成される、1つ以上のモジュールを含んでもよい。自動管理インスタンス150はまた、それを通してシステム管理者がデータ記憶サービス(および/または基礎的システム)と相互作用し得る、管理コンソール265を含んでもよい。いくつかの実施形態では、管理コンソール265は、データ記憶サービスのための(例えば、システム管理者による構成または再構成のための)可視性および制御の主要点であってもよい。例えば、管理コンソール265は、表示および制御機能性をシステム管理者および/または他の特権ユーザに提供し、それを通して、システム状態指標、メタデータ、および/または動作パラメータが観察および/または更新され得る、比較的シンクライアントとして実装されてもよい。これらの構成要素特有のモジュールに加えて、自動管理インスタンス150はまた、メッセージバス(235として示される)および/または動的構成モジュール(240として示される)等の、ウェブサービスプラットフォーム130を集合的に実装する、異なるタイプのコンピューティングノードに共通している構成要素を含んでもよい。他の実施形態では、より多くの、より少ない、または異なる要素が、自動管理インスタンス150に含まれてもよく、自動管理インスタンス150に含まれるものとして図示される要素のうちのいずれかが、ウェブサービスプラットフォーム130の別の構成要素に、またはウェブサービスプラットフォーム130と相互作用して、本明細書で説明されるデータ記憶サービスを提供するように構成される構成要素に含まれてもよい。   As illustrated in FIG. 2B, the auto-management instance 150 may provide visibility and control to the system administrator (shown as 245), or heat balancing (shown as 250), and / or abnormal control. It may include one or more modules configured to perform resource allocation (shown as 260) (shown as 255). The automated management instance 150 may also include a management console 265 through which a system administrator can interact with the data storage service (and / or the underlying system). In some embodiments, the management console 265 may be the primary point of visibility and control for a data storage service (eg, for configuration or reconfiguration by a system administrator). For example, the management console 265 can provide display and control functionality to system administrators and / or other privileged users through which system status indicators, metadata, and / or operational parameters can be observed and / or updated. May be implemented as a relatively thin client. In addition to these component-specific modules, the auto-management instance 150 also collects the web service platform 130, such as a message bus (shown as 235) and / or a dynamic configuration module (shown as 240) collectively. It may include components that are common to different types of computing nodes to implement. In other embodiments, more, fewer, or different elements may be included in the automated management instance 150, and any of the elements illustrated as included in the automated management instance 150 may be It may be included in another component of service platform 130 or in a component configured to interact with web service platform 130 to provide the data storage services described herein.
図2Cで図示されるように、記憶ノードインスタンス160は、区分管理を提供するように(270として示される)、複製およびフェイルオーバープロセスを実装するように(275として示される)、および/またはアプリケーションプログラミングインターフェース(API)を基礎的記憶装置に提供するように(280として示される)構成される、1つ以上のモジュールを含んでもよい。この実施例で図示されるように、各記憶ノードインスタンス160は、1人以上のクライアント/ユーザの代わりに、(いくつかの実施形態では非リレーショナルデータベースであり得る)記憶装置280の中で1つ以上のテーブル(および関連テーブルデータ)を維持するように(すなわち、記憶して管理するように)構成され得る、記憶エンジン285を含んでもよい。これらの構成要素特有のモジュールに加えて、記憶ノードインスタンス160はまた、メッセージバス(235として示される)および/または動的構成モジュール(240として示される)等の、ウェブサービスプラットフォーム130を集合的に実装する、異なるタイプのコンピューティングノードに共通している構成要素を含んでもよい。他の実施形態では、より多くの、より少ない、または異なる要素が、記憶ノードインスタンス160に含まれてもよく、記憶ノードインスタンス160に含まれるものとして図示される要素のうちのいずれかが、ウェブサービスプラットフォーム130の別の構成要素に、またはウェブサービスプラットフォーム130と相互作用して、本明細書で説明されるデータ記憶サービスを提供するように構成される構成要素に含まれてもよい。   As illustrated in FIG. 2C, the storage node instance 160 provides partition management (shown as 270), implements a replication and failover process (shown as 275), and / or an application. It may include one or more modules (shown as 280) configured to provide a programming interface (API) to the underlying storage. As illustrated in this example, each storage node instance 160 is one in storage 280 (which may be a non-relational database in some embodiments) on behalf of one or more clients / users. A storage engine 285 may be included that may be configured to maintain (ie, store and manage) the above tables (and related table data). In addition to these component-specific modules, the storage node instance 160 also collects the web service platform 130, such as a message bus (shown as 235) and / or a dynamic configuration module (shown as 240) collectively. It may include components that are common to different types of computing nodes to implement. In other embodiments, more, fewer, or different elements may be included in storage node instance 160, and any of the elements illustrated as included in storage node instance 160 may be It may be included in another component of service platform 130 or in a component configured to interact with web service platform 130 to provide the data storage services described herein.
本明細書で説明されるデータ記憶サービスの基礎にあるシステムは、記憶サービスクライアント(例えば、クライアントアプリケーション、ユーザ、および/または加入者)の代わりに、1つ以上の属性を有するアイテムを含有するテーブルの中にデータを記憶してもよい。いくつかの実施形態では、データ記憶サービスは、クライアント/ユーザの代わりに維持される各テーブルが1つ以上のアイテムを含有し、各アイテムが属性の集合を含む、データモデルをクライアント/ユーザに提示してもよい。アイテムの属性は、任意の順序で、名前値ペアの集合であってもよい。いくつかの実施形態では、アイテムにおける各属性は、名前、タイプ、および値を有してもよい。いくつかの属性は、属性名が単一の値にマップされるように、単一値であってもよい一方で、他の属性は、属性名が2つ以上の値にマップされるように、多値であってもよい。いくつかの実施形態では、属性の名前は、常に文字列であってもよいが、その値は、文字列、数字、文字列セット、または数字セットであってもよい。以下は全て、属性の実施例である:“ImageID”=1、“Title”=“flower”、“Tags”={“flower”,“jasmine”,“white”}、“Ratings”={3,4,2}。アイテムは、各アイテムに(1つ以上の属性値を含み得る)一次キー値を割り当てることによって、管理されてもよく、この一次キー値はまた、アイテムを一意的に識別するために使用されてもよい。いくつかの実施形態では、多数の属性が、テーブルの中のアイテムにわたって定義されてもよいが、各アイテムは、わずかな一式のこれらの属性を含有してもよく(1つのアイテムに対して特定される特定の属性が、同一のテーブルの中の別のアイテムの属性とは無関係である)、属性の全ては、一次キー属性(複数可)を除いて随意的であり得る。言い換えれば、従来のデータベースと違って、データ記憶サービス(および基礎的記憶システム)によって維持されるテーブルは、一次キーへのそれらの依存性以外の既定のスキーマを持たなくてもよい。いくつかの実施形態では、属性がアイテムに含まれる場合、その値が空値または空白になり得ず(例えば、属性名および値が空白文字列になり得ず)、単一のアイテム内で、その属性の名前が一意であり得ることに留意されたい。   The system underlying the data storage service described herein is a table containing items having one or more attributes on behalf of a storage service client (eg, client application, user, and / or subscriber). Data may be stored in the. In some embodiments, the data storage service presents a data model to the client / user where each table maintained on behalf of the client / user contains one or more items, each item including a collection of attributes. May be. An item attribute may be a set of name-value pairs in any order. In some embodiments, each attribute in the item may have a name, type, and value. Some attributes may be single-valued, such that the attribute name maps to a single value, while other attributes cause the attribute name to map to more than one value , May be multi-valued. In some embodiments, the name of the attribute may always be a string, but its value may be a string, number, string set, or number set. The following are all examples of attributes: “ImageID” = 1, “Title” = “flower”, “Tags” = {“flower”, “jasmine”, “white”}, “Ratings” = {3 4,2}. Items may be managed by assigning each item a primary key value (which may include one or more attribute values), which is also used to uniquely identify the item. Also good. In some embodiments, multiple attributes may be defined across items in a table, but each item may contain a small set of these attributes (specific to one item). All of the attributes can be optional except for the primary key attribute (s), where the particular attribute being done is independent of the attributes of another item in the same table. In other words, unlike traditional databases, tables maintained by the data storage service (and underlying storage system) may not have a default schema other than their dependency on primary keys. In some embodiments, if an attribute is included in an item, its value cannot be empty or blank (eg, attribute name and value cannot be a blank string), and within a single item, Note that the name of the attribute can be unique.
種々のタイプが、選別されたインデックスにおけるデータの順序付けをサポートするためにデータ記憶システムで採用されてもよい。いくつかの実施形態では、データ記憶サービスは、少数のタイプ(例えば、文字列および小数)のみをサポートしてもよく、全ての属性値は、スカラーまたはセット(複数値)タイプのいずれかを有さなければならない。例えば、いくつかの実施形態では、サービス(および/またはサービスを実装する基礎的システム)は、文字列および数字(例えば、小数)といった2つのスカラーデータタイプのみをサポートしてもよい。そのような実施形態では、日付が、「日付」データタイプを使用するよりもむしろ、整数として(例えば、Unix(登録商標)エポックタイムスタンプとして)符号化されてもよい。他の実施形態では、より多くの、少ない、または異なるデータタイプがサポートされてもよい。上述のように、いくつかの実施形態では、属性名は常に、データタイプ「文字列」であってもよい。いくつかの実施形態では、サービス(および/または基礎的システム)は、以下の実施例の場合のように、サポートされたスカラータイプから導出される多値タイプをサポートしてもよい。
ScalarType:={N|S}
MultiValuedType:={NS|SS}
Various types may be employed in a data storage system to support ordering of data in a sorted index. In some embodiments, the data storage service may support only a few types (eg, strings and decimals) and all attribute values have either scalar or set (multi-value) types. I have to do it. For example, in some embodiments, a service (and / or the underlying system that implements the service) may support only two scalar data types, strings and numbers (eg, decimals). In such an embodiment, the date may be encoded as an integer (eg, as a Unix® epoch timestamp) rather than using a “date” data type. In other embodiments, more, fewer, or different data types may be supported. As described above, in some embodiments, the attribute name may always be of the data type “string”. In some embodiments, the service (and / or underlying system) may support multi-value types derived from supported scalar types, as in the following example.
ScalarType: = {N | S}
MultiValuedType: = {NS | SS}
この実施例では、Nは、数字を表し、Sは、文字列を表し、NSは、一式の数字を表し、SSは、一式の文字列を表す。種々の実施形態では、タイプ「文字列」の属性は、キーの一部またはインデックスの一部であってもよく、文字列の最大サイズは、インデックスキーのサイズ(例えば、範囲キーについて累積された1024バイト、または各ハッシュキーについては2048バイト)またはアイテムサイズ(例えば、64K)によって制限されてもよい。種々の実施形態では、タイプ「数字」の属性は、厳密値小数および整数を記憶するために使用されてもよく、可変幅符号化を有してもよい。いくつかの実施形態では、このタイプの属性によって占有することができる空間の量は、所定の量に限定されてもよい。また、種々の実施形態では、数字は、精度P(記憶することができる有効数字の最大数を示す)、および/または規模S(小数点から最下位桁までの桁数を示す)を有することができることにも留意されたい。数字の精度および規模は、場合によっては、サービスによって自動的に推定されてもよく、適切な記憶サイズが、該数字に使用されてもよい。負の数は、数字の頭にマイナス記号を使用して特定されてもよいが、いくつかの実施形態では、数字の前に特定されるプラス記号は、記憶されなくてもよい。先頭および/または末尾のゼロは、異なる実施形態では、記憶されてもよく、または記憶されなくてもよい。以下は、本明細書で説明されるサービス(および基礎的システム)によって採用され得る、数の書式の実施例である。
Number_format=[+|−][{integer}][{.Integer}]
In this embodiment, N represents a number, S represents a character string, NS represents a set of numbers, and SS represents a set of character strings. In various embodiments, an attribute of type “string” may be part of the key or part of the index, and the maximum size of the string is accumulated for the size of the index key (eg, range key) 1024 bytes, or 2048 bytes for each hash key) or item size (eg, 64K). In various embodiments, an attribute of type “number” may be used to store exact decimals and integers, and may have variable width encoding. In some embodiments, the amount of space that can be occupied by this type of attribute may be limited to a predetermined amount. Also, in various embodiments, the number may have a precision P (indicating the maximum number of significant digits that can be stored) and / or a scale S (indicating the number of digits from the decimal point to the least significant digit). Also note that you can. The accuracy and scale of a number may be estimated automatically by the service in some cases, and an appropriate storage size may be used for the number. Negative numbers may be specified using a minus sign at the beginning of the number, but in some embodiments, a plus sign specified before the number may not be stored. Leading and / or trailing zeros may or may not be stored in different embodiments. The following are examples of number formats that may be employed by the services (and underlying systems) described herein.
Number_format = [+ | −] [{integer}] [{. Integer}]
上述のように、アイテムは、1つ以上の属性を含んでもよい。各属性は、属性名(例えば、UTF8文字列)および属性値(タイプが値のタイプを表す、タイプおよび値オブジェクトの組み合わせとして表現され得る)といった、2つの部分を有してもよい。いくつかの実施形態では、単一値属性が、名前およびスカラー値を有してもよく、属性のタイプは、以下の実施例の場合のように、属性値で符号化されてもよい。
{“my−string−attr”:{“S”:“my−string−value”}} # String type
{“my−number−attr”:{“N”:123456.7}} # Number type
As described above, an item may include one or more attributes. Each attribute may have two parts: an attribute name (eg, a UTF8 string) and an attribute value (a type can be expressed as a combination of type and value objects, representing the type of value). In some embodiments, a single value attribute may have a name and a scalar value, and the type of attribute may be encoded with the attribute value, as in the following example.
{"My-string-attr": {"S": "my-string-value"}} # String type
{"My-number-attr": {"N": 1233456.7}} #Number type
いくつかの実施形態では、多値属性は、名前、および特定タイプの1つ以上の値を有してもよい。そのような実施形態では、値は、以下の実施例の場合のように、一意であり得る。
{“Size”:{“SS”:[“XL”,“L”,“M”,“S”]} # String set
{“SingleDigitPrimes”:{“NS”:[2,3,5,7]} # Number set
In some embodiments, a multi-valued attribute may have a name and one or more values of a particular type. In such an embodiment, the value may be unique, as in the following example.
{“Size”: {“SS”: [“XL”, “L”, “M”, “S”]} # String set
{“SingleDigitPrimes”: {“NS”: [2, 3, 5, 7]} # Number set
いくつかの実施形態では、本明細書で説明されるシステムは、ユーザ/加入者またはクライアントアプリケーションにとっての膨大な(すなわち、事実上無限の)規模変更、予測可能性、および単純性を提供するために、いくぶん限定されたインデックス作成および/またはクエリモデルを採用してもよい。例えば、いくつかの実施形態では、データは、一次キーのみによってインデックス作成および区分されてもよい(例えば、基礎的データベースの中で区分される)。そのような実施形態では、ユーザテーブルの中のデータにインデックス作成するために使用される一次キーは、テーブルがユーザの代わりに作成されるときに、ユーザによって特定されてもよい。その後、ユーザのデータの区分化は、本システムによって取り扱われ、ユーザから取り出されてもよい。いくつかの実施形態では、データにインデックス作成するために使用される一次キーは、単一の属性ハッシュキーから成ってもよい。他の実施形態では、データにインデックス作成する、および/またはデータを区分するために使用される一次キーは、ハッシュキー構成要素と、範囲キー構成要素と呼ばれることもある別の構成要素とを備える、複合キーであってもよい。本明細書でさらに詳細に説明されるように、種々の実施形態では、クエリは、インデックス付き属性に対してサポートされてもよく、(例えば、トラブルシューティングをサポートするように)完全テーブルスキャン機能が提供されてもよい。いくつかの実施形態では、ユーザは、一次キーの属性以外の1つ以上の属性に基づいて、テーブルの二次インデックスを定義してもよく、次いで、ユーザが定義したインデックスを使用して、アイテムについて問い合わせてもよい。例えば、いくつかの実施形態では、本システムは、オンザフライで(例えば、createIndex APIを使用して)二次インデックスを作成するという作成をサポートしてもよく、これらの二次インデックスは、記憶要件(例えば、データ量を増加または減少させる)および/または読み取り/書き込みトラフィックに基づいて、自動的に規模変更してもよい。いくつかの実施形態では、そのような二次インデックスは、テーブルの中のアイテムが更新されるにつれて非同期的に更新されてもよい。   In some embodiments, the systems described herein provide enormous (ie, virtually infinite) scaling, predictability, and simplicity for user / subscriber or client applications. Somewhat limited indexing and / or query models may be employed. For example, in some embodiments, data may be indexed and partitioned by primary key only (eg, partitioned in the underlying database). In such an embodiment, the primary key used to index the data in the user table may be specified by the user when the table is created on behalf of the user. Thereafter, the partitioning of the user's data may be handled by the system and retrieved from the user. In some embodiments, the primary key used to index the data may consist of a single attribute hash key. In other embodiments, the primary key used to index and / or partition data comprises a hash key component and another component, sometimes referred to as a range key component. Or a composite key. As described in further detail herein, in various embodiments, queries may be supported for indexed attributes, and full table scan functionality is enabled (eg, to support troubleshooting). May be provided. In some embodiments, the user may define a secondary index for the table based on one or more attributes other than the primary key attribute, and then use the user-defined index to You may ask about. For example, in some embodiments, the system may support creation of secondary indexes on the fly (e.g., using the createIndex API), and these secondary indexes may have storage requirements ( (E.g., increasing or decreasing the amount of data) and / or based on read / write traffic. In some embodiments, such secondary indexes may be updated asynchronously as items in the table are updated.
前述のように、いくつかの実施形態では、データ記憶サービスによって維持された各テーブルの中のアイテムの数への既定の制限がなくてもよい。概念的に、各アイテムは、対応する属性値への属性名のマッピングと考えられてもよい。この類似性を使用して、マップの中の各入力が属性である。種々の実施形態では、各アイテムは、ゼロ以上の非キー属性を加えて、キー属性を含んでもよい。いくつかの実施形態では、キー属性が、単一値属性であってもよい一方で、非キー属性は、単一値属性または多値属性であってもよい。以下は、(文字列タイプの)PictureId、(数字タイプの)CustomerId、(文字列タイプの)Title、およびTags(多値文字列属性)といった、5つの属性を有するアイテムの実施例である。

“PictureId”:{“S”:“picture123”},
“CustomerId”:{“N”:1234567},
“Title”:{“S”:“sun flower”},
“Tags”:{“SS”:[“flower”,“seattle”]}
As mentioned above, in some embodiments there may be no default limit on the number of items in each table maintained by the data storage service. Conceptually, each item may be thought of as a mapping of attribute names to corresponding attribute values. Using this similarity, each input in the map is an attribute. In various embodiments, each item may include a key attribute, plus zero or more non-key attributes. In some embodiments, the key attribute may be a single value attribute, while the non-key attribute may be a single value attribute or a multi-value attribute. The following is an example of an item with five attributes: PictureId (of string type), CustomerId (of number type), Title (of string type), and Tags (multi-valued string attribute).
{
“PictureId”: {“S”: “picture123”},
“CustomerId”: {“N”: 1234567},
“Title”: {“S”: “sun flower”},
“Tags”: {“SS”: [“flower”, “seattle”]}
}
種々の実施形態では、サービス(および/または基礎的システム)は、テーブル名、アイテム、属性値、一次キー値、および/または属性名への所定のサイズ制限を施行してもよい。例えば、いくつかの実施形態では、アイテムにおける全ての属性名および値の全サイズ(すなわち、行サイズ)が制限されてもよい。   In various embodiments, the service (and / or underlying system) may enforce certain size restrictions on table names, items, attribute values, primary key values, and / or attribute names. For example, in some embodiments, the total size (ie, row size) of all attribute names and values in an item may be limited.
図3Aおよび3Bは、一実施形態による、複数のテーブルの中のデータの記憶を図示する。図3Aで図示され、上記で説明されるように、複数のテーブル(テーブル320a〜320nとして示される)のそれぞれは、複数のアイテムを記憶してもよい。図示した実施例では、テーブル320aは、アイテム321a〜321nを記憶し、テーブル320nは、アイテム322a〜322nを記憶する。図3Bで図示されるように、テーブルの中に記憶されたアイテムのそれぞれは、複数の属性を含んでもよく、属性のそれぞれは、属性名と、スカラーまたはセットタイプ値とを含んでもよい。この実施例では、(テーブル320aに記憶された)アイテム321aは、値が1である、数値「imageID」属性と、値が20100915である、数値「date」属性と、値が「flower」である、「title」と名付けられた文字列属性と、値が文字列「flower」、「jasmine」、および「white」を含有するセットである、「tags」と名付けられた文字列属性とを含む。この実施例では、(同様にテーブル320aに記憶される)アイテム321bは、値が2である、数値「imageID」属性と、値が数値3、4、および2を含むセットである、「ratings」と名付けられた数値属性と、値が「credenza」である、「title」と名付けられた文字列属性と、値が1024である、数値「width」属性と、値が768である、数値「depth」属性とを含む。この実施例では、(同様にテーブル320aに記憶される)アイテム321nは、値がnである、数値「imageID」属性と、値が20110327である、数値「date」属性と、値が文字列「france」および「architecture」を含有するセットである、「tags」と名付けられた文字列属性とを含む。たとえアイテム321a、321b、および321nが全て、同一のテーブル(テーブル320a)の中に記憶されているとしても、それらが全て同一の一式の属性を含むわけではないことに留意されたい。代わりに、各アイテムは、テーブル320aに記憶されたアイテムの集合に特定されている全ての属性の中から、わずかな一式の属性を含む。いくつかの実施形態では、本明細書で説明されるもの等のテーブルは、ユーザデータに加えて、システムメタデータを記憶して管理するために使用されてもよい。   3A and 3B illustrate storage of data in multiple tables, according to one embodiment. As illustrated in FIG. 3A and described above, each of a plurality of tables (shown as tables 320a-320n) may store a plurality of items. In the illustrated embodiment, table 320a stores items 321a-321n, and table 320n stores items 322a-322n. As illustrated in FIG. 3B, each of the items stored in the table may include a plurality of attributes, and each of the attributes may include an attribute name and a scalar or set type value. In this example, the item 321a (stored in the table 320a) has a numeric value “imageID” attribute with a value of 1, a numeric value “date” attribute with a value of 20100091, and a value of “flower”. , A string attribute named “title”, and a string attribute named “tags” whose value is a set containing the strings “flower”, “jasmine”, and “white”. In this example, item 321b (also stored in table 320a) is a set that includes a numeric “imageID” attribute with a value of 2, and numeric values 3, 4, and 2, “ratings”. A numerical attribute named “title”, a string attribute named “title”, a numerical “width” attribute whose value is 1024, and a numerical value “depth” whose value is 768 Attribute. In this example, the item 321n (also stored in the table 320a) has a numerical value “imageID” attribute whose value is n, a numerical value “date” attribute whose value is 201110327, and a character string “ It includes a string attribute named “tags”, which is a set containing “frence” and “architecture”. Note that even though items 321a, 321b, and 321n are all stored in the same table (table 320a), they do not all contain the same set of attributes. Instead, each item includes a small set of attributes from among all the attributes specified in the set of items stored in table 320a. In some embodiments, tables such as those described herein may be used to store and manage system metadata in addition to user data.
上記で説明される、わずかにデータ投入されたアイテムは、以下の表1の中のグリッド表現によって、さらに例証されてもよい。以下の表1のグリッド形式は、単一のテーブルの中の種々のアイテムが、テーブルの中のアイテムの集合に含まれるアイテム属性の異なるサブセットを含み得るという事実を例証するための利便的な機構にすぎないことに留意されたい。本明細書で説明される非リレーショナルデータベースシステムの中で維持されるテーブルに対して、またはアイテム自体に対して、任意の特定の構造を暗示することは意図されていない。したがって、以下の表1の行および列の選択および配列は、恣意的と見なされ、例証目的のためのみであってもよい。本明細書で説明されるように、本明細書で説明されるシステムによって維持されるテーブルは、固定スキーマを持たなくてもよい。そのようなものとして、アイテムは、その中に含まれていない属性の代替物(すなわち、空白要素)を含まなくてもよく、属性(およびそれらの値)は、それらを全ての他のアイテムに追加する必要なく、1つ以上のアイテムに追加されてもよい。   The slightly populated items described above may be further illustrated by the grid representation in Table 1 below. The grid format in Table 1 below is a convenient mechanism for illustrating the fact that various items in a single table may include different subsets of item attributes contained in the collection of items in the table. Please note that it is only. It is not intended to imply any particular structure for the tables maintained in the non-relational database systems described herein or for the items themselves. Accordingly, the selection and arrangement of the rows and columns in Table 1 below is considered arbitrary and may be for illustrative purposes only. As described herein, tables maintained by the system described herein may not have a fixed schema. As such, an item may not contain attribute substitutes (ie, blank elements) that are not contained within it, and attributes (and their values) may be attributed to all other items. It may be added to one or more items without having to add.
いくつかの実施形態では、クライアント/ユーザの代わりにデータ記憶サービスによって維持されるテーブルは、そのアイテムを識別する一次キーを有してもよい。一次キーは、種々の実施形態では、1つの属性に(上記で説明されるように単一値であってもよい)、またはいくつかの属性に定義されてもよい(すなわち、上記で説明されるように複合一次キーであってもよい)。キー属性は、不変であり得、固定タイプを有してもよく、テーブル内のアイテムを一意的に識別するため、あらゆるアイテムに強制的であり得る。いくつかの実施形態では、一次キーは、インデックス作成されるテーブルの一部のみであり、インデックスタイプは、テーブルが作成されるときに特定されてもよい。例えば、アイテムのテーブルが作成されるとき、属性がテーブルの一次キー属性として指定されてもよい(または2つの属性が複合一次キーのために指定されてもよい)。テーブルの中の全てのアイテムは、一次キーのために指定された属性(複数可)を含まなければならず、データ記憶サービス(および/または基礎的システム)は、これらの属性名の値(または値の組み合わせ)がテーブルの中の各アイテムに一意的であることを確実にしてもよい。例えば、既存のアイテムと同一の一次キー値を有する新しいアイテムを追加しようとする場合、新しいアイテムは、テーブルの中の既存のアイテムに取って代わってもよい。   In some embodiments, the table maintained by the data storage service on behalf of the client / user may have a primary key that identifies the item. The primary key may be defined in one embodiment (which may be a single value as described above) or several attributes (ie, described above) in various embodiments. As well as a composite primary key). The key attribute may be immutable, may have a fixed type, and may be mandatory for every item to uniquely identify the item in the table. In some embodiments, the primary key is only a portion of the table being indexed, and the index type may be specified when the table is created. For example, when a table of items is created, an attribute may be specified as the primary key attribute of the table (or two attributes may be specified for the composite primary key). Every item in the table must contain the attribute (s) specified for the primary key, and the data storage service (and / or the underlying system) will determine the value of these attribute names (or It may be ensured that the combination of values is unique to each item in the table. For example, when trying to add a new item having the same primary key value as an existing item, the new item may replace the existing item in the table.
図4は、一実施形態による、「imageID」と名付けられた数値属性が一次キーとして指定されている、テーブルの中に記憶され得る3つのアイテムを図示する。この実施例では、アイテム410aは、(1という値を有する)imageID属性と、少なくとも3つの他の属性(すなわち、date属性、title属性、およびtags属性)の値とを含む。同様に、アイテム410bは、(2という値を有する)imageID属性と、少なくとも3つの他の属性(例えば、album属性、rating属性、およびtags属性)の値とを含む。この実施例では、アイテム410cは、(3という値を有する)imageID属性と、少なくとも3つの他の属性(例えば、date属性、price属性、およびauthor属性)の値とを有する。この実施例では、テーブルに記憶されたアイテムは、それらの一次キー値に従ってインデックス作成されてもよい。言い換えれば、これらのアイテムのそれぞれは、その一次キー値のみによって一意的に識別されてもよく、その一次キー値によって識別されているアイテムを読み出す動作は、その他の属性のうちのいくつかまたは全ての値を読み出すことを含んでもよい。   FIG. 4 illustrates three items that may be stored in a table with a numeric attribute named “imageID” designated as the primary key, according to one embodiment. In this example, item 410a includes an imageID attribute (having a value of 1) and the values of at least three other attributes (ie, the date attribute, the title attribute, and the tags attribute). Similarly, item 410b includes an imageID attribute (having a value of 2) and values for at least three other attributes (eg, the album attribute, the rating attribute, and the tags attribute). In this example, item 410c has an imageID attribute (having a value of 3) and values for at least three other attributes (eg, a date attribute, a price attribute, and an author attribute). In this example, items stored in the table may be indexed according to their primary key values. In other words, each of these items may be uniquely identified only by its primary key value, and the action of retrieving the item identified by that primary key value may be some or all of the other attributes May be read out.
上述のように、データ記憶サービス(および/または基礎的システム)は、一次キーに基づいてインデックスを作成してもよい。インデックスのタイプは、テーブルが単純一次キーを使用するか、または複合一次キーを使用するかどうかに依存してもよい。例えば、データ記憶サービスは、以下のようなハッシュインデックスまたはハッシュおよび範囲インデックスのいずれかとして一次キーにインデックス作成してもよい。
・ハッシュ−ハッシュは、文字列または数字であってもよい。単純一次キーは、文字列または数字であり得る、ハッシュインデックスである、1つのインデックス値を有してもよい。
・範囲−範囲は、文字列または数字であってもよい。範囲は、データクエリが範囲に基づいて結果を精緻化することができるように、テーブルアイテムが選別されることを可能にしてもよい。複合一次キーは、ハッシュインデックス(本明細書ではハッシュキー値と呼ばれることもある)および範囲インデックス(本明細書では範囲キー値と呼ばれることもある)といった、インデックスの2つの値を含有してもよい。
As described above, the data storage service (and / or the underlying system) may create an index based on the primary key. The type of index may depend on whether the table uses a simple primary key or a composite primary key. For example, the data storage service may index the primary key as either a hash index or a hash and range index as follows:
• Hash-Hash may be a string or a number. A simple primary key may have one index value that is a hash index, which can be a string or a number.
• Range-The range may be a string or a number. Ranges may allow table items to be filtered so that a data query can refine the results based on the range. A composite primary key may also contain two values of an index, a hash index (sometimes referred to herein as a hash key value) and a range index (sometimes referred to herein as a range key value). Good.
単純一次キーが、データ収集および(例えば、以下で説明されるスキャンAPIを使用した)テーブルデータの低頻度スキャンのために十分であり得る。複合一次キーは、テーブルデータがより正確に組織化されることを可能にしてもよく、より効率的なデータ検索のための以下で説明されるQuery APIの使用を可能にしてもよい。以下のアドレステーブル(表2)は、テーブルの中の各アイテムを一意的に識別するための一次キーとしての単一の属性の使用を例証する。   A simple primary key may be sufficient for data collection and infrequent scanning of table data (eg, using the scan API described below). The composite primary key may allow the table data to be more accurately organized and may allow the use of the Query API described below for more efficient data retrieval. The following address table (Table 2) illustrates the use of a single attribute as a primary key to uniquely identify each item in the table.
この実施例では、UserIDと呼ばれる属性である、一次キーが、あらゆるアイテムにおいて要求され、そのタイプ(「文字列」)が、あらゆるアイテムに対して固定される。しかしながら、各アイテムはまた、追加の属性の任意の組み合わせを含んでもよい。データ記憶システムは、いくつかの実施形態では、UserIDの値がテーブルの中の各アイテムに一意的であることを確実にするように構成されてもよい。上述のように、いくつかの実施形態では、属性値は、空値または空白になり得ない。そのような実施形態では、属性は、それと関連付けられる値を有するまで/持たない限り、テーブルの中に存在しない。以下のテーブル(表3)は、テーブルの中のアイテムが一意的に識別され得る、一次キーとしての数値属性(この場合はImageID)を指定する。   In this example, a primary key, an attribute called UserID, is required on every item and its type (“string”) is fixed for every item. However, each item may also include any combination of additional attributes. The data storage system may in some embodiments be configured to ensure that the UserID value is unique to each item in the table. As described above, in some embodiments, attribute values cannot be empty or blank. In such an embodiment, the attribute is not present in the table unless it has / has a value associated with it. The following table (Table 3) specifies a numeric attribute (in this case ImageID) as a primary key that allows the items in the table to be uniquely identified.
この実施例では、一次キーImageIDが、あらゆるアイテムにおいて要求され、そのタイプ(「数字」)が、あらゆるアイテムに対して固定されるが、各アイテムは、他の属性の任意の組み合わせを含んでもよい。以前の実施例の場合のように、データ記憶システムは、いくつかの実施形態では、ImageIDの値がテーブルの中の各アイテムに一意的であることを確実にするように構成されてもよい。上述のように、いくつかの実施形態では、属性値は、空値または空白になり得ない。そのような実施形態では、属性は、それと関連付けられる値を有するまで/持たない限り、テーブルの中に存在しない。   In this example, a primary key ImageID is required on every item and its type (“number”) is fixed for every item, but each item may contain any combination of other attributes. . As in the previous example, the data storage system may be configured in some embodiments to ensure that the value of ImageID is unique to each item in the table. As described above, in some embodiments, attribute values cannot be empty or blank. In such an embodiment, the attribute is not present in the table unless it has / has a value associated with it.
記憶サービスクライアントの代わりにデータ記憶サービスによって維持されるテーブルを作成するための方法の一実施形態が、図5でフロー図によって図示されている。510で図示されるように、この実施例では、本方法は、ユーザの代わりにテーブルを作成するサービス要求を受信する、データ記憶サービス(例えば、フロントエンドモジュールまたは基礎的システムの別の構成要素)を実装する本システムの構成要素を含んでもよい。要求は、テーブルの名前、およびテーブルの単純または複合一次キーを特定してもよい。いくつかの実施形態では、要求はまた、最終テーブルサイズの推定値、および/またはテーブルを対象とした作業負荷(すなわち、トラフィック)の推定値、および/または要求された能力またはスループットトラフィックを含んでもよい。いくつかの実施形態では、そのような情報(要求に含まれる場合)は、テーブルの初期サイズおよび/またはテーブルの区分の初期数を判定するために使用されてもよい。他の実施形態では、クライアントまたは加入者アカウント情報(例えば、選好)または特定の記憶サービスクライアントの(例えば、特定のユーザ、加入者、またはクライアントアプリケーションの)履歴データが、作成されているテーブルの区分の初期サイズおよび/または数を判定するために使用されてもよい。   One embodiment of a method for creating a table maintained by a data storage service on behalf of a storage service client is illustrated by the flow diagram in FIG. As illustrated at 510, in this example, the method includes a data storage service (eg, a front-end module or another component of an underlying system) that receives a service request to create a table on behalf of a user. The system component may be included. The request may specify the name of the table and the simple or composite primary key of the table. In some embodiments, the request may also include an estimate of the final table size, and / or an estimate of the workload (ie, traffic) for the table, and / or the requested capacity or throughput traffic. Good. In some embodiments, such information (if included in the request) may be used to determine the initial size of the table and / or the initial number of partitions of the table. In other embodiments, the section of the table in which the client or subscriber account information (eg, preferences) or the historical data (eg, of a particular user, subscriber, or client application) of a particular storage service client is being created May be used to determine the initial size and / or number of.
この実施例で図示されるように、本方法は、520の場合のように、要求において特定されるテーブル名を有するアクティブなテーブルが、すでに本システムに存在するかどうかを判定することを含んでもよい。該当する場合、520からの肯定の出口として示され、本方法は、525の場合のように、エラー指示を返すことを含んでもよい。アクティブなテーブルが特定テーブル名とともに存在しない場合、520からの否定の出口として示され、本方法は、530の場合のように、本システムが、非リレーショナルデータ記憶部(例えば、非リレーショナルデータベースまたは他の記憶構造)の中で(特定テーブル名を有する)新しいテーブルの作成を開始することを含んでもよい。いくつかの実施形態では、要求が、種々のサービスオプションを判定するように解析されてもよい。例えば、要求は、好ましいサービス要求スループットレベル、または保証が要求されるサービス要求スループットレベル等の1つ以上のユーザ選好の指示を含んでもよい。いくつかの実施形態では、新たに作成されたテーブルの中に記憶されるデータが、テーブルを作成する要求に含まれてもよい一方で、他の実施形態では、テーブルの中に記憶されるデータは、テーブルを作成する要求の受信後に、データ記憶システムによって受信される1つ以上のサービス要求に含まれてもよい。種々の実施形態では、データ記憶サービスによって維持されるテーブルに対する所定のサイズ制限またはスキーマがなくてもよい。   As illustrated in this example, the method may include determining whether an active table with the table name specified in the request already exists in the system, as in 520. Good. Where applicable, shown as a positive exit from 520, the method may include returning an error indication, as in 525. If an active table does not exist with a particular table name, it is shown as a negative exit from 520, and the method is similar to the case of 530, where the system is not connected to a non-relational data store (eg, a non-relational database or other The creation of a new table (having a specific table name). In some embodiments, the request may be parsed to determine various service options. For example, the request may include one or more user preference indications such as a preferred service request throughput level or a service request throughput level for which a guarantee is required. In some embodiments, data stored in a newly created table may be included in the request to create the table, while in other embodiments, data stored in the table May be included in one or more service requests received by the data storage system after receiving a request to create a table. In various embodiments, there may be no predetermined size limit or schema for tables maintained by the data storage service.
いくつかの実施形態では、(テーブルの中に記憶されるデータを含む任意の数のサービス要求を通して)テーブルに記憶されるデータの受信に応答して、本システムは、テーブルの中に記憶されるデータの量が多すぎて、本システム内の単一の区分の中に記憶できないかどうかを判定するように構成されてもよい。例えば、いくつかの実施形態では、本システムは、テーブルの中に記憶することができるアイテムの数(および/またはサイズ)に制限を課さなくてもよい一方で、非リレーショナルデータ記憶部内の各区分の中に記憶することができるアイテムの数(および/またはサイズ)に所定の制限を課してもよい。いくつかの実施形態では、ユーザ入力は、多すぎるデータ、またはテーブルを対象とした多すぎるトラフィックがあると予期されるため、テーブルが単一の区分として実装された場合にシステムの妥当な性能を提供することができないことを示してもよい。該当する場合、540からの肯定の出口として示され、本方法は、550の場合のように、本システムが、特定一次キーに従ってテーブルデータを記憶する2つ以上の区分を作成することを含んでもよい。例えば、一次キーが単純キーである実施形態では、アイテムのそれぞれの一次キー値のハッシュが、データを区分するために使用されてもよい。一次キーが複合キーである実施形態では、データは、最初に、ハッシュキー構成要素のハッシュによって、次いで、範囲キー構成要素によって区分されてもよい。例えば、範囲キー構成要素が、同一のハッシュキー構成要素値を有するアイテムが順序付けられる、数値識別子を表す場合、それらの範囲キー構成要素値の順序での最初のn個のアイテムは、1つの区分の中に配置されてもよく(nは、単一の区分の中に記憶することができるアイテムの数よりも少ない数である)、次のn個のアイテムは、別の区分の中に配置されてもよい、等である。   In some embodiments, in response to receiving data stored in the table (through any number of service requests including data stored in the table), the system is stored in the table. It may be configured to determine whether the amount of data is too large to store in a single partition in the system. For example, in some embodiments, the system may not impose a limit on the number (and / or size) of items that can be stored in a table, while each partition in a non-relational data store. A predetermined limit may be imposed on the number (and / or size) of items that can be stored in the. In some embodiments, user input is expected to have too much data, or too much traffic targeted to the table, thus reducing the system's reasonable performance when the table is implemented as a single partition. It may indicate that it cannot be provided. Where applicable, shown as a positive exit from 540, the method may include creating two or more partitions in which the system stores table data according to a specific primary key, as in 550. Good. For example, in embodiments where the primary key is a simple key, a hash of each item's primary key value may be used to partition the data. In embodiments where the primary key is a composite key, the data may be partitioned first by the hash of the hash key component and then by the range key component. For example, if a range key component represents a numeric identifier in which items with the same hash key component value are ordered, the first n items in the order of those range key component values are one segment (N is less than the number of items that can be stored in a single partition), and the next n items are placed in another partition And so on.
テーブルの中に記憶されるデータの量、またはテーブルを対象とするトラフィックが、テーブルがシステムの中で単一の区分として記憶されるために多すぎない場合、540からの否定の出口として示され、本方法は、560の場合のように、本システムが、テーブルデータを記憶する単一の区分を作成することを含んでもよい。その後、本システムは、570の場合のように、作業負荷またはシステム条件の変化に応答して、および/またはユーザ/加入者またはクライアントアプリケーションからの種々のサービス要求の受信に応答して、クライアント/ユーザの代わりに非リレーショナルデータ記憶部の中でテーブルをプログラムで(すなわち、自動的に)管理するように構成されてもよい。例えば、いくつかの実施形態では、本システムは、システムハードウェアの状態、サービス要求スループットの任意の変化、任意のテーブルサイズ増加(または減少)、および/または着信サービス要求の頻度または標的の任意の変化を監視するように、ならびに必要に応じて、または記憶サービスクライアントから受信される明示的なサービス要求に応答して、テーブルを自動的に(例えば、プログラムで)規模変更、再構成、および/または再区分するように構成されてもよい。   If the amount of data stored in the table, or traffic intended for the table, is not too much because the table is stored as a single partition in the system, it is indicated as a negative exit from 540. The method may include the system creating a single partition storing table data, as in 560. Thereafter, as in 570, the system may respond to changes in workload or system conditions and / or in response to receiving various service requests from users / subscribers or client applications. The table may be configured to be managed programmatically (ie automatically) in the non-relational data store on behalf of the user. For example, in some embodiments, the system may detect system hardware conditions, any change in service request throughput, any table size increase (or decrease), and / or any frequency or target of incoming service requests. Tables are automatically resized (eg, programmatically), reconfigured, and / or monitored for changes and as needed or in response to explicit service requests received from a storage service client. Or it may be configured to repartition.
本明細書で説明されるデータ記憶サービス(および/または基礎的システム)は、記憶サービスクライアントの代わりに維持されるテーブル、アイテム、および/または属性を標的にする種々の動作を要求するためのアプリケーションプログラミングインターフェース(API)を提供してもよい。いくつかの実施形態では、サービス(および/または基礎的システム)は、制御プレーンAPIおよびデータプレーンAPIの両方を提供してもよい。例えば、データ記憶サービスは、以下の動作のうちのいずれかまたは全てを行う、APIの集合を提供してもよい。
・テーブルを作成または削除する
・一次キーおよび作成情報を含む、1つまたは複数のテーブルの現在の状態を要求する
・テーブルの中にアイテムを入れる(記憶する)
・一次キーを介して1つ以上のアイテム(および/またはそれらの属性)を入手する(読み出す)
・テーブルからアイテムを削除する
・単一のアイテムにおける属性を更新する
・範囲インデックスおよび比較演算子を使用して、アイテムについて問い合わせる
・テーブル全体にわたってスキャンし、随意に、比較演算子を使用して返されるアイテムにフィルタをかける
The data storage service (and / or underlying system) described herein is an application for requesting various operations that target tables, items, and / or attributes that are maintained on behalf of a storage service client. A programming interface (API) may be provided. In some embodiments, a service (and / or underlying system) may provide both a control plane API and a data plane API. For example, a data storage service may provide a set of APIs that perform any or all of the following operations.
• Create or delete a table • Request the current state of one or more tables, including primary key and creation information • Put (store) items in a table
Obtain (read) one or more items (and / or their attributes) via a primary key
• Delete items from the table • Update attributes on a single item • Query for items using range indexes and comparison operators • Scan across tables, optionally using comparison operators Filter items
データ記憶サービス(および/または基礎的システム)によって提供される制御プレーンAPIは、テーブルおよびインデックス等のテーブルレベルエンティティを操作するために使用されてもよい。これらのAPIは、(データプレーンAPIと比較したときに)比較的低頻度で呼び出されてもよい。いくつかの実施形態では、サービスによって提供される制御プレーンAPIは、テーブルを作成し、テーブルを削除し、および/またはテーブルを記述するために使用されてもよい。いくつかの実施形態では、テーブルレベル入力への更新を行う制御プレーンAPIは、要求された動作を行うように非同期ワークフローを呼び出してもよい。(例えば、describeTables APIを介して)「説明」情報を要求する方法は、単純に、クライアント/ユーザの代わりにサービスによって維持されるテーブルの現在の既知の状態を返してもよい。   Control plane APIs provided by data storage services (and / or underlying systems) may be used to manipulate table level entities such as tables and indexes. These APIs may be invoked relatively infrequently (when compared to data plane APIs). In some embodiments, a control plane API provided by the service may be used to create tables, delete tables, and / or describe tables. In some embodiments, a control plane API that performs updates to table level inputs may invoke an asynchronous workflow to perform the requested action. The method of requesting “description” information (eg, via the describableTables API) may simply return the current known state of the table maintained by the service on behalf of the client / user.
データ記憶サービス(および/または基礎的システム)によって提供されるデータプレーンAPIは、アイテムおよび/またはそれらの属性を記憶すること、削除すること、読み出すこと、および/または更新すること等のアイテムレベル動作を行い、またはクエリおよびスキャン等のテーブルの中の複数のアイテムにわたるインデックスベースの検索タイプ動作を行うために使用されてもよい。   Data plane APIs provided by data storage services (and / or underlying systems) are item level operations such as storing, deleting, retrieving, and / or updating items and / or their attributes. Or an index-based search type operation across multiple items in tables such as queries and scans.
本明細書で説明されるサービスによって提供されるAPIは、異なる実施形態では、1つ以上の業界標準または専有データ交換形式で符号化される、要求および応答パラメータをサポートしてもよい。例えば、種々の実施形態では、要求および応答は、人間が読める(例えば、テキストベースの)データ交換標準(例えば、JavaScript(登録商標) Object Notation、すなわちJSON)に準拠してもよく、または(場合によっては、テキストベースの表現よりもコンパクトであり得る)2進符号化を使用して表されてもよい。種々の実施形態では、本システムは、本明細書で説明されるAPIの入力パラメータのうちの1つ以上のデフォルト値(例えば、システム全体、ユーザ特有、またはアカウント特有のデフォルト値)を供給してもよい。   The API provided by the services described herein may support request and response parameters that, in different embodiments, are encoded in one or more industry standard or proprietary data exchange formats. For example, in various embodiments, requests and responses may be compliant with human-readable (eg, text-based) data exchange standards (eg, JavaScript Object Notification, or JSON), or (if May be represented using binary encoding (which may be more compact than text-based representations). In various embodiments, the system provides default values (eg, system-wide, user-specific, or account-specific default values) for one or more of the API input parameters described herein. Also good.
上述のように、サービスによってサポートされる制御プレーンAPIは、テーブルに更新を行うAPI(例えば、CreateTable APIおよび/またはDeleteTable API)を含んでもよい。種々の実施形態では、これらのAPIは、要求された動作を行うように非同期ワークフローを呼び出してもよい。加えて、サービスは、現在の既知の状態を返す方法をサポートしてもよい(例えば、DescribeTables API)。いくつかの実施形態では、共通使用モデルは、クライアントが(例えば、CreateTable APIを使用して)アクションを要求し、次いで、対応する説明API(例えば、DescribeTables)を介して、その完了にポーリングするためのものであってもよい。   As described above, the control plane API supported by the service may include an API that updates the table (eg, CreateTable API and / or DeleteTable API). In various embodiments, these APIs may invoke an asynchronous workflow to perform the requested action. In addition, the service may support a method of returning the current known state (eg, a DescribeTables API). In some embodiments, a common usage model is for a client to request an action (eg, using the CreateTable API) and then poll for its completion via a corresponding description API (eg, DescribingTables). It may be.
種々の実施形態では、CreateTable APIが、特定一次インデックス(すなわち、一次キー)を有するテーブルを作成するために使用されてもよい。いくつかの実施形態では、このAPIを介して、記憶サービスクライアントの代わりにテーブルを作成する要求の受信に応答して、サービスは、即時に(すなわち、ワークフローが完了するのを待つことなく)戻る非同期CreateTableワークフローをトリガしてもよい(および/またはサービスを実装する基礎的システムが呼び出してもよい)。そのような実施形態では、ワークフローの成功は、DescribeTables APIを介してテーブルの状態をチェックすることによって、後に判定されてもよい。例えば、クライアント/ユーザの代わりにサービスによって管理される各テーブルは、以下のテーブル状態のうちの1つにあってもよく、各テーブルの状態の指示は、DescribeTables要求に応答して返されてもよい。
Creating−テーブルが作成されている
Active−テーブルが存在する
Deleting−テーブルが削除されている
In various embodiments, the CreateTable API may be used to create a table with a specific primary index (ie, primary key). In some embodiments, via this API, the service returns immediately (ie, without waiting for the workflow to complete) in response to receiving a request to create a table on behalf of the storage service client. An asynchronous CreateTable workflow may be triggered (and / or invoked by the underlying system that implements the service). In such an embodiment, the success of the workflow may be determined later by checking the state of the table via the DescribeTables API. For example, each table managed by the service on behalf of a client / user may be in one of the following table states, and an indication of the state of each table may be returned in response to a DescribbleTables request. Good.
Creating-table has been created Active-table exists Deleting-table has been deleted
ウェブサービスAPIを通して受信される要求に応答して、テーブルを作成するための方法の一実施形態が、図6でフロー図によって図示されている。この実施例で図示されるように、本方法は、610の場合のように、ユーザの代わりにテーブルを作成するサービス要求を受信する、データ記憶サービスを実装するシステムを含んでもよい。要求は、作成されるテーブルの名前を含んでもよく、テーブルの単純または複合一次キーを特定してもよい。要求の受信に応答して、特定テーブル名を有するアクティブなテーブルがまだ存在していない場合、本システムは、620の場合のように、テーブルのメタデータを生成してもよい。テーブルメタデータの生成が、図7で図示され、一実施形態に従って以下で詳細に説明される。テーブルのメタデータを作成した後、本方法は、630の場合のように、本システムが非同期CreateTableワークフローを呼び出すことを含んでもよい(例えば、本システムの構成要素が、CreateTable方法への呼び出しを発行してもよい)。そのようなワークフローの一実施形態が、図8で図示され、以下で説明される。いくつかの実施形態では、応答が、即時に(すなわち、CreateTableワークフローの完了前に、または場合によっては、CreateTableワークフローがテーブルを作成するプロセスを開始する前に)CreateTableワークフローから返されてもよい。   One embodiment of a method for creating a table in response to a request received through a web service API is illustrated by the flow diagram in FIG. As illustrated in this example, the method may include a system that implements a data storage service that receives a service request to create a table on behalf of a user, as in 610. The request may include the name of the table being created and may specify a simple or composite primary key for the table. In response to receiving the request, if an active table with a particular table name does not already exist, the system may generate table metadata, as in 620. The generation of table metadata is illustrated in FIG. 7 and described in detail below according to one embodiment. After creating the table metadata, the method may include the system calling the asynchronous CreateTable workflow as in 630 (eg, a component of the system issues a call to the CreateTable method). You may). One embodiment of such a workflow is illustrated in FIG. 8 and described below. In some embodiments, a response may be returned from the CreateTable workflow immediately (ie, before completion of the CreateTable workflow, or in some cases, before the CreateTable workflow begins the process of creating the table).
いくつかの実施形態では、CreateTableワークフローを呼び出した後、本システムは、CreateTableワークフローの完了を待つよりもむしろ、他の作業を行い続けてもよい。例えば、(ユーザの代わりに)本システム(またはその構成要素)またはアプリケーションは、640の場合のように、新しいテーブルの状態を周期的にまたは時折チェックして、それが「Active」状態であるかどうかを確認するように構成されてもよい。いくつかの実施形態では、これは、本明細書で説明されるDescribeTables APIを使用して、サービス要求を発行することを伴ってもよい。テーブルの状態は、その状態が「Active」になるまで繰り返しチェックされてもよく、640の否定の出口から640の入力までのフィードバックループとして示される。いったんテーブル状態が「Active」になると、テーブル作成プロセスは、650の場合のように、完了したと見なされてもよい。   In some embodiments, after invoking the CreateTable workflow, the system may continue to do other work rather than waiting for the CreateTable workflow to complete. For example, the system (or its components) or application (on behalf of the user) checks the status of the new table periodically or occasionally as in 640 to see if it is in the “Active” state. It may be configured to check whether. In some embodiments, this may involve issuing a service request using the DescribeTables API described herein. The state of the table may be checked repeatedly until the state is “Active” and is shown as a feedback loop from the negative exit of 640 to the input of 640. Once the table state is “Active”, the table creation process may be considered complete, as in 650.
いくつかの実施形態では、CreateTable APIの入力パラメータは、TableName(作成されるテーブルの名前を含む文字列であり得る)、およびこのAPIのKeySchema(作成されるテーブルの一次キーを表し得る)を含んでもよい。いくつかの実施形態では、KeySchemaは、単純または複合一次キーを記述する配列を含んでもよい。例えば、単純一次キーが、単一のハッシュキーを含んでもよい一方で、複合キーは、ハッシュおよび範囲キーを含んでもよい。一実施形態では、一次キーのインデックスタイプは、HASHまたはRANGEであってもよく、一次キーの各属性は、名前(属性の名前を含む文字列であり得る)、属性値のデータタイプ(例えば、NまたはS)、および属性値を含んでもよい。前述のように、CreateTable要求は、異なる実施形態では、JSON要求形式または別の好適な形式で提示されてもよい。以下は、FolderID(文字列タイプのハッシュインデックス)およびDateCreated(それぞれ数字として表される日付の範囲)といった、2つの属性を有する、複合一次インデックスを用いてテーブルを作成する要求の実施例である。

要求形式例:


CreateTable{
“TableName”:“Pictures”,
“KeySchema”:[

“Name”:“FolderID”,
“IndexType”:“HASH”,
“DataType”:“S”
},

“Name”:“DateCreated”,
“IndexType”:“RANGE”,
“DataType”:“N”




In some embodiments, the CreateTable API input parameters include TableName (which may be a string containing the name of the table being created), and KeySchema for this API (which may represent the primary key of the table being created). But you can. In some embodiments, the KeySchema may include an array that describes a simple or composite primary key. For example, a simple primary key may include a single hash key, while a composite key may include a hash and a range key. In one embodiment, the primary key index type may be HASH or RANGE, each attribute of the primary key may be a name (which may be a string containing the name of the attribute), an attribute value data type (eg, N or S), and attribute values. As described above, the CreateTable request may be presented in a JSON request format or another suitable format in different embodiments. The following is an example of a request to create a table using a composite primary index with two attributes: FolderID (a string type hash index) and DateCreated (date ranges each represented as a number).

Example request format:
{

CreateTable {
“TableName”: “Pictures”,
“Key Schema”: [
{
“Name”: “FolderID”,
“IndexType”: “HASH”,
“DataType”: “S”
},
{
“Name”: “DateCreated”,
“IndexType”: “RANGE”,
“DataType”: “N”
}
]
}
}
いくつかの実施形態では、CreateTable APIの出力パラメータは、TableName(例えば、作成されているテーブルの名前を含む文字列)、TableStatus(例えば、値「Creating」を有する文字列)、KeySchema(例えば、単純ハッシュキーであり得る、または範囲を含み得る、一次キーを記述する配列)、およびDateCreated(テーブルが作成された日付および/または時間を示す、文字列または数字であり得る)を含んでもよい。前述のように、CreateTable要求への応答は、異なる実施形態では、JSON応答形式または別の好適な形式で提示されてもよい。いくつかの実施形態では、すでに存在するテーブル(すなわち、同一の名前、一次キー、および/またはキースキーマを伴うもの)を作成しようとする場合、エラー状態の指示がサービスによって返されてもよい(例えば、ResourceInUseエラー状態)。以下は、CreateTable要求に対応する、データ記憶サービスから受信される応答の実施例である。

応答形式例:

“TableName”:“Pictures”,
“TableStatus”:“Creating”,
“KeySchema”:[
{“Name”=“ImageID”,
“IndexType”=HASH,
“DataType”=“N”

],
“DateCreated”:“20100101T05:05:05Z”

In some embodiments, the output parameters of the CreateTable API are TableName (eg, a string containing the name of the table being created), TableStatus (eg, a string with the value “Creating”), KeySchema (eg, simple An array describing the primary key, which may be a hash key or may include a range), and DateCreated (which may be a string or number indicating the date and / or time the table was created). As described above, the response to the CreateTable request may be presented in a JSON response format or another suitable format in different embodiments. In some embodiments, if an attempt is made to create a table that already exists (ie, with the same name, primary key, and / or key schema), an error condition indication may be returned by the service ( For example, ResourceInUse error state). The following is an example of a response received from a data storage service corresponding to a CreateTable request.

Example response format:
{
“TableName”: “Pictures”,
“TableStatus”: “Creating”,
“Key Schema”: [
{“Name” = “ImageID”,
“IndexType” = HASH,
“DataType” = “N”
}
],
“DateCreated”: “20100101T05: 05: 05Z”
}
上述のように、(例えば、CreateTable APIを使用して)記憶サービスクライアント/ユーザの代わりにテーブルを作成する要求の受信に応答して、データ記憶サービス(および/または基礎的システム)は、いくつかの実施形態では、テーブルと関連付けられるメタデータを生成し、テーブルを作成するように非同期CreateTableワークフローを呼び出してもよい。いくつかの実施形態では、テーブル作成と関連付けられるメタデータを記憶および/または維持する複数のテーブルがあってもよく、これらのテーブルのうちの1つ以上は、新しいテーブルが作成されたときに更新されてもよい。例えば、本システムは、種々の実施形態では、以下のテーブルのうちのいずれかまたは全てを維持してもよい。
・Tablesテーブル:このテーブルは、テーブルの現在の状態(例えば、Creating、Active、Deleting等)とともに、あらゆるテーブルのリストを本システムの中で維持してもよい。このテーブルの一次キーは、いくつかの実施形態では、SubscriberId属性(代わりにテーブルが維持されるであろう、ユーザを識別するために使用され得る)、およびTableName属性(作成されるであろうテーブルの名前を特定し得る)を含んでもよい。入力が新しいテーブルのために作成されるとき、テーブル状態は、テーブルが作成のために容認されているが、テーブルを作成するようにワークフローがまだ呼び出されていないことを示し得る、「Creation Pending」に設定されてもよい。
・Subscribersテーブル:このテーブルは、単一のクライアント(すなわち、ユーザ/加入者またはクライアントアプリケーション)の代わりに維持されているテーブルの総数のカウントを維持してもよく、また、アイテムのうちのいくつが、Active、Creating、および/またはDeletingという状態のそれぞれにあるかを示してもよい。このテーブルの一次キーは、いくつかの実施形態では、上記で説明されるようなSubscriberId属性を含んでもよい。いくつかの実施形態では、このテーブルは、Tablesテーブルに対する二次インデックスとして扱われてもよい。テーブルの総数のカウントおよび/またはCreating状態のテーブルの数のカウントは、CreateTableワークフローの起動に応答して増分されてもよい。
・Partitionsテーブル:このテーブルは、特定のテーブルに対する全ての区分のリストを維持してもよく、かつそれらの場所を示してもよい。このテーブルの一次キーは、いくつかの実施形態では、TableId属性およびPartitionId属性とを含んでもよい。
・Nodesテーブル:このテーブルは、ノードのリストを維持してもよく、かつそれらのそれぞれの上でホストされる区分を示してもよい。このテーブルの一次キーは、いくつかの実施形態では、NodeId属性を含んでもよい。いくつかの実施形態では、このテーブルは、Partitionsテーブルに対する二次インデックスとして扱われてもよい。
As described above, in response to receiving a request to create a table on behalf of a storage service client / user (eg, using the CreateTable API), several data storage services (and / or underlying systems) In this embodiment, metadata associated with the table may be generated and the asynchronous CreateTable workflow may be invoked to create the table. In some embodiments, there may be multiple tables that store and / or maintain metadata associated with table creation, one or more of these tables being updated when a new table is created. May be. For example, the system may maintain any or all of the following tables in various embodiments.
Tables table: This table may maintain a list of any table in the system, along with the current state of the table (eg, Creating, Active, Deleting, etc.). The primary key for this table is, in some embodiments, the SubscriberId attribute (which may be used to identify the user, instead the table will be maintained), and the TableName attribute (the table that will be created). May be specified). When the input is created for a new table, the table state may indicate that the table is acceptable for creation but the workflow has not yet been called to create the table, “Creating Pending” May be set.
Subscribers table: This table may maintain a count of the total number of tables that are maintained on behalf of a single client (ie, user / subscriber or client application), and how many of the items , Active, Creating, and / or Deleting states. The primary key of this table may, in some embodiments, include a SubscriberId attribute as described above. In some embodiments, this table may be treated as a secondary index to the Tables table. The count of the total number of tables and / or the count of the number of tables in the Creating state may be incremented in response to invoking the CreateTable workflow.
Partitions table: This table may maintain a list of all partitions for a particular table and may indicate their location. The primary key of this table may include a TableId attribute and a PartitionId attribute in some embodiments.
Nodes table: This table may maintain a list of nodes and may indicate the partitions hosted on each of them. The primary key of this table may include a NodeId attribute in some embodiments. In some embodiments, this table may be treated as a secondary index to the Partitions table.
作成されているテーブルのテーブルメタデータを生成するための方法の一実施形態が、図7でフロー図によって図示されている。上記で説明されるように、そのような方法は、ユーザの代わりにテーブルを作成する要求の受信に応答して、データ記憶サービスを実装するシステムによって呼び出されてもよく、要求は、テーブル名および単純または複合一次キーを特定する。テーブル名は、所与のユーザに、または所与の加入者アカウントにわたって一意的であり得る。この実施例で図示されるように、いったん本方法が呼び出されると(710の場合のように)、720の場合のように、テーブルの一意的なテーブル識別子を作成することを含んでもよい。例えば、本システムの構成要素は、システム全体にわたって一意的である、テーブル識別子を作成するように構成されてもよい。この実施例で図示されるように、本方法は、730の場合のように、作成されるであろう区分の数を決定し、対応する区分識別子を作成することを含んでもよい。例えば、本システムの構成要素は、(例えば、ユーザ/加入者またはクライアントアプリケーションの)履歴使用データ、ユーザ/加入者によって提供される将来の使用の推定値、および/またはテーブルに対する区分の適切な数を判定する他の基準を適用するように、ならびにシステム全体にわたって一意的である各区分の区分識別子を作成するように構成されてもよい。   One embodiment of a method for generating table metadata for a table being created is illustrated by the flow diagram in FIG. As described above, such a method may be invoked by a system that implements a data storage service in response to receiving a request to create a table on behalf of a user, where the request is a table name and Identify simple or composite primary keys. The table name may be unique for a given user or across a given subscriber account. As illustrated in this example, once the method is invoked (as in 710), it may include creating a unique table identifier for the table, as in 720. For example, the components of the system may be configured to create a table identifier that is unique across the system. As illustrated in this example, the method may include determining the number of partitions that will be created and creating a corresponding partition identifier, as in 730. For example, the components of the system may include historical usage data (eg, user / subscriber or client application), estimates of future usage provided by the user / subscriber, and / or an appropriate number of partitions for the table. May be configured to apply other criteria for determining as well as to create a partition identifier for each partition that is unique throughout the system.
いくつかの実施形態では、本方法は、740の場合のように、(上記で説明されるもの等の)Tablesテーブルの中で新しいテーブルの入力を作成し、新しいテーブルの状態を「Creation Pending」に設定することを含んでもよい。本方法はまた、750の場合のように、本システムの中で維持されているテーブルの総数のカウント、および/またはCreation Pending状態にある本システムの中のテーブルの数のカウントを増分することを含んでもよい。この実施例で図示されるように、いったんテーブルのメタデータが生成され、1つ以上のメタデータテーブルが新しいテーブルの保留中作成を反映するように更新されると、本方法は、760の場合のように、CreateTableワークフローを呼び出すことを含んでもよい。図8の810で図示されるように、いくつかの実施形態では、テーブル名、テーブル識別子、および/または区分識別子は全て、そのプロセスへの入力としてCreateTableワークフローに伝えられてもよい。これ(および/または本明細書で説明される任意の他のサービス要求)は、accountIDパラメータ等の特定の加入者を識別する入力パラメータを含んでもよいことに留意されたい。そのような実施形態では、この入力パラメータの値は、サービス要求の受信に応答して呼び出される任意のワークフロー(例えば、CreateTableワークフロー)に伝えられてもよい。   In some embodiments, the method creates a new table entry in the Tables table (such as that described above), as in 740, and sets the state of the new table to “Creation Pending”. Setting may be included. The method also includes incrementing a count of the total number of tables maintained in the system and / or a count of the number of tables in the system that are in the Creation Pending state, as in 750. May be included. As illustrated in this example, once the table metadata is generated and one or more metadata tables are updated to reflect the pending creation of the new table, the method Invoking the CreateTable workflow as follows. As illustrated at 810 of FIG. 8, in some embodiments, the table name, table identifier, and / or partition identifier may all be communicated to the CreateTable workflow as input to the process. Note that this (and / or any other service request described herein) may include an input parameter that identifies a particular subscriber, such as an accountID parameter. In such embodiments, the value of this input parameter may be communicated to any workflow that is invoked in response to receiving a service request (eg, a CreateTable workflow).
他の実施形態では、1人以上の記憶システムクライアントの代わりにデータ記憶サービスによって維持されるテーブルのメタデータは、上記で説明される実施例とは異なって組織化されてもよいことに留意されたい。例えば、他の実施形態では、本システムは、この実施例よりも多いまたは少ないメタデータ、および/またはこの実施例で説明されるのとは異なるタイプの異なるメタデータを記憶し得る、より多くの、少ない、または異なるメタデータテーブルを採用してもよい。また、いくつかの実施形態では、テーブルを作成する要求は、それらが受信されたときに待ち行列の中に配置されてもよく、これらのテーブルのメタデータは、しばらく後になるまで(例えば、CreateTableワークフローがテーブル作成を行うように呼び出されるときまで)生成または記憶されなくてもよいことに留意されたい。   It is noted that in other embodiments, table metadata maintained by a data storage service on behalf of one or more storage system clients may be organized differently than the example described above. I want. For example, in other embodiments, the system may store more or less metadata than this example and / or more types of different metadata than described in this example. Fewer or different metadata tables may be employed. Also, in some embodiments, requests to create tables may be placed in a queue when they are received, and the metadata for these tables will remain until some time later (eg, CreateTable). Note that it may not be generated or stored (until the workflow is called to do table creation).
前述のように、本明細書で説明されるデータ記憶サービスを実装するように構成されるシステムは、単純ワークフローサービスを使用して実行される1つ以上のワークフローに依存してもよい。いくつかの実施形態では、CreateTableワークフローは、新しいテーブルに対する1つ以上の区分を割り付け、区分に対してそれぞれ2つ以上の複製を作成し、テーブルの作成に応答して適切なメタデータを更新してもよい。そのようなワークフローの一実施形態は、図8でフロー図によって図示される。ワークフローは、いくつかの実施形態では、自己回復型となることを目的としてもよい。そのような実施形態では、プロセスが完了前に失敗した場合、ワークフロー全体が成功するまで1回以上戻ってもよい。例えば、図8で図示される動作のそれぞれは、失敗に応答して何度も再試行されてもよい。この実施例では、特定テーブル名を有するアクティブなテーブルが存在しないという判定後のみ、ワークフローが呼び出されると仮定されることに留意されたい。   As mentioned above, a system configured to implement the data storage service described herein may rely on one or more workflows performed using a simple workflow service. In some embodiments, the CreateTable workflow allocates one or more partitions for the new table, creates two or more replicas for each partition, and updates the appropriate metadata in response to the table creation. May be. One embodiment of such a workflow is illustrated by the flow diagram in FIG. The workflow may be intended to be self-healing in some embodiments. In such embodiments, if the process fails before completion, it may return one or more times until the entire workflow is successful. For example, each of the operations illustrated in FIG. 8 may be retried many times in response to a failure. Note that in this example, it is assumed that the workflow is invoked only after determining that there is no active table with a particular table name.
この実施例で図示されるように、ワークフローは、820の場合のように、ワークフローが現在、テーブルを作成するように作業しているという事実を反映するように、テーブルの状態を「Creating」に更新することを含んでもよい。いくつかの実施形態では、テーブル状態は、「Creating」にアトミックに更新されてもよい。そのような実施形態では、複数のワークフローが、この同一のテーブル作成動作を行おうとする場合、1つの動作だけが成功し、したがって、この場合、本システムが競合状態を回避することを可能にするであろう。ワークフローはまた、830の場合のように、新しいテーブルに特定されたテーブル名を含む、任意の古い区分が存在するかどうかを判定することを含んでもよい。例えば、このテーブル名を特定する作成動作が過去に試行された(および失敗した)場合、残りのCreateTableワークフローを進める前に削除されるべき残留区分が、本システムに残っていてもよい。いくつかの実施形態では、ワークフローは、このテーブル名と関連付けられる任意の区分についてメタデータ(例えば、Tablesテーブル)に問い合わせることを含んでもよい。例えば、1つ以上のメタデータテーブルの中のテーブルのメタデータを含む、このテーブル名を伴うテーブルを本システムの中で作成するという以前の失敗した試行の残余があってもよい。見出される各区分について、複数の複製があってもよく、これらの複製のそれぞれは、835の場合のように、それらが存在し得る記憶ノードから物理的に削除されてもよい。   As illustrated in this example, the workflow is set to “Creating” to reflect the fact that the workflow is currently working to create the table, as in 820. It may include updating. In some embodiments, the table state may be updated atomically to “Creating”. In such embodiments, if multiple workflows attempt to perform this same table creation operation, only one operation will succeed, thus allowing the system to avoid a race condition in this case. Will. The workflow may also include determining if any old partition exists, including the table name specified in the new table, as in 830. For example, if a create operation that identifies this table name has been attempted (and failed) in the past, there may remain in the system a residual category that should be deleted before proceeding with the remaining CreateTable workflow. In some embodiments, the workflow may include querying metadata (eg, a Tables table) for any partition associated with this table name. For example, there may be a remnant of previous failed attempts to create a table in the system with this table name that includes the metadata of a table in one or more metadata tables. For each partition found, there may be multiple replicas, and each of these replicas may be physically deleted from the storage node where they may exist, as in 835.
特定テーブル名と関連付けられる区分が見出されない場合(例えば、このテーブル作成動作を以前に試行および失敗していない場合)、830からの否定の出口として示され、またはいったんそのような残余が削除されると、ワークフローは、840の場合のように、新しいテーブルに対する1つ以上の区分を作成してもよい。以前に説明されたように、いくつかの実施形態では、作成される区分の数は、ユーザ入力、履歴データ、および/またはシステム全体、クライアント特有、またはアプリケーション特有のデフォルトに基づいてもよい。図8で図示されるように、新しいテーブルに対する区分を作成することは、区分のそれぞれの複数の複製を記憶するノードを選択することと、複数の複製を作成することと、区分メタデータを更新すること(例えば、新たに作成された複製を含むように、およびそれらの場所を示すようにPartitionsテーブルを更新すること)とを含んでもよい。いくつかの実施形態では、複製を記憶するノードを選択することは、複製を記憶することができる健全なノードを発見するようにメタデータに問い合わせることと、種々の好適な割り付けアルゴリズムのうちのいずれかを使用して、複製を健全なノードのうちの種々のノードに割り付けることとを含んでもよい。いくつかの実施形態では、本システムは、限定されないが、最も利用可能な記憶スペースを有するノードを選択すること、最も軽い作業負荷を被るノード(例えば、最も少ないサービス要求を受信するノード)を選択すること、またはランダムにノードを選択すること(全ての新しい区分が最も負荷の軽いノードに進む、群集効果を最小限化し得る)を含む、2つ以上の融通の利く、および/またはプラガブルな割り付けアルゴリズムをサポートしてもよい。   If no partition associated with a particular table name is found (eg, if this table creation operation has not been previously attempted and failed), it is shown as a negative exit from 830, or once such residue is deleted The workflow may then create one or more partitions for the new table, as in 840. As previously described, in some embodiments, the number of partitions created may be based on user input, historical data, and / or system-wide, client-specific, or application-specific defaults. As illustrated in FIG. 8, creating a partition for a new table includes selecting nodes that store multiple copies of each of the partitions, creating multiple replicas, and updating the partition metadata. (E.g., updating the Partitions table to include newly created replicas and to indicate their location). In some embodiments, selecting the node that stores the replica may include querying the metadata to find a healthy node that can store the replica, and any of various suitable allocation algorithms. And assigning replicas to various of the healthy nodes. In some embodiments, the system selects, but is not limited to, the node that has the most available storage space, the node that experiences the lightest workload (eg, the node that receives the least service request). Two or more flexible and / or pluggable allocations, including selecting or randomly selecting nodes (all new partitions go to the lightest loaded node, which can minimize crowd effects) Algorithms may be supported.
図8で図示されるように、CreateTableワークフローは、850の場合のように、(例えば、Nodesテーブルの中で)新たに作成されたテーブルのノード関連メタデータを更新することを含んでもよい。例えば、ワークフローは、(840で更新された)Partitionsテーブルからの新たに作成された複製のノード場所の全てを読み取ることと、新たに作成された複製のそれぞれを、Nodesテーブルの適切な入力に追加することとを含んでもよい。いったんテーブルの区分(およびそれらの複製)が作成され、適切なメタデータが新しいテーブルの作成を反映するように更新されると、ワークフローは、860の場合のように、新たに作成されたテーブルの状態を「Active」に更新することを含んでもよい。いくつかの実施形態では、新たに作成されたテーブルの状態を「Active」に更新することは、上記で説明されるSubscribersテーブルの中でCreating状態にあるテーブルの数のカウントを減少させることを含んでもよい。   As illustrated in FIG. 8, the CreateTable workflow may include updating the node-related metadata of the newly created table (eg, in the Nodes table), as in 850. For example, the workflow reads all the newly created duplicate node locations from the Partitions table (updated at 840) and adds each newly created duplicate to the appropriate entry in the Nodes table. May include. Once the table partitions (and their duplicates) have been created and the appropriate metadata has been updated to reflect the creation of the new table, the workflow can be used for the newly created table, as in 860. It may also include updating the state to “Active”. In some embodiments, updating the state of the newly created table to “Active” includes decreasing the count of the number of tables in the Creating state in the Subscribers table described above. But you can.
上述のように、いくつかの実施形態では、図8で図示される動作のうちのいずれかが失敗した場合、それらは、試行の所定の最大数まで再試行されてもよい。例えば、一実施形態では、成功していない任意のCreateTableワークフローステップが、10回まで再試行されてもよく、試行間の指数関数バックオフを採用してもよい。いくつかの実施形態では、最大数の試行後に、ワークフローステップの完了が成功しなかった場合、作成されているテーブルの状態は、ワークフローが現在、テーブルの作成に取り組んでいないことを示すように、Creation Pendingにリセットされてもよい。そのような場合、本システムは、成功しなかった試行中に作成された任意の残留複製の一掃を行ってもよく、または行わなくてもよい。例えば、いくつかの実施形態では、この一掃は、後続のCreateTableワークフローのために残されてもよい。いくつかの実施形態では、スイーパワークフローが周期的に(例えば、30分ごとに)作動してもよく、現在Creation Pending状態である任意のテーブルがあるかどうかを判定するように、Tablesテーブルをスキャンしてもよい。該当する場合、Tablesテーブルがスイーパワークフローによってスキャンされた最後の時間以来、このテーブルの状態が更新されていない場合、スイーパワークフローは、このテーブルの作成が失敗したと仮定してもよく、テーブルを作成しようとして、新しいCreateTableワークフローを呼び出してもよい。   As described above, in some embodiments, if any of the operations illustrated in FIG. 8 fail, they may be retried up to a predetermined maximum number of attempts. For example, in one embodiment, any unsuccessful CreateTable workflow step may be retried up to 10 times and may employ an exponential backoff between trials. In some embodiments, if the completion of the workflow step is not successful after the maximum number of attempts, the state of the table being created indicates that the workflow is not currently working on creating the table: It may be reset to Creation Pending. In such cases, the system may or may not wipe out any residual replicas created during unsuccessful trials. For example, in some embodiments, this cleanup may be left for a subsequent CreateTable workflow. In some embodiments, the sweeper workflow may run periodically (eg, every 30 minutes) and scans the Tables table to determine if there are any tables that are currently in the Creation Pending state. May be. If applicable, if the status of this table has not been updated since the last time the Tables table was scanned by the sweeper workflow, the sweeper workflow may assume that the creation of this table failed and creates the table. An attempt may be made to call a new CreateTable workflow.
CreateTable APIの使用は、以下の実施例を介して(すなわち、以下の擬似コードによって)例証されてもよい。第1の実施例では、一次キーがハッシュ値「ID」であり、テーブルの中の各ID値が数字でなければならない、「Merchandise」と名付けられたテーブルを作成するように要求が行われる。

CreateTable(‘Merchandise’,array(
‘HashKeyElement’=>array(
‘AttributeName’=>‘ID’,
‘AttributeType’=>NUMBER
)));

The use of the CreateTable API may be illustrated through the following example (ie, by the following pseudo code). In the first example, a request is made to create a table named “Merchandise” where the primary key is the hash value “ID” and each ID value in the table must be a number.

CreateTable ('Merchandise', array (
'HashKeyElement'=> array (
'AttributeName'=>'ID',
'AttributeType'=> NUMBER
)));

第2の実施例では、一次キーが範囲を伴うハッシュキー(すなわち、複合キー)である、「Merchandise」と名付けられたテーブルを作成するように要求が行われる。この実施例では、一次キーは、ハッシュ値「ID」(テーブルの中の各IDが数字でなければならない)を含み、また、「song」の一次キーに追加される範囲も含む(各songが文字列である)。この実施例では、CreateTable APIを使用して、テーブルが作成されることを要求した後、新しいテーブルが作成されてアクティブになるまでサーバにポーリングするように、DescribeTables APIが繰り返し呼び出される。

CreateTable(‘Merchandise’,array(
‘HashKeyElement’=>array(
‘AttributeName’=>‘ID’,
‘AttributeType’=>NUMBER
),
‘RangeKeyElement’=>array(
‘AttributeName’=>‘song’,
‘AttributeType’=>STRING

));
//Poll and sleep until the table is ready,
do{
sleep(3);
status=DescribeTables (array(
‘TableNames’=>‘Merchandise’
));
status=status−>body−>Tables−>to_array();

while(status[0][‘TableStatus’]!==‘ACTIVE’);
In the second example, a request is made to create a table named “Merchandise” where the primary key is a hash key with a range (ie, a composite key). In this example, the primary key includes a hash value “ID” (each ID in the table must be a number), and also includes a range that is added to the primary key of “song” (where each song is String). In this example, after using the CreateTable API to request that a table be created, the DescribableTables API is called repeatedly to poll the server until a new table is created and activated.

CreateTable ('Merchandise', array (
'HashKeyElement'=> array (
'AttributeName'=>'ID',
'AttributeType'=> NUMBER
),
'RangeKeyElement'=> array (
'AttributeName'=>'song',
'AttributeType'=> STRING
)
));
// Poll and sleep unit the table is ready,
do {
sleep (3);
status = DescribeTables (array (
'TableNames'=>'Merchandise'
));
status = status->body->Tables-> to_array ();
}
while (status [0] ['TableStatus']! == 'ACTIVE');
いくつかの実施形態では、記憶サービスクライアント(例えば、サービスへのアクセスがあるユーザ、加入者、またはクライアントアプリケーション)は、複数のテーブルを作成することができてもよい。いくつかのそのような実施形態では、本システムは、クライアントが作成することができるテーブルの数に所定の制限を課してもよい。そのような制限は、増大プロセスが非意図的に多数のテーブルを作成する可能性から、システムおよび/またはクライアント/ユーザを保護してもよい。そのような制限が採用される、いくつかの実施形態では、それは、(例えば、上記で説明されるような管理コンソールを介して)システム管理者または他の特権ユーザによって無効にされてもよい。いくつかの実施形態では、全てのテーブルは、ルートユーザ(例えば、テーブル所有者または他の特権ユーザ)によって所有されてもよく、このルートユーザは、他のユーザ(例えば、サブユーザ)による種々のテーブルへの動作を有効にする、および/または制限するように、APIレベル許可をこれらのテーブルに割り当てることができてもよい。例えば、いくつかの実施形態では、個別ユーザは、user={root|sub−user}のように、ルートユーザ識別子およびサブユーザ識別子の組み合わせによって定義されてもよい。いくつかの実施形態では、アクセス制御フィルタが、テーブルレベルに加えて、またはその代わりに、アイテムレベルで、および/または属性レベルで定義されてもよい。   In some embodiments, a storage service client (eg, a user, subscriber, or client application with access to a service) may be able to create multiple tables. In some such embodiments, the system may impose a predetermined limit on the number of tables that a client can create. Such a limitation may protect the system and / or client / user from the possibility that the augmentation process unintentionally creates a large number of tables. In some embodiments where such restrictions are employed, it may be overridden by a system administrator or other privileged user (eg, via a management console as described above). In some embodiments, all tables may be owned by a root user (e.g., table owner or other privileged user), and this root user may be different by other users (e.g., sub-users). It may be possible to assign API level permissions to these tables to enable and / or restrict operations on the tables. For example, in some embodiments, an individual user may be defined by a combination of a root user identifier and a sub-user identifier, such as user = {root | sub-user}. In some embodiments, access control filters may be defined at the item level and / or at the attribute level in addition to or instead of the table level.
種々の実施形態では、DeleteTable APIが、テーブルおよびそのインデックスの全てを削除するために使用されてもよい。いくつかの実施形態では、DeleteTable APIの標的であるテーブルを削除する要求が、記憶サービスクライアントの代わりに受信されたときに、そのテーブルがCreating状態である場合、サービスは、エラーの指示に戻ってもよい(例えば、400「ResourceInUse」エラー指示)。要求が受信されたときにテーブルがActive状態である場合、サービスは、即時に(すなわち、ワークフローが完了するのを待つことなく)戻る非同期DeleteTableワークフローをトリガしてもよい(および/またはサービスを実装する基礎的システムが呼び出してもよい)。そのような実施形態では、ワークフローの成功は、DescribeTables APIを介してテーブルの状態をチェックすることによって、後に判定されてもよい。例えば、DescribeTables要求に応答して返されるテーブルの状態の指示が「Deleting」である場合には、削除動作が進行中であってもよい。いくつかの実施形態では、この場合、いかなるエラー指示も返されないであろう。いったん削除プロセスが完了すると、DescribeTables要求への応答は、削除されたテーブルに対する入力をもはや含まなくてもよい。   In various embodiments, the DeleteTable API may be used to delete a table and all of its indexes. In some embodiments, when a request to delete a table that is the target of a DeleteTable API is received on behalf of a storage service client, if the table is in the Creating state, the service returns to the error indication. (E.g., a 400 “ResourceInUse” error indication). If the table is in the Active state when the request is received, the service may trigger an asynchronous DeleteTable workflow to return immediately (ie, without waiting for the workflow to complete) (and / or implement the service) May be called by the underlying system). In such an embodiment, the success of the workflow may be determined later by checking the state of the table via the DescribeTables API. For example, when the instruction of the table state returned in response to the RequestTables request is “Deleting”, the deletion operation may be in progress. In some embodiments, no error indication will be returned in this case. Once the deletion process is complete, the response to the DescribingTables request may no longer include an entry for the deleted table.
いくつかの実施形態では、DeleteTable APIの入力パラメータは、TableName(削除されるテーブルの名前を含む文字列であり得る)を含んでもよい。いくつかの実施形態では、DeleteTable APIの出力パラメータは、TableName(例えば、削除されているテーブルの名前を含む文字列)、TableStatus(例えば、値「Deleting」を有する文字列)、KeySchema(例えば、一次キーを記述する配列)、およびDateCreated(テーブルが作成された日付および/または時間を示す、文字列または数字であり得る)を含んでもよい。上記で説明されるように、いくつかの実施形態では、KeySchemaは、単純または複合一次キーを記述する配列を含んでもよい。例えば、単純一次キーが、単一のハッシュキーを含んでもよい一方で、複合キーは、ハッシュおよび範囲キーを含んでもよい。一実施形態では、一次キーのインデックスタイプは、HASHまたはRANGEであってもよく、一次キーの各属性は、名前(属性の名前を含む文字列であり得る)、属性値のデータタイプ(例えば、NまたはS)、および属性値を含んでもよい。前述のように、DeleteTable要求および/または応答は、異なる実施形態では、JSON要求/応答形式または別の好適な形式で提示されてもよい。DeleteTable APIに対応する、データ記憶サービスへの要求およびデータ記憶サービスから受信される応答の実施例が、一実施形態に従って以下で見出される。

要求形式例:

DeleteTable{
“TableName”:“Pictures”



応答形式例:

“TableName”:“Pictures”,
“TableStatus”:“Deleting”,
“KeySchema”:[
{“Name”=“ImageID”,
“IndexType”=HASH,
“DataType”=“N”

],
“DateCreated”:“20100101T05:05:05Z”

In some embodiments, the DeleteTable API input parameter may include a TableName (which may be a string containing the name of the table to be deleted). In some embodiments, the DeleteTable API output parameters are: TableName (eg, a string containing the name of the table being deleted), TableStatus (eg, a string with the value “Deleting”), KeySchema (eg, primary) An array describing the keys), and DateCreated (which can be a string or number indicating the date and / or time the table was created). As described above, in some embodiments, KeySchema may include an array describing a simple or composite primary key. For example, a simple primary key may include a single hash key, while a composite key may include a hash and a range key. In one embodiment, the primary key index type may be HASH or RANGE, each attribute of the primary key may be a name (which may be a string containing the name of the attribute), an attribute value data type (eg, N or S), and attribute values. As described above, the DeleteTable request and / or response may be presented in a JSON request / response format or another suitable format in different embodiments. An example of a request to a data storage service and a response received from the data storage service corresponding to the DeleteTable API is found below according to one embodiment.

Example request format:
{
DeleteTable {
“TableName”: “Pictures”
}
}

Example response format:
{
“TableName”: “Pictures”,
“Table Status”: “Deleting”,
“Key Schema”: [
{“Name” = “ImageID”,
“IndexType” = HASH,
“DataType” = “N”
}
],
“DateCreated”: “20100101T05: 05: 05Z”
}
種々の実施形態では、DescribeTables APIは、所与の記憶サービスクライアントに属するテーブルに関する情報を列挙する(例えば、リストにする)ために使用されてもよい。例えば、ユーザに属するテーブルを記述する要求を、そのユーザの代わりに受信することに応答して、データ記憶システムは、一次キー情報および/または要求において特定される任意のテーブル、あるいは(何も特定されていない場合)そのユーザに属する全てのテーブルの状態を返してもよい。いくつかの実施形態では、DescribeTables APIの入力パラメータは、TableNamesパラメータ(説明されるテーブルの名前を含む文字列のリストであり得る)、および/またはLastTableNameパラメータ(応答に含むことができるテーブルの数への所定の制限を超えた場合に、そこからテーブル情報をリストにし続けるテーブルの名前を含む文字列であり得る)を含んでもよい。例えば、いくつかの実施形態では、返されるテーブルの数が所定の制限を超える場合、クエリが早く(すなわち、要求によって標的にされるテーブルの全てを記述することなく)終了されてもよく、クエリによって考慮される最後のテーブルの名前が返されてもよい。そのような実施形態では、この最後のテーブル名は、その点から進んでクエリを続けるために、後に使用されてもよい。いくつかの実施形態では、TableNamesパラメータが空白である(または別様に特定されていない)場合、ユーザに属する全てのテーブルは、DescribeTables要求への1つ以上の応答において記述されてもよい。   In various embodiments, the DescribableTables API may be used to enumerate (eg, list) information about tables belonging to a given storage service client. For example, in response to receiving a request describing a table belonging to a user on behalf of that user, the data storage system may identify any table specified in the primary key information and / or request, or (nothing specified) If not, the statuses of all tables belonging to the user may be returned. In some embodiments, the input parameter of the DescribableTables API is a TableNames parameter (which can be a list of strings containing the names of the tables described), and / or a LastTableName parameter (to the number of tables that can be included in the response). Or a character string including the name of the table from which the table information is listed when the predetermined limit is exceeded. For example, in some embodiments, if the number of tables returned exceeds a predetermined limit, the query may be terminated early (ie, without describing all of the tables targeted by the request) The name of the last table considered by may be returned. In such an embodiment, this last table name may be used later to proceed from that point and continue with the query. In some embodiments, if the TableNames parameter is blank (or not otherwise specified), all tables belonging to the user may be described in one or more responses to the DescribingTables request.
いくつかの実施形態では、DescribeTables APIの出力パラメータは、Tablesパラメータ(それらのテーブルのそれぞれに関する情報とともに、所与のユーザによって所有されるテーブルのリストを含み得る)、および/またはLastTableNameパラメータ(単一のDescribeTables呼び出しに応答して情報を返すことができる、テーブルの最大数をテーブルの数が超える場合、情報が返された最後のテーブルの名前を示し得る)を含んでもよい。いくつかの実施形態では、応答においてリストにされる各テーブルについて、TableName(例えば、テーブルの名前を含む文字列)、TableStatus(例えば、「Creating」、「Active」、または「Deleting」という値を有する文字列)、KeySchema(例えば、一次キーを記述する配列)、およびDateCreated(テーブルが作成された日付および/または時間を示す、文字列または数字であり得る)といった、情報のうちのいずれかまたは全てが含まれてもよい。上記で説明されるように、いくつかの実施形態では、KeySchemaは、単純または複合一次キーを記述する配列を含んでもよい。例えば、単純一次キーが、単一のハッシュキーを含んでもよい一方で、複合キーは、ハッシュおよび範囲キーを含んでもよい。一実施形態では、一次キーのインデックスタイプは、HASHまたはRANGEであってもよく、一次キーの各属性は、名前(属性の名前を含む文字列であり得る)、属性値のデータタイプ(例えば、NまたはS)、および属性値を含んでもよい。いくつかの実施形態では、DescribeTables要求で特定されるテーブルのうちの1つ以上が存在しない場合、エラー指示(例えば、400「ResourceNotFound」エラー指示)が、要求に応答して返されてもよい。データ記憶サービスによって提供される他のAPIと同様に、DescribeTables要求および/または応答は、異なる実施形態では、JSON要求/応答形式または別の好適な形式で提示されてもよい。DescribeTables APIに対応する、データ記憶サービスへの要求およびデータ記憶サービスから受信される応答の実施例が、一実施形態に従って以下で見出される。

要求形式例:

DescribeTables{
“TableNames”:[]



応答形式例:
{“Tables”:[{
“TableName”:“Pictures”,
“TableStatus”:“Deleting”,
“KeySchema”:[
{“Name”=“ImageID”,
“IndexType”=HASH,
“DataType”=“N”

],
“DateCreated”:“20100101T05:05:05Z”}]

In some embodiments, the output parameters of the DescribingTables API include Tables parameters (which may include a list of tables owned by a given user, along with information about each of those tables), and / or LastTableName parameters (single Information may be returned in response to a DescribbleTables call, which may indicate the name of the last table for which information was returned if the number of tables exceeds the maximum number of tables). In some embodiments, for each table listed in the response, it has a value of TableName (eg, a string containing the name of the table), TableStatus (eg, “Creating”, “Active”, or “Deleting”). Any or all of the following information: string), KeySchema (eg, an array describing the primary key), and DateCreated (which can be a string or a number indicating the date and / or time the table was created) May be included. As described above, in some embodiments, KeySchema may include an array describing a simple or composite primary key. For example, a simple primary key may include a single hash key, while a composite key may include a hash and a range key. In one embodiment, the primary key index type may be HASH or RANGE, each attribute of the primary key may be a name (which may be a string containing the name of the attribute), an attribute value data type (eg, N or S), and attribute values. In some embodiments, an error indication (eg, a 400 “ResourceNotFound” error indication) may be returned in response to the request if one or more of the tables identified in the DescriptionTables request do not exist. Like other APIs provided by the data storage service, the DescribableTables request and / or response may be presented in a JSON request / response format or another suitable format in different embodiments. An example of a request to a data storage service and a response received from the data storage service, corresponding to the DescribingTables API, is found below according to one embodiment.

Example request format:
{
DescribeTables {
“TableNames”: []
}
}

Example response format:
{"Tables": [{
“TableName”: “Pictures”,
“Table Status”: “Deleting”,
“Key Schema”: [
{“Name” = “ImageID”,
“IndexType” = HASH,
“DataType” = “N”
}
],
“DateCreated”: “201001101T05: 05: 05Z”}]
}
上述のように、本明細書で説明されるデータ記憶サービス(および/または基礎的システム)は、PutItem API、GetItem API、DeleteItem API、および/またはUpdateItem API等のアイテムレベルの動作、ならびにQuery APIおよび/またはScan API等のテーブルの中の複数のアイテムにわたって1つ以上のインデックスベースの模索/横断動作を行うための種々のデータプレーンAPIを提供してもよい。   As described above, the data storage services (and / or underlying systems) described herein include item level operations such as the PutItem API, GetItem API, DeleteItem API, and / or UpdateItem API, as well as the Query API and Various data plane APIs may be provided for performing one or more index-based search / transverse operations across multiple items in a table, such as a Scan API.
いくつかの実施形態では、PutItem APIが、テーブルの中に新しい(単一の)アイテムを挿入するために使用されてもよい。いくつかの実施形態では、このAPIは、条件付きput動作を行うために使用されてもよい。例えば、それは、(一次キーの特定値に従って)テーブルの中にまだ存在していない場合に、そのテーブルの中にアイテムを挿入するために、またはある属性値(例えば、特定一次キー)を有する場合に、テーブルの中の既存の単一のアイテムを置換するために、使用されてもよい。より具体的には、いくつかの実施形態では、このAPIは、(一次キーを除く)既存のアイテムの属性の全てを新しい属性と完全に置換して、「新しい」アイテムを作成するために使用されてもよい。そのような実施形態では、データ記憶システムは、この置換動作がアトミックに行われることを保証してもよい。言い換えれば、本システムは、その新しい属性の全てのみとともに、またはその以前の属性の全てとともに、アイテムが観察可能であり、中間状態では(例えば、以前の属性および新しい属性の混合とともに)観察可能ではないことを保証する方法で、置換動作を行ってもよい。いくつかの実施形態では、PutItem APIは、条件付きのput動作が特定されていない場合、冪等APIであってもよい。言い換えれば、PutItem APIの非条件付き形態を使用して行われる要求は、たとえ同一の入力パラメータ値を用いて複数回呼び出されたとしても、テーブルの中に特定された新しいアイテムを正確に1回挿入してもよい。   In some embodiments, the PutItem API may be used to insert a new (single) item into the table. In some embodiments, this API may be used to perform conditional put operations. For example, if it does not already exist in the table (according to the specific value of the primary key), or to have an attribute value (eg a specific primary key) to insert an item into that table May be used to replace an existing single item in the table. More specifically, in some embodiments, this API is used to create a “new” item by completely replacing all of the attributes of an existing item (except the primary key) with the new attribute. May be. In such embodiments, the data storage system may ensure that this replacement operation is performed atomically. In other words, the system can observe an item with all of its new attributes, or with all of its previous attributes, and not in an intermediate state (eg, with a mix of previous and new attributes). The replacement operation may be performed in a manner that guarantees that there is not. In some embodiments, the PutItem API may be an idempotent API if a conditional put action is not specified. In other words, a request made using the unconditional form of the PutItem API will cause the new item identified in the table to be called exactly once, even if called multiple times with the same input parameter value. It may be inserted.
いくつかの実施形態では、PutItem APIの入力パラメータは、TableName(アイテムを挿入または置換するテーブルの名前を含む文字列であり得る)、Itemパラメータ(1つ以上の属性名をそれぞれの属性値にマップし得る)、Expectedパラメータ(条件付きPutのそれぞれの属性値への属性名のマッピングを特定し得る)、および/またはReturnValuesパラメータ(該当する場合、動作の結果としてどの値が返されるべきかを示す文字列、例えば、「None」、「All_Old」、または「All_New」であり得る)を含んでもよい。いくつかの実施形態では、「None」というReturnValuesパラメータ値が特定された場合、このAPIの戻り値がなくてもよい。「All_Old」というReturnValuesパラメータ値が特定された場合、このAPIは、PutItem動作によって上書きされたアイテムの以前のコンテンツを返してもよい。「All_New」というReturnValuesパラメータ値が特定された場合、このAPIは、PutItem動作に続いて、アイテムのコンテンツを返してもよい。いくつかの実施形態では、Itemパラメータに含まれるマッピングは、特定されたテーブルに定義されるような一次キー属性(複数可)を含有しなければならないことに留意されたい。いくつかの実施形態では、Expectedパラメータに含まれる各属性は、ExpectedAttributeValue(値「Exists」または「Value」を有する文字列であり得る)、AttributeValue(状態の評価で使用される属性の値を示し得る、あるいは空白またはヌル値を有し得る)、および/またはExistsパラメータ(評価される条件が、Expectedパラメータに含まれる属性が、既存のアイテムに対して現在特定されているかどうかであることを示し得る)を含んでもよい。この実施例では、ExpectedAttributeValueが「Value」に設定された場合、値がAttributeValueに供給されなければならない一方で、ExpectedAttributeValueが「Exists」に設定された場合、AttributeValueは、空値または空白となるべきである。PutItem APIを介して要求において特定される条件が満たされない場合(例えば、1つ以上の属性の期待値が、テーブルに記憶されているものと合致しない場合)、エラー指示(例えば、ConditionalCheckFailed)が、データ記憶システムによって返されてもよい。   In some embodiments, the PutItem API input parameters are TableName (which can be a string containing the name of the table into which the item is inserted or replaced), Item parameters (one or more attribute names mapped to their respective attribute values) ), Expected parameter (which may specify the mapping of the attribute name to each attribute value of the conditional Put), and / or ReturnValues parameter (if applicable, indicating what value should be returned as a result of the action) May be a string, for example, “None”, “All_Old”, or “All_New”). In some embodiments, if a ReturnValues parameter value of “None” is specified, there may be no return value for this API. If a ReturnValues parameter value of “All_Old” is specified, this API may return the previous content of the item overwritten by the PutItem operation. If a ReturnValues parameter value of “All_New” is specified, this API may return the content of the item following the PutItem operation. Note that in some embodiments, the mapping included in the Item parameter must contain the primary key attribute (s) as defined in the identified table. In some embodiments, each attribute included in the Expected parameter may indicate an ExpectedAttributeValue (which can be a string with the value “Exists” or “Value”), AttributeValue (the value of the attribute used in the state evaluation) Or may have a blank or null value), and / or the Exists parameter (the condition being evaluated may indicate whether the attribute contained in the Expected parameter is currently specified for an existing item) ) May be included. In this example, if ExpectedAttributeValue is set to "Value", a value must be supplied to AttributeValue, while if ExpectedAttributeValue is set to "Exists", Attribute should be empty or AttributeV. is there. If the condition specified in the request via the PutItem API is not met (eg, the expected value of one or more attributes does not match what is stored in the table), an error indication (eg, ConditionalCheckFailed) It may be returned by the data storage system.
PutItem要求は、異なる実施形態では、JSON要求形式または別の好適な形式で提示されてもよい。以下は、アイテムがデータ投入された「Tags」フィールドをまだ含有しないという条件下のみで、テーブルの中にアイテムを記憶するPutItem要求の実施例である。本質的に、この実施例は、Put−If−Absentセマンティックスを用いたput動作を図示する。

要求形式例:

PutItem{
“TableName”:“Pictures”,
“Item”:{
“PictureId”:{“S”:“pic123”},
“Title”:{“S”:“Sun Flower”},
“Tags”:{“SS”:[“Flower”,“Sun”]}

“Expected”:{
“Tags”:{“Exists”:false}},

“ReturnValues”:“All_Old”


The PutItem request may be presented in a JSON request format or another suitable format in different embodiments. The following is an example of a PutItem request that stores an item in a table only under the condition that the item does not yet contain a populated “Tags” field. In essence, this example illustrates a put operation using Put-If-Absent semantics.

Example request format:
{
PutItem {
“TableName”: “Pictures”,
“Item”: {
“PictureId”: {“S”: “pic123”},
“Title”: {“S”: “Sun Flower”},
“Tags”: {“SS”: [“Flower”, “Sun”]}
}
“Expected”: {
“Tags”: {“Exists”: false}},
}
“ReturnValues”: “All_Old”
}
}
いくつかの実施形態では、PutItem APIの出力パラメータは、Attributesパラメータ(1つ以上の属性名をそれぞれの値にマップし得る)を含んでもよい。上記の実施例では、このマッピングは、入力パラメータReturnValuesが「None」ではないときにのみ返されてもよい。以下は、ReturnValuesが「All_Old」として特定される、PutItem要求に対応する、データ記憶サービスから受信される応答の実施例である。


応答形式例:

“Attributes”:{
“PictureId”:{“S”:“pic123”},
“Title”:{“S”:“Sun Flower”}


In some embodiments, the output parameters of the PutItem API may include Attributes parameters (one or more attribute names may be mapped to respective values). In the above example, this mapping may be returned only when the input parameter ReturnValues is not “None”. The following is an example of a response received from a data storage service corresponding to a PutItem request with ReturnValues identified as “All_Old”.


Example response format:
{
“Attributes”: {
“PictureId”: {“S”: “pic123”},
“Title”: {“S”: “Sun Flower”}
}
}
PutItem APIの使用は、以下の実施例を介して(すなわち、以下の擬似コードによって)さらに例証されてもよい。第1の実施例では、一次キーがハッシュ値「ID」である、「my−table2」と名付けられたテーブルに新しいアイテムを追加するように、要求が行われる。この実施例では、アイテムは、(番号である)ID値と、追加の属性Category、Subcategory、Color、およびSize(それぞれが1つ以上の文字列を特定する)の値とを含む。

PutItem(‘my−table 2’,array(
‘ID’=>array(NUMBER=>1), //Primary Key
‘Category’=>array(STRING=>‘Clothes’),
‘Subcategory’=>array(STRING=>‘Sweater’),
‘Color’=>array(STRING=>‘Blue’),
‘Size’=>array(ARRAY_OF_STRINGS=>array(‘Medium’,‘Large’)),
));
The use of the PutItem API may be further illustrated through the following examples (ie, by the following pseudo code). In the first example, a request is made to add a new item to the table named “my-table2” whose primary key is the hash value “ID”. In this example, the item includes an ID value (which is a number) and a value for additional attributes Category, Subcategory, Color, and Size (each identifying one or more strings).

PutItem ('my-table 2', array (
'ID'=> array (NUMBER => 1), // Primary Key
'Category'=> array (STRING =>'Clothes'),
'Subcategory'=> array (STRING =>'Sweeater'),
'Color'=> array (STRING =>'Blue'),
'Size'=> array (ARRAY_OF_STRINGS => array ('Medium', 'Large')),
));
第2の実施例では、PutItem APIを使用して、既存のアイテムを置換するように要求が行われる。この実施例では、既存のアイテム(一次キー値ID=1を有するアイテム)を、新しい属性を有するアイテムと置換するように要求が行われる。ReturnValuesパラメータを「All_Old」に設定することによって、この要求は、アイテムの古い属性が返されるべきであると特定することに留意されたい。

PutItem(‘my−table2’,array(
‘ID’=>array(NUMBER=>1), //Primary Key
‘Category’=>array(STRING=>‘Tools’),
‘Subcategory’=>array(STRING=>‘Shovel’),
),array(
‘ReturnValues’=>All_Old));
In the second example, a request is made to replace an existing item using the PutItem API. In this example, a request is made to replace an existing item (an item having a primary key value ID = 1) with an item having a new attribute. Note that by setting the ReturnValues parameter to “All_Old”, this request specifies that the old attribute of the item should be returned.

PutItem ('my-table2', array (
'ID'=> array (NUMBER => 1), // Primary Key
'Category'=> array (STRING =>'Tools'),
'Subcategory'=> array (STRING =>'Shovel'),
), Array (
'ReturnValues'=>All_Old));
種々の実施形態では、DeleteItem APIが、テーブルの中の単一のアイテムを削除するために使用されてもよく、アイテムは、その一次キーによって識別される。いくつかの実施形態では、このAPIは、条件付きdelete動作を行うために使用されてもよい。例えば、それは、存在する場合、またはある属性値(例えば、特定一次キー以外の特定の属性値)を有する場合に、アイテムを削除するために使用されてもよい。いくつかの実施形態では、DeleteItem APIは、条件付きput動作が特定されていない場合、冪等APIであってもよい。言い換えれば、DeleteItem APIの非条件付き形態を使用して行われる要求は、たとえ同一の入力パラメータ値を用いて複数回呼び出されたとしても、本システムに、テーブルの中の特定された新しいアイテムを正確に1回削除させてもよい。これらおよび他の実施形態では、存在しないアイテムを削除しようとすることが、エラー状態をもたらさなくてもよく、かつエラー状態を返さなくてもよい。   In various embodiments, the DeleteItem API may be used to delete a single item in the table, and the item is identified by its primary key. In some embodiments, this API may be used to perform a conditional delete operation. For example, it may be used to delete an item if it exists or if it has a certain attribute value (eg, a specific attribute value other than a specific primary key). In some embodiments, the DeleteItem API may be an idempotent API if a conditional put action is not specified. In other words, requests made using the unconditional form of the DeleteItem API will cause the system to identify the new item identified in the table, even if it is called multiple times with the same input parameter value. You may delete exactly once. In these and other embodiments, attempting to delete an item that does not exist may not result in an error condition and may not return an error condition.
いくつかの実施形態では、DeleteItem APIの入力パラメータは、TableName(アイテムを削除するテーブルの名前を含む文字列であり得る)、Key(削除されるアイテムを識別する単純/単一または複合一次キーを特定し得る)、Expectedパラメータ(条件付き削除のそれぞれの属性値への属性名のマッピングを特定し得る)、および/またはReturnValues(該当する場合、動作の結果としてどの値が返されるべきかを示す文字列、例えば、「None」、「All_Old」であり得る)を含んでもよい。いくつかの実施形態では、「None」というReturnValuesパラメータ値が特定された場合、このAPIの戻り値がなくてもよい。「All_Old」というReturnValuesパラメータ値が特定された場合、このAPIは、この動作によって削除されたアイテムのコンテンツを返してもよい。例えば、「All_Old」が特定された場合、このAPIの出力パラメータは、Attributesパラメータ(削除されたアイテムの属性の全てについて、属性名とそれらのそれぞれの値との間のマッピングを含み得る)を含んでもよい。いくつかの実施形態では、Expectedパラメータに含まれる各属性は、ExpectedAttributeValue(値「Exists」または「Value」を有する文字列であり得る)、AttributeValue(属性の値を示し得る、あるいは空白またはヌル値を有し得る)、および/またはExistsパラメータ(評価される条件が、Expectedパラメータに含まれる属性が、既存のアイテムに対して現在特定されているかどうかであることを示し得る)を含んでもよい。DeleteItem APIを介して要求において特定される条件が満たされない場合(例えば、1つ以上の属性の期待値が、テーブルに記憶されているものと合致しない場合)、エラー指示(例えば、ConditionalCheckFailed)が、データ記憶システムによって返されてもよい。いくつかの実施形態では、DeleteItem要求および/または応答は、異なる実施形態では、JSON要求/応答形式または別の好適な形式で提示されてもよい。DeleteItem APIに対応する、アイテムを除去する要求およびデータ記憶サービスから受信される応答の実施例が、一実施形態に従って以下で見出される。

要求形式例:

DeleteItem:{
“TableName”:“Pictures”,
“Key”:[l,“picture−id”],
“Expected”:{
“Title”:{“AttributeValue”:{“S”:“flower”}}



応答形式例:

“Attributes”:{
“CustomerId”:{“N”:1},
“PictureId”:{“S”:“picture−id”},
“Title”:{“S”:“flower”}

In some embodiments, the DeleteItem API input parameters are TableName (which can be a string containing the name of the table from which the item is deleted), Key (a simple / single or composite primary key identifying the item to be deleted). ), Expected parameter (which may specify the mapping of the attribute name to each attribute value of the conditional delete), and / or ReturnValues (if applicable, indicating what value should be returned as a result of the action) A character string (eg, “None”, “All_Old”). In some embodiments, if a ReturnValues parameter value of “None” is specified, there may be no return value for this API. If a ReturnValues parameter value of “All_Old” is specified, this API may return the content of the item deleted by this operation. For example, if “All_Old” is specified, the output parameters of this API include Attributes parameters (which may include a mapping between attribute names and their respective values for all of the deleted item's attributes). But you can. In some embodiments, each attribute included in the Expected parameter is an ExpectedAttributeValue (which may be a string with the value “Exists” or “Value”), AttributeValue (which may indicate the value of the attribute, or a blank or null value). And / or Exists parameters (the condition being evaluated may indicate whether the attribute contained in the Expected parameter is currently specified for an existing item). If the conditions specified in the request via the DeleteItem API are not met (eg, the expected value of one or more attributes does not match that stored in the table), an error indication (eg, ConditionalCheckFailed) It may be returned by the data storage system. In some embodiments, the DeleteItem request and / or response may be presented in a JSON request / response format or another suitable format in different embodiments. An example of a request to remove an item and a response received from a data storage service corresponding to the DeleteItem API is found below according to one embodiment.

Example request format:
{
DeleteItem: {
“TableName”: “Pictures”,
“Key”: [l, “picture-id”],
“Expected”: {
“Title”: {“AttributeValue”: {“S”: “flower”}}
}
}
}
Example response format:
{
“Attributes”: {
“CustomerId”: {“N”: 1},
“PictureId”: {“S”: “picture-id”},
“Title”: {“S”: “flower”}
}
}
上記で図示される実施例では、要求が、ReturnValuesパラメータ値を特定しなかったが、古い属性値が返されたことに留意されたい。これは、ReturnValuesパラメータのデフォルト値が「All_Old」である、実施形態を図示する。他の実施形態では、このパラメータのデフォルト値は、異なる値(例えば、「All_New」または「None」)であってもよく、またはこのパラメータのデフォルト値がなくてもよい(すなわち、それが強制入力パラメータであってもよい)。   Note that in the example illustrated above, the request did not specify a ReturnValues parameter value, but the old attribute value was returned. This illustrates an embodiment where the default value of the ReturnValues parameter is “All_Old”. In other embodiments, the default value for this parameter may be a different value (eg, “All_New” or “None”) or there may be no default value for this parameter (ie, it is a forced input). Parameter).
種々の実施形態では、GetItems APIは、それらの一次キーを考慮して、1つ以上のアイテムを読み出すために(すなわち、これらのアイテムの1つ以上の属性を返すために)使用されてもよい。いくつかの実施形態では、単一のGetItems要求に応答して読み出すことができるアイテムの数は、制限されてもよく、および/または読み出されるアイテムは全て、同一のテーブルの中に記憶されなければならない。例えば、一実施形態では、最大8つのアイテムの属性が、単一のGetItems要求に応答して返されてもよい。いくつかの実施形態では、複数のアイテムが、並行してテーブルから読み出されてもよく、それが待ち時間を最小限化し得る。データ記憶サービス(および/または基礎的システム)は、種々の実施形態では、(待ち時間罰則を伴わずに)投影および/または一貫した読み取りをサポートしてもよい。いくつかの実施形態では、本システムは、デフォルトで最終的な一貫性モデルをサポートしてもよく、それが、要求を果たすためのより高いスループットをもたらし得る。複数のアイテムが単一のGetItems要求において要求される、いくつかの実施形態では、標的テーブルの中に存在しないアイテムは、返されないであろう。この場合、要求されたアイテムのうちの1つ以上が返されなかったことを示すように返される、任意のエラーメッセージがあってもよく、またはなくてもよい。   In various embodiments, the GetItems API may be used to retrieve one or more items (ie, to return one or more attributes of these items) considering their primary key. . In some embodiments, the number of items that can be read in response to a single GetItems request may be limited and / or all items to be read must be stored in the same table. Don't be. For example, in one embodiment, attributes of up to eight items may be returned in response to a single GetItems request. In some embodiments, multiple items may be read from the table in parallel, which may minimize latency. Data storage services (and / or underlying systems) may support projection and / or consistent reading (without latency penalties) in various embodiments. In some embodiments, the system may support a final consistency model by default, which may result in higher throughput to fulfill the request. In some embodiments where multiple items are requested in a single GetItems request, items that are not in the target table will not be returned. In this case, there may or may not be any error message returned to indicate that one or more of the requested items were not returned.
いくつかの実施形態では、GetItems APIの入力パラメータは、TableName(アイテムを削除するテーブルの名前を含む文字列であり得る)、Keysパラメータ(読み出されるアイテムを識別する単純/単一または複合一次キーのリストを特定し得る)、AttributesToGetパラメータ(文字列としての属性名の配列であり得る)、および/またはConsistentReadパラメータ(一貫した読み取りが発行されるであろうかどうかを示すブール値であり得る)を含んでもよい。いくつかの実施形態では、いかなる属性も特定されていない場合には、識別されたアイテムに定義されている全ての属性値が返されてもよい。いくつかの実施形態では、特定された属性のうちのいずれかの値が見出されない場合、対応する属性名が、結果の中に現れないであろう。いくつかの実施形態では、ConsistentReadパラメータが真に設定された場合、一貫した読み取り動作が発行されるであろう。そうでなければ、最終的に一貫した読み取り動作が行われるであろう。いくつかの実施形態では、厳密に一貫した読み取り(例えば、ConsistentReadパラメータの値が真である読み取り)が、所与の複製グループのマスタを対象としてもよい一方で、最終的な一貫性を用いて行われる読み取りは、所与の複製グループの複製のうちのいずれかを対象としてもよいことに留意されたい。前述のように、単一のGetItems要求に応答して読み取ることができるアイテムの数は、いくつかの実施形態では、所定の数に限定されてもよい。GetItems APIの出力パラメータは、それぞれが要求された属性およびそれらの値(アイテムにいずれかの値が特定されている、すなわち、空白ではない場合)のマップを含む、アイテムの配列であり得る、Itemsパラメータを含んでもよい。いくつかの実施形態では、配列の中のアイテムは、任意の特定の方法で順序付けられていなくてもよいことに留意されたい。そのような実施形態では、要求された属性のリストの中に一次キーを含むことにより、各読み出されたアイテムに対応する属性を識別する、および/または要求されたアイテムのうちのどれが見出されて読み出されたか(および/または見出されて読み出されていないか)を判定する方法を提供してもよい。いくつかの実施形態では、このAPIに特異的に定義されたエラー指示がなくてもよいが、表9に記載され、本明細書で説明されるエラー指標のうちの1つ以上が適用されてもよい。GetItems APIを使用して、いくつかのアイテムを読み出す要求、およびその要求に対応するデータ記憶サービスから受信される応答の実施例が、一実施形態に従って以下で見出される。

要求形式例:

GetItems{
“TableName”:“Pictures”,
“Keys”:[[“image123”],[“image456”],[“image789”]],
“AttributesToGet”:[“ImageID”,“Title”,“Tags”],
“ConsistentRead”:true

応答形式例:

“Items”:[
{“ImageId”:{“S”:“image123”},“Title”:{“S”:“sun flower”},“Tags”:{“SS”:[“flower”]}},
{“ImageId”:{“S”:“image456”},“Title”:{“S”:“jasmine flower”},“Tags”:{“SS”:[“flower”,“jasmine”]}}


In some embodiments, the input parameters of the GetItems API are a TableName (which can be a string containing the name of the table from which the item is deleted), a Keys parameter (a simple / single or composite primary key identifying the item to be retrieved). List), AttributesToGet parameter (which can be an array of attribute names as a string), and / or a ConsistentRead parameter (which can be a Boolean indicating whether a consistent read will be issued) But you can. In some embodiments, if no attributes are specified, all attribute values defined for the identified item may be returned. In some embodiments, if the value of any of the identified attributes is not found, the corresponding attribute name will not appear in the result. In some embodiments, a consistent read operation will be issued if the ConsistentRead parameter is set to true. Otherwise, a consistent read operation will eventually occur. In some embodiments, strictly consistent reads (eg, reads where the value of the ConsistentRead parameter is true) may be targeted to the master of a given replication group, while using final consistency. Note that the readings that are made may be for any of the replicas of a given replica group. As described above, the number of items that can be read in response to a single GetItems request may be limited to a predetermined number in some embodiments. The output parameters of the GetItems API can be an array of items, each containing a map of the requested attributes and their values (if any value is specified for the item, i.e. not blank), Parameters may be included. Note that in some embodiments, the items in the array may not be ordered in any particular way. In such embodiments, including a primary key in the list of requested attributes identifies the attribute corresponding to each retrieved item and / or which of the requested items is viewed. A method may be provided for determining whether it has been issued and read (and / or found and not read). In some embodiments, there may be no error indication specifically defined for this API, but one or more of the error indicators described in Table 9 and described herein are applied. Also good. An example of a request to read some items using the GetItems API and a response received from a data storage service corresponding to the request is found below according to one embodiment.

Example request format:
{
GetItems {
“TableName”: “Pictures”,
“Keys”: [[“image123”], [“image456”], [“image789”]],
“AttributesToGet”: [“ImageID”, “Title”, “Tags”],
“ConsistentRead”: true
}
Example response format:
{
“Items”: [
{“ImageId”: {“S”: “image123”}, “Title”: {“S”: “sun flower”}, “Tags”: {“SS”: [“flower”]}},
{“ImageId”: {“S”: “image456”}, “Title”: {“S”: “jasmine floor”}, “Tags”: {“SS”: [“flower”, “jasmine”]}}
]
}
種々の実施形態では、UpdateItem APIが、データ記憶サービス(および/または基礎的システム)によって提供されてもよい。このAPIは、まだ存在していない場合は、アイテムを挿入するために、または属性レベルで既存のアイテムを操作するために(例えば、その属性のうちの1つ以上の値を修正するために)使用されてもよい。例えば、アイテムを更新することは、既存のアイテムの種々の属性を挿入、置換、および/または削除することを含んでもよい。いくつかの実施形態では、アイテムを更新することは、数字タイプを有する属性の値をアトミックに増分または減少させることを含んでもよい。上記で説明されるPutItem APIが、既存のアイテムの属性値の全てを置換するために使用されてもよい一方で、本明細書で説明されるUpdateItem APIは、より粒度が細かい置換動作を提供してもよい。言い換えれば、このAPIは、既存のアイテムの属性値のサブセットを修正するため、および/または既存のアイテムに定義される一式の属性を修正するために使用されてもよい。   In various embodiments, the UpdateItem API may be provided by a data storage service (and / or the underlying system). This API, if not already present, to insert an item, or to manipulate an existing item at the attribute level (eg, to modify the value of one or more of its attributes) May be used. For example, updating an item may include inserting, replacing, and / or deleting various attributes of an existing item. In some embodiments, updating the item may include atomically increasing or decreasing the value of an attribute having a numeric type. While the PutItem API described above may be used to replace all of the existing item's attribute values, the UpdateItem API described herein provides a more granular replacement behavior. May be. In other words, this API may be used to modify a subset of the attribute values of an existing item and / or to modify a set of attributes defined on an existing item.
そうする要求に応答して、アイテムを更新するための方法の一実施形態が、図9でフロー図によって図示されている。910で図示されるように、この実施例では、本方法は、非リレーショナルデータベース内のテーブル(例えば、データ記憶サービスクライアントの代わりに維持されるテーブル)の中のアイテムを更新するサービス要求を受信することを含んでもよい。以前の実施例の場合のように、UpdateItem要求は、テーブル名および一次キー(更新要求の標的であるアイテムを集合的に識別し得る)と、要求されている更新(複数可)を示す1つ以上の他の入力パラメータ値とを含んでもよい。920の場合のように、アイテム属性がアイテムに追加されるべきであると要求が示す場合、要求に含まれる属性は、925の場合のように、アイテムに追加されてもよく、かつ同様に要求に含まれる値に割り当てられてもよい。例えば、アイテムにまだ存在していない特定の属性名に対するPUTアクションを含む、UpdateItem要求に応答して、PUTアクションに対応する属性名・値ペアが、アイテムに追加されてもよい。同様に、アイテムにまだ存在していないスカラー数値属性またはセットタイプ属性に対するADDアクションを含む、UpdateItem要求に応答して、ADDアクションに対応する属性名・値ペアが、アイテムに追加されてもよい。   One embodiment of a method for updating an item in response to a request to do so is illustrated by the flow diagram in FIG. As illustrated at 910, in this example, the method receives a service request to update an item in a table in a non-relational database (eg, a table maintained on behalf of a data storage service client). You may include that. As in the previous embodiment, the UpdateItem request is a table name and primary key (which may collectively identify the item that is the target of the update request) and one that indicates the requested update (s). Other input parameter values as described above may be included. If the request indicates that an item attribute should be added to the item, as in 920, the attributes included in the request may be added to the item, as in 925, and similarly requested May be assigned to a value included in. For example, in response to an UpdateItem request that includes a PUT action for a particular attribute name that does not yet exist in the item, an attribute name / value pair corresponding to the PUT action may be added to the item. Similarly, in response to an UpdateItem request that includes an ADD action for a scalar numeric attribute or set type attribute that does not already exist in the item, an attribute name / value pair corresponding to the ADD action may be added to the item.
この実施例で図示されるように、930の場合のように、アイテム属性の値がアイテムにおいて置換されるべきであると要求が示す場合、要求に含まれる属性の値は、935の場合のように、同様に要求に含まれる値に置換されてもよい。例えば、アイテムにすでに存在している特定の属性名に対するPUTアクションを含む、UpdateItem要求に応答して、その属性の値は、要求におけるPUTアクションと関連付けられる属性名・値ペアにおいて特定された値で更新されてもよい。   As illustrated in this example, if the request indicates that the item attribute value should be replaced in the item, as in 930, the attribute value included in the request is as in 935 Similarly, a value included in the request may be substituted. For example, in response to an UpdateItem request that includes a PUT action for a particular attribute name that already exists in the item, the value of that attribute is the value specified in the attribute name / value pair associated with the PUT action in the request. It may be updated.
図9で図示されるように、940の場合のように、アイテム属性がアイテムから除去されるべきであると要求が示す場合、その属性およびその値(複数可)は、945の場合のように、アイテムから除去されてもよい。例えば、アイテムに存在するスカラータイプ属性に対するDELETEアクションを含む、UpdateItem要求に応答して、その属性およびその値は、アイテムから除去されてもよい。同様に、アイテムに存在するセットタイプ属性に対するDELETEアクションを含む、UpdateItem要求に応答して、要求が、属性のセットの中の値のうちのいずれかを特定しない場合、属性およびその一式の値全体が、アイテムから除去されてもよい。   As illustrated in FIG. 9, when the request indicates that the item attribute should be removed from the item, as in 940, the attribute and its value (s) are as in 945. , May be removed from the item. For example, in response to an UpdateItem request that includes a DELETE action for a scalar type attribute present in the item, the attribute and its value may be removed from the item. Similarly, in response to an UpdateItem request that includes a DELETE action for a set type attribute that exists in the item, if the request does not specify any of the values in the set of attributes, the entire value of the attribute and its set May be removed from the item.
この実施例で図示されるように、950の場合のように、1つ以上の値が、アイテム属性の一式の値に追加される、またはそこから除去されるべきであると要求が示す場合、要求に含まれる属性の特定値(複数可)が、955の場合のように、追加され、またはセットから除去されてもよい。例えば、アイテムにすでに存在しているセットタイプ属性名に対するADDアクションを含む、UpdateItem要求に応答して、要求におけるADDアクションと関連付けられる属性名・値ペアにおいて特定された1つ以上の値が、アイテムにおける属性の一式の値に追加されてもよい。逆に、アイテムにすでに存在しているセットタイプ属性名に対するDELETEアクションを含む、UpdateItem要求に応答して、要求の中のDELETEアクションと関連付けられる属性名・値ペアにおいて特定される1つ以上の値が、アイテムにおける属性の一式の値から除去されてもよい。   As illustrated in this example, if the request indicates that one or more values should be added to or removed from the set of item attributes, as in 950, The specific value (s) of the attribute included in the request may be added or removed from the set, as in 955. For example, in response to an UpdateItem request that includes an ADD action for a set type attribute name that already exists in the item, one or more values specified in the attribute name / value pair associated with the ADD action in the request are May be added to the value of a set of attributes. Conversely, in response to an UpdateItem request that includes a DELETE action for a set type attribute name that already exists in the item, one or more values specified in the attribute name / value pair associated with the DELETE action in the request May be removed from the value of the set of attributes in the item.
960の場合のように、アイテムにおける属性の値が増分または減少させられるべきであると要求が示す場合、要求に含まれる属性の値は、965の場合のように、同様に要求に含まれる量だけアトミックに増分または減少させられてもよい。例えば、アイテムにすでに存在しているスカラー数値属性名に対するADDアクションを含む、UpdateItem要求に応答して、その属性の値は、(例えば、特定量が正の数である場合)要求において特定される量だけアトミックに増分されてもよく、または(例えば、特定量が負の数である場合)要求において特定される量だけアトミックに減少させられてもよい。他の実施形態では、数値属性の値は、常に、デフォルト量だけ増分または減少させられてもよく、あるいは値を増分または減少させる量が要求において特定されていない場合は、デフォルト量だけ増分または減少させられてもよい。   If the request indicates that the value of the attribute in the item should be incremented or decreased, as in 960, the attribute value included in the request is the amount included in the request, as in 965. May be incremented or decremented only atomically. For example, in response to an UpdateItem request that includes an ADD action for a scalar numeric attribute name that already exists in the item, the value of that attribute is specified in the request (eg, if the specified quantity is a positive number). It may be incremented atomically or may be atomically decreased by an amount specified in the request (eg, if the specific amount is a negative number). In other embodiments, the value of a numeric attribute may always be incremented or decremented by a default amount, or incremented or decremented by a default amount if no amount to increment or decrement the value is specified in the request. May be allowed.
図9の970で図示されるように、いったんUpdateItem要求において特定される任意の有効な更新が行われると、本方法は完了してもよい。しかしながら、特定更新のうちのいずれかが無効であった場合(例えば、任意の入力パラメータが欠落していた、またはそれらの値が間違ったタイプであった場合等)、本方法は、1つ以上のエラー指示を返すことを含んでもよい。いくつかの実施形態では、たとえ要求において特定される他の更新が無効であっても、要求において特定される任意の有効な更新が行われてもよい。他の実施形態では、特定更新のうちのいずれかが無効である場合、更新のうちのいずれも行われないであろう。上述のように、単一のUpdateItemサービス要求は、いくつかの実施形態では、単一のアイテムの種々の属性に適用される複数の更新を特定してもよい。したがって、図9で図示される更新動作のそれぞれ(例えば、925、935、945、955、965)は、対応するタイプの2つ以上の更新が単一のサービス要求において特定されている場合、複数回行われてもよい。加えて、単一の要求は、異なるタイプの更新がそれぞれのアイテム属性に行われるべきであると示してもよい。したがって、図9で図示される更新動作のうちの複数の動作(例えば、925、935、945、955、965)は、単一のUpdateItem要求に応答して行われてもよい。これは、925から930へ、935から940へ、945から950へ、および955から960へのフィードバックによって、図9で図示されている。   As illustrated at 970 in FIG. 9, the method may be completed once any valid update specified in the UpdateItem request has been made. However, if any of the specific updates are invalid (for example, if any input parameters were missing or their values were the wrong type), the method can include one or more Returning an error indication of. In some embodiments, any valid update identified in the request may be made even if other updates identified in the request are invalid. In other embodiments, if any of the specific updates are invalid, none of the updates will be performed. As described above, a single UpdateItem service request may identify multiple updates that apply to various attributes of a single item in some embodiments. Accordingly, each of the update operations illustrated in FIG. 9 (eg, 925, 935, 945, 955, 965) can be performed when two or more updates of the corresponding type are specified in a single service request. It may be performed once. In addition, a single request may indicate that different types of updates should be made to each item attribute. Accordingly, multiple operations (eg, 925, 935, 945, 955, 965) of the update operations illustrated in FIG. 9 may be performed in response to a single UpdateItem request. This is illustrated in FIG. 9 by feedback from 925 to 930, from 935 to 940, from 945 to 950, and from 955 to 960.
種々の実施形態では、データ記憶サービス(および/または基礎的システム)によって提供されるUpdateItem APIは、条件付き更新を行ってもよい。そのような実施形態では、このAPIは、条件付きでアイテムを挿入するために(例えば、まだ存在していない場合は、アイテムを作成するために)、または条件付きでアイテムを置換する(すなわち、更新)するために(例えば、その属性が任意の特定期待値に合致する場合のみ)使用されてもよい。アイテムを更新することは、既存のアイテムの種々の属性を挿入、更新、および/または削除することを含んでもよい。いくつかの実施形態では、データ記憶システムは、随意に、このAPIを使用して置換/更新されるアイテムの古い属性値を返してもよい。   In various embodiments, the UpdateItem API provided by the data storage service (and / or the underlying system) may perform conditional updates. In such embodiments, the API may conditionally insert an item (eg, create an item if it does not already exist) or conditionally replace an item (ie, Update) (e.g., only if the attribute matches any specific expected value). Updating an item may include inserting, updating, and / or deleting various attributes of an existing item. In some embodiments, the data storage system may optionally return old attribute values for items that are replaced / updated using this API.
いくつかの実施形態では、UpdateItem APIの入力パラメータは、TableName(更新されるアイテムが記憶される、またはアイテムが条件付きで挿入される、テーブルの名前を含む文字列であり得る)、Keyパラメータ(条件付きで更新または挿入されるアイテムを識別する、単純/単一または複合一次キーを特定し得る)、AttributeUpdatesパラメータ(1つ以上の特定属性名のそれぞれをそれぞれのAttributeUpdates構造にマップする配列であり得る)、Expectedパラメータ(条件付きputのそれぞれの属性値への属性名のマッピングを特定し得る)、および/またはReturnValuesパラメータ(該当する場合、動作の結果としてどの値が返されるべきかを示す文字列、例えば、「None」、「All_Old」、「Update_Old」、「All_New」、または「Updated_New」であり得る)を含んでもよい。   In some embodiments, the UpdateItem API input parameter is a TableName (which can be a string containing the name of the table where the item to be updated is stored or the item is conditionally inserted), a Key parameter ( A simple / single or composite primary key that identifies the item to be conditionally updated or inserted), an AttributeUpdates parameter (an array that maps each of the one or more specific attribute names to its respective AttributeUpdates structure ), Expected parameter (which may specify the mapping of attribute names to each attribute value of conditional put), and / or ReturnValues parameter (if applicable, what value should be returned as a result of the action) String indicating, for example, "None", "All_Old", "Update_Old" may be a "All_New", or "Updated_New") may contain.
各AttributeUpdate構造は、AttributeValueパラメータ(対応する属性の更新値を特定し得る)、およびActionパラメータ(講じられるアクションを特定する文字列、例えば、「PUT」、「ADD」、または「DELETE」であり得る)を含んでもよい。ADDアクションは、サポートされたとき、数値属性値が特定量だけアトミックに増分または減少させられることを可能にしてもよい。それぞれのActionパラメータ値が、修正される各属性に特定され得るため、UpdateItem要求によって標的にされる属性のそれぞれに異なるアクションを適用するために、単一のUpdateItem動作が使用されてもよいことに留意されたい。例えば、単一のUpdateItem要求に応答して、データ記憶システムは、特定アイテムの1つ以上の属性値を削除し、特定アイテムの1つ以上の他の属性値を増分または減少させ、および/または1つ以上の他の属性値を特定された新しい値と置換してもよい。いくつかの実施形態では、Actionパラメータのデフォルト値は(例えば、何も特定されていない場合)「PUT」であってもよい。あらゆるアイテムが不変一次キーを持たなければならないため、UpdateItem APIを使用して、キーの一部である属性を修正または削除できないことに留意されたい。言い換えれば、AttributeUpdatesパラメータは、いかなる一次キー属性の参照も含むことができない。また、特定されたActionパラメータ値が「DELETE」であるときに、AttributeValueパラメータは、随意的であり得ることにも留意されたい。   Each AttributeUpdate structure can be an AttributeValue parameter (which can specify an updated value for the corresponding attribute), and an Action parameter (a string that specifies the action to be taken, eg, “PUT”, “ADD”, or “DELETE”). ) May be included. When supported, ADD actions may allow numeric attribute values to be incremented or decremented atomically by a specified amount. Since each Action parameter value can be specific to each attribute being modified, a single UpdateItem action may be used to apply different actions to each of the attributes targeted by the UpdateItem request. Please keep in mind. For example, in response to a single UpdateItem request, the data storage system deletes one or more attribute values of a particular item, increments or decreases one or more other attribute values of the particular item, and / or One or more other attribute values may be replaced with the specified new value. In some embodiments, the default value for the Action parameter may be “PUT” (eg, if nothing is specified). Note that the UpdateItem API cannot be used to modify or delete attributes that are part of a key because every item must have an immutable primary key. In other words, the AttributeUpdates parameter cannot contain a reference to any primary key attribute. Note also that the AttributeValue parameter may be optional when the specified Action parameter value is “DELETE”.
いくつかの実施形態では、Expectedパラメータに含まれる各属性は、ExpectedAttributeValue(値「Exists」または「Value」を有する文字列を有し得る)、AttributeValue(属性の値を示し得る、あるいは空白またはヌル値を有し得る)、および/またはExistsパラメータ(評価される条件が、Expectedパラメータに含まれる属性が、既存のアイテムに対して現在特定されているかどうかであることを示し得る)を含んでもよい。UpdateItem APIを介して要求において特定される条件が満たされない場合(例えば、1つ以上の属性の期待値が、テーブルに記憶されているものと合致しない場合)、エラー指示(例えば、ConditionalCheckFailed)が、データ記憶システムによって返されてもよい。いくつかの実施形態では、「None」というReturnValuesパラメータ値が特定された場合、このAPIの戻り値がなくてもよい。「All_Old」というReturnValuesパラメータ値が特定された場合、このAPIは、UpdateItem動作の実施前にUpdateItem動作によって標的にされたアイテムのコンテンツ(すなわち、全ての属性値)を返してもよい。「Update_Old」というReturnValuesパラメータ値が特定された場合、(全ての属性値よりもむしろ)任意の更新された属性(複数可)の以前の値(複数可)のみが返されてもよい。「All_New」というReturnValuesパラメータ値が特定された場合、標的アイテムの新しいバージョンの全ての属性が返されてもよい(すなわち、UpdateItem動作の実施後のアイテムの全ての属性値)。「Updated_New」というReturnValuesパラメータ値が特定された場合、(全ての属性値よりもむしろ)任意の更新された属性(複数可)の新しい値(複数可)のみが返されてもよい。   In some embodiments, each attribute included in the Expected parameter may be an ExpectedAttributeValue (which may have a string with the value “Exists” or “Value”), an AttributeValue (which may indicate the value of the attribute, or a blank or null value) And / or Exists parameter (the condition being evaluated can indicate whether the attribute included in the Expected parameter is currently specified for an existing item). If the condition specified in the request via the UpdateItem API is not met (eg, the expected value of one or more attributes does not match that stored in the table), an error indication (eg, ConditionalCheckFailed) It may be returned by the data storage system. In some embodiments, if a ReturnValues parameter value of “None” is specified, there may be no return value for this API. If a ReturnValues parameter value of “All_Old” is specified, this API may return the content (ie, all attribute values) of the item targeted by the UpdateItem operation prior to performing the UpdateItem operation. If a ReturnValues parameter value of “Update_Old” is specified, only the previous value (s) of any updated attribute (s) may be returned (rather than all attribute values). If a ReturnValues parameter value of “All_New” is specified, all attributes of the new version of the target item may be returned (ie, all attribute values of the item after performing the UpdateItem operation). If a ReturnValues parameter value of “Updated_New” is specified, only the new value (s) of any updated attribute (s) may be returned (rather than all attribute values).
条件付き更新および/または複数の出力オプションをサポートするAPIを使用して、アイテムを更新するための方法の一実施形態が、図10でフロー図によって図示されている。この実施例で図示されるように、本方法は、非リレーショナルデータベース内のテーブル(例えば、データ記憶サービスクライアントの代わりに維持されるテーブル)の中のアイテムを更新するサービス要求を受信することを含んでもよい。以前の実施例の場合のように、UpdateItem要求は、テーブル名および一次キー(更新要求の標的であるアイテムを集合的に識別し得る)と、要求されている更新(複数可)を示す1つ以上の他の入力パラメータ値とを含んでもよい。更新要求がアイテムにおける任意の属性値を条件としない場合、1020からの否定の出口として示され、1050の場合のように、要求において特定される更新(複数可)が行われてもよい。しかしながら、更新要求が、要求において特定される値に対応して合致する、アイテムにおける1つ以上の属性値を条件とする場合(例えば、UpdateItem要求への入力が、満たされるべき1つ以上の条件を特定するExpected構造を含む場合)、1020からの肯定の出口として示され、本方法は、特定された条件のそれぞれが満たされているかどうかを判定することを含んでもよい。   One embodiment of a method for updating an item using an API that supports conditional updates and / or multiple output options is illustrated by the flow diagram in FIG. As illustrated in this example, the method includes receiving a service request to update an item in a table in a non-relational database (eg, a table maintained on behalf of a data storage service client). But you can. As in the previous embodiment, the UpdateItem request is a table name and primary key (which may collectively identify the item that is the target of the update request) and one that indicates the requested update (s). Other input parameter values as described above may be included. If the update request is not conditional on any attribute value in the item, it may be shown as a negative exit from 1020 and the update (s) specified in the request may be made as in 1050. However, if the update request is conditional on one or more attribute values in the item that match corresponding to the values specified in the request (eg, one or more conditions that an input to the UpdateItem request is to be satisfied) ), Shown as a positive exit from 1020, the method may include determining whether each of the identified conditions is met.
この実施例で図示されるように、特定された条件のそれぞれは、要求において特定される更新を行う前に(1030の場合のように)評価されてもよい。所与の条件が満たされている(1030からの肯定の出口として示される)が、要求に対して特定された追加の条件がある(1040からの肯定の出口として示される)場合、追加の条件が評価されてもよい(1040から1030へのフィードバックとして示される)。所与の条件が満たされており(1030からの肯定の出口として示される)、要求に対して特定された追加の条件がない(1040からの否定の出口として示される)場合、1050の場合のように、要求された更新が行われてもよい。特定された条件のうちのいずれかが満たされていない場合、1030からの否定の出口として示され、要求された更新(複数可)が行われなくてもよい。   As illustrated in this example, each of the identified conditions may be evaluated (as in 1030) before making the updates specified in the request. If a given condition is met (shown as a positive exit from 1030) but there are additional conditions specified for the request (shown as a positive exit from 1040), the additional conditions May be evaluated (shown as feedback from 1040 to 1030). If a given condition is met (shown as a positive exit from 1030) and there are no additional conditions specified for the request (shown as a negative exit from 1040) As such, the requested update may be performed. If any of the identified conditions are not met, a negative exit from 1030 is indicated and the requested update (s) may not be made.
この実施例で図示されるように、アイテムの属性の更新前および/または更新後値が出力されるべきであるとサービス要求が特定する場合、1060からの肯定の出口として示され、本方法は、1070の場合のように、アイテムの更新前および/または更新後属性値を返すことを含んでもよく、1080の場合のように、アイテム更新動作が完了してもよい。例えば、UpdateItem要求のReturnValuesパラメータが「All_Old」、「Update_Old」、「All_New」、または「Updated_New」に設定された場合、対応する古いおよび/または新しい属性値が、アイテム更新プロセスの完了に応答して返されてもよい。ReturnValuesパラメータが「None」に設定された、または要求に対して特定されていない場合、いかなる属性値も返されなくてもよい。特定された条件のうちのいずれかが満たされなかった場合、古いおよび/または新しい属性値のうちのいずれかが応答において返されるか否かにかかわらず、応答は、本明細書で説明されるもの等の1つ以上のエラー指示を含んでもよいことに留意されたい。対応する属性値上の可能なActionパラメータ値のそれぞれの仕様への応答が、一実施形態に従って以下の表で要約される。   As illustrated in this example, if the service request specifies that the pre-update and / or post-update values of the item attributes should be output, shown as a positive exit from 1060, the method As in 1070, it may include returning the pre-update and / or post-update attribute values of the item, and the item update operation may be completed as in 1080. For example, if the ReturnValue parameter of an UpdateItem request is set to “All_Old”, “Update_Old”, “All_New”, or “Updated_New”, the corresponding old and / or new attribute values will be in response to the completion of the item update process May be returned. If the ReturnValues parameter is set to “None” or is not specified for the request, no attribute value may be returned. If any of the identified conditions are not met, the response is described herein regardless of whether any of the old and / or new attribute values are returned in the response. Note that one or more error indications may be included. The response to each specification of possible Action parameter values on the corresponding attribute value is summarized in the table below according to one embodiment.
いくつかの実施形態では、スカラー属性の削除タイプ更新の属性値を供給することがエラーであり得ることに留意されたい。いくつかの実施形態では、セットタイプ属性の削除タイプ更新の空白セットを供給することがエラーであり得る。いくつかの実施形態では、セットタイプ属性の削除タイプ更新および/またはセットタイプ属性の追加タイプ更新の供給値(複数可)のタイプは、既存の値タイプに合致しなければならない。上記で説明されるように、ADDアクションは、数字タイプのスカラー属性のみに、またはセットタイプ属性のみに有効であり得、かつスカラー文字列タイプに無効であり得る。   Note that in some embodiments, it may be an error to provide an attribute value for the delete type update of a scalar attribute. In some embodiments, it may be an error to provide a blank set of delete type updates for the set type attribute. In some embodiments, the type of the supply value (s) of the delete type update of the set type attribute and / or the additional type update of the set type attribute must match the existing value type. As explained above, ADD actions may be valid only for numeric type scalar attributes, or only for set type attributes, and may be invalid for scalar string types.
上記の表で示されるように、UpdateItem要求によって標的にされるアイテムが存在せず、更新動作が少なくとも1つのPUTまたはADD Actionパラメータ値を用いて実行されるとき、いくつかの実施形態では、アイテムが作成されてもよい。しかしながら、UpdateItem動作が存在しないアイテムを標的にし、DELETEアクションのみを特定する場合、新しいアイテムは作成されないであろう。   As shown in the table above, in some embodiments, when there is no item targeted by the UpdateItem request and the update operation is performed with at least one PUT or ADD Action parameter value, May be created. However, if an item that does not have an UpdateItem action is targeted and only the DELETE action is specified, no new item will be created.
データ記憶サービスによって提供される他のAPIと同様に、UpdateItem要求および/または応答は、異なる実施形態では、JSON要求/応答形式または別の好適な形式で提示されてもよい。UpdateItem APIに対応する、データ記憶サービスへの要求およびデータ記憶サービスから受信される応答の実施例が、一実施形態に従って以下で見出される。

要求形式例:

UpdateItem{
“TableName”:“Pictures”,
“Key”:[1,2009−12−12T10:30:30Z],
“AttributeUpdates”:{
“Title”:{“AttributeValue”:{“S”:“Sun Flower”},“Action”:“PUT”}
“Tags”:{“AttributeValue”:{“S”:[“Flower”,“Sun”]},“Action”:“ADD”}
},
“Expected”:{
“Title”:{“AttributeValue”:{“S”:“flower”}},
“Rating”:{“Exists”:false}
},
“ReturnValues”:“UPDATED_NEW”


応答形式例:

“Attributes”:{
“Title”:{“S”:“Sun Flower”}
“Tags”:{“S”:“Flower”,“Sun”},


As with other APIs provided by the data storage service, UpdateItem requests and / or responses may be presented in a JSON request / response format or another suitable format in different embodiments. An example of a request to the data storage service and a response received from the data storage service corresponding to the UpdateItem API is found below according to one embodiment.

Example request format:
{
UpdateItem {
“TableName”: “Pictures”,
“Key”: [1,2009-12-12T10: 30: 30Z],
“AttributeUpdates”: {
“Title”: {“AttributeValue”: {“S”: “Sun Flower”}, “Action”: “PUT”}
“Tags”: {“AttributeValue”: {“S”: [“Flower”, “Sun”]}, “Action”: “ADD”}
},
“Expected”: {
“Title”: {“AttributeValue”: {“S”: “flower”}},
“Rating”: {“Exists”: false}
},
“ReturnValues”: “UPDATED_NEW”
}
}
Example response format:
{
“Attributes”: {
“Title”: {“S”: “Sun Flower”}
“Tags”: {“S”: “Flower”, “Sun”},

}
}
この実施例では、特定更新は、Ratings属性の非存在、および「flower」であるTitle属性の値を条件とした。これらの条件の両方が真と評価されたという判定に応答して、特定更新がTitleおよびTags属性に行われた。この実施例では、UpdateItem要求が、Updated_Newに設定されたReturnValuesパラメータを含んだことに留意されたい。したがって、応答は、特定更新動作によって標的にされた属性に定義された新しい値(すなわち、「Title」属性および「Tags」属性の新しい値)のみを含んだ。   In this embodiment, the specific update is made conditional on the absence of the Ratings attribute and the value of the Title attribute that is “flower”. In response to a determination that both of these conditions were evaluated as true, a specific update was made to the Title and Tags attributes. Note that in this example, the UpdateItem request included a ReturnValues parameter set to Updated_New. Thus, the response included only new values defined for attributes targeted by the specific update operation (ie, new values for the “Title” and “Tags” attributes).
前述のように、一次キーが単純キーである実施形態では、記憶サービスクライアントの代わりに維持されているテーブルの中のアイテムが、アイテムのそれぞれの一次キー値のハッシュを使用して区分されてもよい一方で、一次キーが複合キーである実施形態では、データは、最初に、ハッシュキー構成要素のハッシュによって、次いで、範囲キー構成要素によって区分されてもよい。図11は、一実施形態による、単純および/または複合キーを使用してテーブルデータを区分するための方法の一実施形態を図示する。1110で図示されるように、この実施例では、本方法は、データ記憶サービス(あるいは記憶ノードインスタンスまたは管理構成要素等のデータ記憶部を実装する基礎的システムの構成要素)が、記憶サービスクライアントの代わりに非リレーショナルデータ記憶部上に維持されたテーブルの区分を開始することを含んでもよい。   As mentioned above, in embodiments where the primary key is a simple key, items in a table maintained on behalf of the storage service client may be partitioned using a hash of each item's primary key value. On the other hand, in embodiments where the primary key is a composite key, the data may be partitioned first by the hash of the hash key component and then by the range key component. FIG. 11 illustrates one embodiment of a method for partitioning table data using simple and / or composite keys, according to one embodiment. As illustrated at 1110, in this example, the method includes a data storage service (or a component of a basic system that implements a data storage unit such as a storage node instance or management component) that is stored in the storage service client. Alternatively, it may include initiating partitioning of the table maintained on the non-relational data store.
テーブルの中の複数のアイテムがハッシュキー属性値を共有する場合、1120からの肯定の出口として示され、本方法は、1140の場合のように、データ記憶部が、最初に、それらの範囲キー属性値のハッシュに、次いで、それらの範囲キー属性値に依存して、所与のハッシュキー属性値を有するテーブルの中のアイテムを2つ以上の区分(例えば、データベース区分)に分割することを含んでもよい。言い換えれば、テーブルに対する一次キーが、値がアイテムのグループを識別するために使用され得る、ハッシュキー構成要素と、値が同一のハッシュキー属性値を有するアイテムを順序付け、これらのアイテムのそれぞれを一意的に識別するために使用され得る、範囲キー構成要素とを含む、複合キーである場合、ハッシュキー属性値および範囲キー属性値の両方は、テーブルの中のアイテムを区分するために使用されてもよい。例えば、同一のハッシュキー属性値を有するアイテムのグループについて、グループの中の最初のn個のアイテム(それらのそれぞれの範囲キー属性値によって順序付けられたとき)は、1つの区分に割り当てられてもよく、グループの中の次のm個のアイテムは、第2の区分に割り当てられても良い、等である。いくつかの実施形態では、各区分は、1つのハッシュキー属性値を共有するアイテムの一部分を含んでもよく、また、他のハッシュキー属性値を有する他のアイテムも含んでもよいことに留意されたい。   If multiple items in the table share a hash key attribute value, it is shown as a positive exit from 1120, and the method first uses their range keys as in 1140. Depending on the hash of the attribute values and then depending on their range key attribute values, dividing an item in a table with a given hash key attribute value into two or more partitions (eg, database partitions) May be included. In other words, the primary key for the table orders the hash key components whose values can be used to identify groups of items and items with the same hash key attribute value, and each of these items is unique. In the case of a composite key that includes a range key component that can be used to identify automatically, both the hash key attribute value and the range key attribute value are used to partition the items in the table Also good. For example, for a group of items having the same hash key attribute value, the first n items in the group (when ordered by their respective range key attribute values) may be assigned to one partition. Well, the next m items in the group may be assigned to the second partition, and so on. Note that in some embodiments, each partition may include a portion of items that share one hash key attribute value, and may also include other items that have other hash key attribute values. .
テーブルの中のアイテムのうちのいずれもハッシュキー属性値を共有しない場合、1120からの否定の出口として示され、本方法は、1130の場合のように、データ記憶部が、それらのそれぞれのハッシュキー属性値に依存して、テーブルの中のアイテムを2つ以上の区分に分割することを含んでもよい。例えば、テーブルに対する一次キーが、値がテーブルの中のアイテムのそれぞれを一意的に識別するために使用され得る、ハッシュキー構成要素を含む、単純キーである場合、テーブルの中のアイテムは、ハッシュキー属性値のハッシュに依存するが、いかなる他のアイテム属性値にも依存せず、区分されてもよい(すなわち、複数の区分のうちの1つに割り当てられる)。いくつかの実施形態では、一次キーが複合キーであるが、テーブルの中のアイテムのうちのいずれもハッシュキー属性値を共有しない場合(すなわち、各アイテムが一意的なハッシュキー属性値を有する場合)、データ記憶部は、一次キーが単純キーであるかのようにアイテムを区分してもよい(すなわち、ハッシュキー属性値のみを使用して、テーブルの中のアイテムを区分してもよい)。   If none of the items in the table share the hash key attribute value, it is shown as a negative exit from 1120, and the method stores the respective hash of their respective hashes, as in 1130. Depending on the key attribute value, it may include dividing the item in the table into two or more sections. For example, if the primary key for a table is a simple key that includes a hash key component whose value can be used to uniquely identify each item in the table, the item in the table is a hash Depending on the hash of the key attribute value, but not on any other item attribute value, it may be partitioned (ie assigned to one of the partitions). In some embodiments, the primary key is a composite key, but none of the items in the table share a hash key attribute value (ie, each item has a unique hash key attribute value) ), The data store may partition the item as if the primary key is a simple key (ie, use only the hash key attribute value to partition the item in the table) .
いったんデータ記憶部がアイテムの全てを区分に割り当てると、1150の場合のように、データ記憶部は、それぞれの記憶ノード(例えば、それぞれのコンピューティングノードまたは記憶デバイス)上に区分のそれぞれを記憶してもよい。いくつかの実施形態では、単一のテーブルの各区分が、異なる記憶ノード上に記憶されてもよい一方で、他の実施形態では、区分のうちの2つ以上が、同一の記憶ノード上で維持されてもよい。いくつかの実施形態では、所与のテーブルのアイテムが区分される区分の数が、あらかじめ定められてもよい(例えば、ユーザ入力/選好、あるいはクライアント、アカウント、またはテーブルタイプの履歴データに基づいてもよい)一方で、他の実施形態では、所与のテーブルのアイテムが区分される区分の数は、例えば、ハッシュ結果の各範囲内のアイテムの数、および/または範囲キー属性値の各範囲内のアイテムの数に基づいて、区分動作が進行するにつれて判定されてもよいことに留意されたい。また、区分化がハッシュ結果に基づくため、アイテムのグループが利用可能な区分の間で割り当てられ、分配され得る順序は、いくぶんランダム化されてもよいことに留意されたい。場合によっては、例えば、いくつかのアイテムが、他のアイテムよりもはるかに頻繁にアクセスされる、またはいくつかのアイテムのグループが、他のグループよりも多数のアイテムを含む場合、初期区分化が、ホットスポットをもたらし得る。そのような場合において、(例えば、データ量および/またはサービス要求トラフィックに対して)利用可能な区分の間でアイテムをより均等に分配するために、再区分動作が行われてもよい。また、いくつかの実施形態では、テーブルの中のアイテムは、単一のハッシュキー構成要素および2つ以上の範囲キー構成要素を使用して区分されてもよいことに留意されたい。   Once the data store has assigned all of the items to a partition, the data store stores each of the partitions on a respective storage node (eg, a respective computing node or storage device), as in 1150. May be. In some embodiments, each partition of a single table may be stored on a different storage node, while in other embodiments, two or more of the partitions are on the same storage node. May be maintained. In some embodiments, the number of partitions into which an item in a given table is partitioned may be predetermined (eg, based on user input / preferences or historical data for clients, accounts, or table types). On the other hand, in other embodiments, the number of partitions into which an item of a given table is partitioned may be, for example, the number of items in each range of hash results and / or each range of range key attribute values Note that based on the number of items within, it may be determined as the segmentation operation proceeds. Note also that since the partitioning is based on the hash result, the order in which groups of items can be allocated and distributed among the available partitions may be somewhat randomized. In some cases, for example, if some items are accessed much more frequently than others, or if a group of some items contains more items than others, the initial partitioning may be Can bring hot spots. In such cases, a repartitioning operation may be performed to more evenly distribute items among available partitions (eg, for data volume and / or service request traffic). Note also that in some embodiments, items in a table may be partitioned using a single hash key component and two or more range key components.
以下の表6は、図11で図示されるものに類似する方法を使用した、テーブルの中のアイテムの区分化の実施例を図示する。この実施例では、ハッシュキー属性は、「User name」属性であり、範囲キー属性は、「Message ID」属性である。テーブルは、3つのユーザ名(Bob、Sue、およびPhil)のそれぞれと関連付けられる複数のメッセージを記憶する。表6で図示されるように、所与のテーブルのいくつかの区分は、同一のハッシュキー属性値を有するアイテムのみを含んでもよい。この実施例では、AというPartition ID値によって識別される区分は、ハッシュキー属性値「Bob」を有するメッセージのみを記憶する。この区分は、Bobのメッセージの全てではなく、Message ID値(すなわち、範囲キー属性値)1〜199を有するメッセージのみを記憶することに留意されたい。Bobのメッセージの別のグループ(範囲キー属性値200〜299を伴うもの)は、BというPartition ID値によって識別される区分の中に記憶される。この区分はまた、「Sue」というハッシュキー属性値を有するメッセージ、具体的には、1〜50という範囲キー値を有するメッセージも記憶する。Bobのメッセージのさらに別のグループ(範囲キー属性値300〜399を伴うもの)は、CというPartition ID値によって識別される区分の中に記憶される。この区分はまた、「Phil」というハッシュキー属性値を有するメッセージ、具体的には、1〜100という範囲キー値を有するメッセージも記憶する。   Table 6 below illustrates an example of the partitioning of items in a table using a method similar to that illustrated in FIG. In this embodiment, the hash key attribute is a “User name” attribute, and the range key attribute is a “Message ID” attribute. The table stores a plurality of messages associated with each of the three user names (Bob, Sue, and Phil). As illustrated in Table 6, some sections of a given table may include only items that have the same hash key attribute value. In this embodiment, the category identified by the Partition ID value of A stores only messages having the hash key attribute value “Bob”. Note that this section stores only messages with Message ID values (ie, range key attribute values) 1 to 199, not all of Bob's messages. Another group of Bob's messages (with range key attribute values 200-299) is stored in the partition identified by the Partition ID value of B. This section also stores messages having a hash key attribute value of “Sue”, specifically messages having a range key value of 1-50. Yet another group of Bob's messages (with range key attribute values 300-399) is stored in a partition identified by a Partition ID value of C. This section also stores messages having a hash key attribute value of “Phil”, specifically messages having a range key value of 1-100.
上記の実施例では、Bobのメッセージの全てを読み出す要求は、区分Aからメッセージ1〜199(特定の記憶ノード上で維持され得る)、区分Bからメッセージ200〜299(異なる記憶ノード上で維持され得る)、および区分Cからメッセージ300〜399(さらに別の記憶ノード上で維持され得る)を読み出してもよい。以下でさらに詳細に説明されるように、いくつかの実施形態では、これらのメッセージの全てを読み出す要求は、(例えば、応答制限に達した場合)早く終了させられてもよく、残りのメッセージが、後続の要求に応答して読み出されてもよい。   In the above example, requests to read all of Bob's messages are sent from partition A to messages 1-199 (can be maintained on a particular storage node), from partition B to messages 200-299 (maintained on different storage nodes). Message 300-399 (which may be maintained on yet another storage node) from partition C. As described in further detail below, in some embodiments, a request to read all of these messages may be terminated early (eg, when a response limit is reached) and the remaining messages May be read in response to subsequent requests.
いくつかの実施形態では、本明細書で説明されるデータ記憶サービス(および/または基礎的システム)は、Scan APIおよびQuery APIといった、記憶サービスクライアントの代わりにテーブルの中で維持されたデータを検索するための2つの異なるAPIを提供してもよい。いくつかの実施形態では、Scan APIは、テーブル全体をスキャンする動作を要求するために使用されてもよい。Scan要求は、例えば、完了したスキャンに続いて要求側に返される値を精緻化するように、スキャン動作の結果に適用される1つ以上のフィルタを特定してもよい。いくつかの実施形態では、サービス(および/または基礎的システム)は、スキャン結果に制限を課してもよく、制限は、結果がフィルタにかけられる前に適用されてもよい。例えば、いくつかの実施形態では、本システムは、スキャンおよび/またはクエリに迅速に応答するために、ページネーションを使用してもよい(例えば、評価または返されるアイテムの数に関して、あるいはスキャンまたは返されるデータの量に関して、所定の最大サイズを有する明確に異なる断片に、スキャンまたはクエリプロセスを分割する)。例えば、所定の最大サイズ(例えば、1MB)よりも大きい、または結果として生じるデータセットが所定の最大サイズ(例えば、1MB)よりも大きい、テーブルをスキャンするために、1MB増分で、テーブル全体をスキャンするように複数のスキャンまたはクエリ動作が行われる必要があり得る。いずれのテーブルデータも特定フィルタ条件を満たさない場合、スキャン動作が結果を返さない可能性があり得る。いくつかの実施形態では、Query APIは、供給されたクエリ条件(例えば、アイテムの属性への条件)に合致するデータに検索条件を限定するように、比較動作をサポートしてもよい。例えば、既定の制限まで(そのような制限がシステムによって課される場合)、要求において特定されるパラメータに合致するテーブルの中の全てのデータを見出すために、Query要求が使用されてもよい。いくつかの実施形態では、Query要求は、常に結果を返してもよいが、本システムは、クエリ条件(すなわち、属性フィルタ条件)が結果のうちのいずれにも合致しない場合に空白値を返してもよい。   In some embodiments, the data storage service (and / or underlying system) described herein retrieves data maintained in a table on behalf of a storage service client, such as a Scan API and a Query API. Two different APIs may be provided. In some embodiments, the Scan API may be used to request an operation that scans the entire table. The Scan request may specify one or more filters that are applied to the result of the scan operation, for example, to refine the values returned to the requester following a completed scan. In some embodiments, the service (and / or underlying system) may impose restrictions on the scan results, and the restrictions may be applied before the results are filtered. For example, in some embodiments, the system may use pagination to respond quickly to scans and / or queries (eg, regarding the number of items to be evaluated or returned, or scanned or returned). Split the scan or query process into distinctly different pieces with a predetermined maximum size with respect to the amount of data to be). For example, to scan a table that is larger than a predetermined maximum size (eg, 1 MB) or the resulting data set is larger than a predetermined maximum size (eg, 1 MB), scan the entire table in 1 MB increments Multiple scan or query operations may need to be performed. If any table data does not satisfy the specific filter condition, there is a possibility that the scan operation does not return a result. In some embodiments, the Query API may support a comparison operation to limit the search condition to data that matches a supplied query condition (eg, a condition to an item attribute). For example, a Query request may be used to find all data in the table that matches the parameters specified in the request up to a predetermined limit (if such a limit is imposed by the system). In some embodiments, a Query request may always return a result, but the system returns a blank value if the query condition (ie, attribute filter condition) does not match any of the results. Also good.
種々の実施形態では、Query APIは、テーブルに記憶された情報について、記憶サービスクライアント(例えば、ユーザ、顧客、加入者、またはクライアントアプリケーション)の代わりに維持されるそのテーブルに問い合わせるために使用されてもよい。いくつかの実施形態では、クエリは、一次インデックスに基づいて(特定ハッシュキー、場合によっては、特定範囲キー術語を満たす単一の範囲キー値に従って)行われてもよい。他の実施形態では、一次キーは、単一のハッシュキー構成要素、および2つ以上の範囲キー構成要素を含んでもよい。いくつかの実施形態では、Query APIの入力パラメータは、TableName(更新されるアイテムが記憶される、またはアイテムが条件付きで挿入される、テーブルの名前を含む文字列であり得る)、AttributesToGetパラメータ(値が返される、属性の配列であり得る)、Limitパラメータ(単一のクエリ要求に応答して返される結果の最大数を特定する整数であり得る)、ConsistentReadパラメータ(一貫した読み取りが発行されるであろうかどうかを示すブール値であり得る)、Countパラメータ(これらのアイテムの属性値よりもむしろ、クエリに合致するアイテムのカウントが返されるべきかどうかを示す、ブール値であり得る)、HashKeyValue(一次キーのハッシュ構成要素のAttributeValueを特定し得る、かつクエリへの強制的制約であり得る)、RangeKeyCondition(一次キーのRangeKey構成要素への制約を特定し得る、かつHashKeyValueと組み合わせて、クエリ要求の1つまたは複数の標的を識別し得る)、ScanIndexForwardパラメータ(インデックスを前方に横断するか後方に横断するかどうかを示すブール値であり得る)、および/またはLastEvaluatedKeyパラメータ(クエリが、単一のクエリ要求に応答して属性を返すことができるアイテム数への所定の制限を超えた、クエリの継続である場合、クエリの開始点として使用される一次キー値を特定し得る)を含んでもよい。   In various embodiments, the Query API is used to query a table maintained on behalf of a storage service client (eg, user, customer, subscriber, or client application) for information stored in the table. Also good. In some embodiments, the query may be performed based on a primary index (according to a specific hash key, and in some cases a single range key value that satisfies a specific range key term). In other embodiments, the primary key may include a single hash key component and two or more range key components. In some embodiments, the Query API input parameters are TableName (which can be a string containing the name of the table where the item to be updated is stored or the item is conditionally inserted), AttributesToGet parameter ( Value can be an array of attributes returned), a Limit parameter (which can be an integer specifying the maximum number of results returned in response to a single query request), a ConsistentRead parameter (a consistent read is issued) A Count parameter (may be a Boolean indicating whether a count of items matching the query should be returned, rather than an attribute value for these items), HashKeyValue (Has a primary key One of the query requests, which can specify the AttributeValue of the key component and can be a mandatory constraint on the query, RangeKey Condition (which can specify the constraint on the primary key RangeKey component, and in combination with the HashKeyValue) Multiple targets), a ScanIndexForward parameter (which may be a Boolean indicating whether the index is traversed forward or backward), and / or a LastEvaluatedKey parameter (a query responds to a single query request) The primary key value used as the starting point of the query if it is a continuation of the query that exceeds a predetermined limit on the number of items for which attributes can be returned.
いくつかの実施形態では、RangeKeyConditionパラメータは、テーブルの中のアイテムの範囲キー構成要素の値に依存して評価される、数式または論理式を特定してもよい。RangeKeyConditionパラメータは、ComparisonOperatorパラメータ、および1つ以上のAttributeValuesを含んでもよい。例えば、一実施形態では、ComparitionOperatorは、「EQ」(すなわち、〜に等しい)、「GT」(すなわち、〜よりも大きい)、「GE」(すなわち、〜以上)、「LT」(すなわち、〜未満)、「LE」(すなわち、〜以下)、「BEGINS WITH」、または「BETWEEN」等の演算子のうちの1つであってもよい。そのような実施形態では、ComparisonOperatorが、「EQ」、「GT」、「GE」、「LT」、「LE」、または「BEGINS WITH」のうちの1つである場合、1つだけの値がAttributeValuesパラメータに含まれてもよい一方で、ComparisonOperatorが「BETWEEN」である場合、2つの値がAttributeValuesパラメータに含まれてもよい。いくつかの実施形態では、特定比較が、タイプ「文字列」を有する(例えば、2進文字列として表されるUTF8文字列を伴う)属性については辞書式で、およびタイプ「数字」を有する属性については数値的に行われてもよいことに留意されたい。いくつかの実施形態では、「BETWEEN」演算子に対して特定される2つの値は、包含的であり得、第1の値が第2の値よりも小さい。「BEGINS WITH」演算子は、スカラー文字列のみに有効である前置演算子であってもよい。   In some embodiments, the RangeKeyCondition parameter may specify a mathematical or logical expression that is evaluated depending on the value of the range key component of the item in the table. The RangeKeyCondition parameter may include a ComparisonOperator parameter and one or more AttributeValues. For example, in one embodiment, the Comparison Operator is “EQ” (ie, equal to), “GT” (ie, greater than), “GE” (ie, greater than or equal to), “LT” (ie, Less), "LE" (i.e., ~), "BEGINS WITH", or "BETWEEN". In such embodiments, if the ComparisonOperator is one of “EQ”, “GT”, “GE”, “LT”, “LE”, or “BEGINS WITH”, only one value is present. While it may be included in the AttributeValues parameter, if the ComparisonOperator is “BETWEEN”, two values may be included in the AttributeValues parameter. In some embodiments, the specific comparison is lexicographic for attributes that have the type “string” (eg, with a UTF8 string represented as a binary string), and attributes that have the type “number” Note that may be done numerically. In some embodiments, the two values specified for the “BETWEEN” operator may be inclusive, where the first value is less than the second value. The “BEGINS WITH” operator may be a prefix operator that is valid only for scalar strings.
AttributesToGetパラメータは、いくつかの実施形態では、それらの名前とともに属性タイプを含んでもよい。いくつかの実施形態では、属性名がクエリ要求に対して特定されていない場合(およびCountパラメータが「偽」である場合)、クエリ条件に合致するアイテムの全ての属性が返されてもよい。いくつかの実施形態では、Countパラメータが「真」である場合、クエリ要求に応答してデータ記憶システムによって返される合致アイテムの数へのいかなる既定の制限も適用されなくてもよい。Countパラメータを「真」に設定し、(単一のクエリ要求の中で)AttributesToGetのリストを提供することは、無効であり得、データ記憶システムがエラー指示(例えば、検証エラーの指示)を返してもよい。いくつかの実施形態では、ConsistentReadパラメータが真に設定された場合、一貫した読み取り動作が発行されるであろう。そうでなければ、最終的に一貫した読み取り動作が行われるであろう。上述のように、単一のクエリ要求に合致するアイテムの数がLimitパラメータの値を超える場合、クエリは、制限に達したときに終了させられてもよい。この場合、データ記憶システムは、最大でLimitパラメータの値までの合致アイテムの数の属性値を返してもよく、(例えば、後続のクエリ要求の入力として、このLastEvaluatedKeyを含むことによって)クエリを継続するために使用され得る、継続トークン(すなわち、LastEvaluatedKeyパラメータ)を含んでもよい。いくつかの実施形態では、データ記憶システムは、Query APIを使用したクエリ要求に応答して返される合致アイテムの数へのシステム全体の制限、および/または合致アイテムの数への要求特有の制限をサポートしてもよい(すなわち、上記で説明されるLimitパラメータを使用する)ことに留意されたい。いくつかのそのような実施形態では、これらの制限のうちのいずれか一方が満たされたときに(例えば、要求特有の制限を満たす前にシステム全体の制限が満たされた場合、またはその逆も同様)、クエリが終了させられ、継続トークンが要求側に返されてもよい。   The AttributesToGet parameter may include attribute types along with their names in some embodiments. In some embodiments, if the attribute name is not specified for the query request (and the Count parameter is “false”), all attributes of the item that match the query condition may be returned. In some embodiments, if the Count parameter is “true”, any default limit on the number of matching items returned by the data storage system in response to a query request may not apply. Setting the Count parameter to “true” and providing a list of AttributesToGet (within a single query request) can be invalid and the data storage system returns an error indication (eg, a validation error indication) May be. In some embodiments, a consistent read operation will be issued if the ConsistentRead parameter is set to true. Otherwise, a consistent read operation will eventually occur. As described above, if the number of items that match a single query request exceeds the value of the Limit parameter, the query may be terminated when the limit is reached. In this case, the data storage system may return an attribute value for the number of matching items up to the value of the Limit parameter and continue the query (eg, by including this LastEvaluatedKey as input for subsequent query requests). May include a continuation token (ie, LastEvaluatedKey parameter) that may be used to In some embodiments, the data storage system sets a system-wide limit on the number of matching items returned in response to a query request using the Query API and / or a request-specific limit on the number of matching items. Note that it may be supported (ie, using the Limit parameter described above). In some such embodiments, when any one of these restrictions is met (eg, if the system-wide limit is met before the request-specific limit is met, or vice versa) Similarly, the query may be terminated and a continuation token may be returned to the requester.
いくつかの実施形態では、Query要求のリターンパラメータは、Itemsパラメータ(特定されたクエリ条件に合致する、アイテムのリストおよび/またはそれらの関連属性値を含み得る)、Countパラメータ(応答においてアイテムの数を示し得る)、および/またはLastEvaluatedKeyパラメータ(上記で説明されるように、単一のクエリ要求に応答して情報を返すことができる、アイテムの数への所定の制限に達する前に、クエリ中に評価される最後のアイテムの一次キー値を特定し得る)。上述のように、LastEvaluatedKeyは、単一のクエリ要求に応答して情報を返すことができる、アイテムの数への所定の制限を超えた場合に、クエリの継続における開始点として使用されてもよい。いくつかの実施形態では、Countパラメータは、常に、合致アイテム(および/またはそれらの属性)も返されるかどうかにかかわらず、Query APIへの応答において返されてもよいことに留意されたい。データ記憶サービスによって提供される他のAPIと同様に、Query要求および/または応答は、異なる実施形態では、JSON要求/応答形式または別の好適な形式で提示されてもよい。Query APIに対応する、データ記憶サービスへの要求およびデータ記憶サービスから受信される応答の実施例が、一実施形態に従って以下で見出される。以下の実施例は、一実施形態による、「***」から「****」の間の評定を有する、1人の顧客(すなわち、CustomerIdが「12345678」である顧客)のために、「Pictures」と呼ばれるテーブルから全てのアイテムを読み出すために使用され得るクエリ、およびそのクエリ要求への応答を図示する。

要求形式例:

Query{
“TableName”:“Pictures”,
“QueryFilter”:{
“CustomerId”:(“AttributeValues”:[{“S”:“12345678”}],
“ComparisonOperator”:“EQ”},
“Ratings”:{“AttributeValues”:[{“S”:“***”},{“S”:“****”}
“ComparisonOperator”:“BETWEEN”}}




応答形式例:

“Items”:[{“CustomerId”:{“S”:“12345678”},
“Title”:{“S”:“sun flower”},
“DateCreated”:{“S”:“20100205T00:00:00Z”},
“Ratings”:{“S”:“***”}},
{“CustomerId”:{“S”:“12345678”},
“Title”:{“S”:“jasmine”},
“DateCreated”:{“D”:“20100206T00:00:00Z”},
“Ratings”:(“S”:“****”}},
{“CustomerId”:{“S”:“12345678”},
“Title”:{“S”:“lupine”},
“DateCreated”:{“D”:“20100301T00:00:00Z”},
“Ratings”:{“S”:“***”}}
],
“Count”:3,
“LastEvaluatedKey”:[{“S”:“12345678”},{“S”:“***”}]

In some embodiments, the return parameter of the Query request includes an Items parameter (which may include a list of items and / or their associated attribute values that match the specified query criteria), a Count parameter (the number of items in the response And / or LastEvaluatedKey parameter (as described above) during the query before reaching a predetermined limit on the number of items that can return information in response to a single query request Can identify the primary key value of the last item evaluated to). As described above, the LastEvaluatedKey may be used as a starting point in query continuation if a predetermined limit on the number of items that can return information in response to a single query request is exceeded. . Note that in some embodiments, the Count parameter may always be returned in response to the Query API, regardless of whether matching items (and / or their attributes) are also returned. As with other APIs provided by the data storage service, Query requests and / or responses may be presented in a JSON request / response format or another suitable format in different embodiments. An example of a request to the data storage service and a response received from the data storage service corresponding to the Query API is found below according to one embodiment. The following example, for one customer with a rating between “***” and “***” (ie, a customer with CustomerId “12345678”), according to one embodiment, Fig. 4 illustrates a query that can be used to retrieve all items from a table called "Pictures" and the response to that query request.

Example request format:
{
Query {
“TableName”: “Pictures”,
“QueryFilter”: {
“CustomerId”: (“AttributeValues”: [{“S”: “12345678”}],
“ComparisonOperator”: “EQ”},
“Ratings”: {“AttributeValues”: [{“S”: “***”}, {“S”: “***”]}
“ComparisonOperator”: “BETWEEN”}}
}
}
}

Example response format:
{
“Items”: [{“CustomerId”: {“S”: “12345678”},
“Title”: {“S”: “sun flower”},
“DateCreated”: {“S”: “20100205T00: 00: 00Z”},
“Ratings”: {“S”: “***”}},
{“CustomerId”: {“S”: “12345678”},
“Title”: {“S”: “jasmine”},
“DateCreated”: {“D”: “20100206T00: 00: 00Z”},
“Ratings”: (“S”: “***”)}},
{“CustomerId”: {“S”: “12345678”},
“Title”: {“S”: “lupine”},
“DateCreated”: {“D”: “2010301T00: 00: 00Z”},
“Ratings”: {“S”: “***”}}
],
“Count”: 3,
“LastEvaluatedKey”: [{“S”: “12345678”}, {“S”: “***”}]
}
本明細書で説明されるAPIによって特定されるように、クエリを行うための方法の一実施形態が、図12でフロー図によって図示されている。1210で図示されるように、この実施例では、本方法は、非リレーショナルデータベース内のテーブル(例えば、データ記憶サービスクライアントの代わりに維持されるテーブル)の中の1つ以上のアイテムを対象とする、クエリを行うサービス要求を受信することを含んでもよい。以前の実施例の場合のように、要求は、テーブル名(クエリ要求の標的であるテーブルを識別し得る)および一次キー値を含んでもよい。特定一次キー値が、単一の属性ハッシュキー値である場合(すなわち、識別されたテーブルに対する一次キーが、単一の属性の値に依存する単純一次キーである場合)、クエリは、テーブル名および一次キー値の組み合わせによって一意的に識別される、単一のアイテムを標的にしてもよい。この場合、1220からの肯定の出口として示され、本方法は、特定されたハッシュキー値に依存して、そのアイテムを含むテーブルの単一の区分にクエリをダイレクトすることを含んでもよい。この場合、本方法はまた、1250の場合のように、識別された単一のアイテムの1つ以上の属性値を含む応答を返すことを含んでもよい。   One embodiment of a method for performing a query, as specified by the API described herein, is illustrated by the flow diagram in FIG. As illustrated at 1210, in this example, the method is directed to one or more items in a table in a non-relational database (eg, a table maintained on behalf of a data storage service client). Receiving a service request to query. As in previous embodiments, the request may include a table name (which may identify the table that is the target of the query request) and a primary key value. If the specific primary key value is a single attribute hash key value (that is, the primary key for the identified table is a simple primary key that depends on the value of a single attribute), the query returns the table name And a single item that is uniquely identified by a combination of primary key values. In this case, shown as a positive exit from 1220, the method may include directing the query to a single partition of the table containing the item, depending on the identified hash key value. In this case, the method may also include returning a response including one or more attribute values of the identified single item, as in 1250.
特定一次キー値が、複合キー値である場合(すなわち、識別されたテーブルに対する一次キーが、ハッシュキー値および範囲キー値に依存する複合一次キーである場合)、クエリは、本明細書で説明されるように、特定されたハッシュキー値および特定された範囲キー条件に合致する、1つまたは複数のアイテムを標的にしてもよい。この実施例では、要求が、ハッシュキー属性値および単一の範囲キー属性値を特定する場合(例えば、要求が、範囲キー値が特定の値に等しいことを特定する、範囲キー条件を含む場合)、1240からの肯定の出口として示され、本方法は、再度、1250の場合のように、特定されたハッシュキー値に依存して、そのアイテムを含むテーブルの単一の区分にクエリをダイレクトし、識別された単一のアイテムの1つ以上の属性値を含む応答を返してもよい。   If the specific primary key value is a composite key value (ie, the primary key for the identified table is a composite primary key that depends on a hash key value and a range key value), the query is described herein. As such, one or more items that match the specified hash key value and the specified range key condition may be targeted. In this example, the request specifies a hash key attribute value and a single range key attribute value (eg, the request includes a range key condition that specifies that the range key value is equal to a specific value) ), Shown as a positive exit from 1240, the method again directs the query to a single partition of the table containing the item, depending on the identified hash key value, as in 1250 And return a response that includes one or more attribute values of the identified single item.
この実施例では、要求が、ハッシュキー属性値、および複数の範囲キー属性値に合致し得る範囲キー条件を特定する場合、1240からの否定の出口として示され、本方法は、1260の場合のように、特定されたハッシュキー値および範囲キー条件に依存して、テーブルの1つ以上の区分にクエリをダイレクトすることを含んでもよい。例えば、特定されたハッシュキー値に合致するアイテムのうちのいくつか(例えば、範囲キー値が所与の範囲内に入るアイテム)が、テーブルの1つの区分上で記憶されるが、特定されたハッシュキーに合致する他のアイテム(例えば、範囲キー値が異なる範囲内に入るアイテム)が、テーブルの別の区分上に記憶される場合、特定されたハッシュキー値および特定された範囲キー条件の両方に合致するアイテムの全てを識別するために、クエリは、複数の区分(場合によっては、区分がホストされる複数のマシン)を対象としてもよい。この場合、本方法は、1270の場合のように、ハッシュキー値および範囲キー条件の両方に合致する1つ以上のアイテムの1つ以上の属性値を含む、応答を返すことを含んでもよく、ハッシュキー値および範囲キー条件の両方に合致する1つ以上のアイテムのうちのいくつかは、異なる区分(場合によっては、異なるマシン)から読み出されてもよい。   In this example, if the request identifies a hash key attribute value and a range key condition that can match multiple range key attribute values, it is shown as a negative exit from 1240 and the method is As such, it may include directing the query to one or more sections of the table, depending on the identified hash key value and range key condition. For example, some of the items that match a specified hash key value (eg, items whose range key value falls within a given range) are stored on one partition of the table If other items that match the hash key (eg, items whose range key value falls within a different range) are stored on another partition of the table, the specified hash key value and the specified range key condition's To identify all of the items that match both, the query may be directed to multiple partitions (possibly multiple machines on which the partition is hosted). In this case, the method may include returning a response that includes one or more attribute values of one or more items that match both the hash key value and the range key condition, as in 1270, Some of the one or more items that match both the hash key value and the range key condition may be read from different partitions (possibly different machines).
単一のアイテムを対象とするクエリ(例えば、1240からの肯定の出口の場合のように、単純一次キーのハッシュキー値を特定する、またはハッシュキー値および単一の範囲キー値を特定するもの)は、パラメータの数およびタイプのいくらかの変動がサポートされた状態で、対応するGetItem要求のものと類似する機能性を実装してもよいことに留意されたい。いくつかの実施形態では、(上記で説明されるような)GetItem APIの機能性が、Query APIによって提供されてもよい一方で、他の実施形態では、本明細書で説明されるGetItem機能性および本明細書で説明されるQuery機能性は、異なるAPI(例えば、GetItem APIおよびQuery API)によって提供されてもよい。   A query that targets a single item (for example, specifying a hash key value of a simple primary key, or a hash key value and a single range key value, as in the case of a positive exit from 1240) Note that) may implement functionality similar to that of the corresponding GetItem request, with some variation in the number and type of parameters supported. In some embodiments, the GetItem API functionality (as described above) may be provided by the Query API, while in other embodiments, the GetItem functionality described herein. And the Query functionality described herein may be provided by different APIs (eg, GetItem API and Query API).
一実施形態によると、本明細書で説明されるAPIによって特定されるように、クエリを行うための方法のさらに詳細な実施例が、図13でフロー図によって図示されている。1310で図示されるように、この実施例では、本方法は、非リレーショナルデータベース内のテーブル(例えば、データ記憶サービスクライアントの代わりに維持されるテーブル)の中の1つ以上のアイテムを対象とする、クエリを行うサービス要求を受信することを含んでもよい。以前の実施例の場合のように、要求は、テーブル名(クエリの標的であるテーブルを識別し得る)および一次キー値を含んでもよい。この実施例では、特定された一次キー値は、複合キー値であり(すなわち、識別されたテーブルに対する一次キーは、ハッシュキー値および範囲キー値に依存する複合一次キーである)、クエリは、本明細書で説明されるように、要求において特定されるハッシュキー値および範囲キー条件に合致する複数のアイテムを標的にしてもよい。1320で図示されるように、本方法は、要求において特定されるハッシュおよび範囲値を判定するように要求を解析することを含んでもよい。   According to one embodiment, a more detailed example of a method for performing a query, as specified by the API described herein, is illustrated by the flow diagram in FIG. As illustrated at 1310, in this example, the method is directed to one or more items in a table in a non-relational database (eg, a table maintained on behalf of a data storage service client). Receiving a service request to query. As in previous embodiments, the request may include a table name (which may identify the table that is the target of the query) and a primary key value. In this example, the identified primary key value is a composite key value (ie, the primary key for the identified table is a composite primary key that depends on the hash key value and the range key value) and the query is: As described herein, multiple items that match the hash key value and range key conditions specified in the request may be targeted. As illustrated at 1320, the method may include parsing the request to determine the hash and range values specified in the request.
本方法は、1330の場合のように、特定されたハッシュおよび範囲値に依存して、クエリの初期標的を含む区分にクエリをダイレクトし、その区分からクエリの1つ以上の標的に関する情報(例えば、クエリによって標的にされるアイテムの属性値)を読み出すことを含んでもよい。例えば、いくつかの実施形態では、特定のハッシュキー値に合致するアイテムが、それらの範囲キー値によって、テーブルの中で順序付けられてもよい。そのような実施形態では、特定されたハッシュキー値および特定された範囲キー条件に合致する第1の範囲キー値の組み合わせは、クエリ条件に合致するテーブルの中の第1のアイテムを一意的に識別してもよい。そのような実施形態では、クエリは、最初に、この組み合わせによって識別されるアイテムを含有する区分を対象としてもよい。場合によっては、特定されたハッシュキー値および特定された範囲キー条件に合致する、1つ以上の追加のアイテムが、クエリが対象とする第1の区分上に存在してもよく、これらの標的の全て(すなわち、アイテム自体および/またはそれらの属性値の特定サブセット)が、クエリに応答して返されてもよい。   The method directs the query to a partition that includes the initial target of the query, such as in 1330, depending on the identified hash and range value, from which information about one or more targets of the query (eg, , Reading the attribute value of the item targeted by the query. For example, in some embodiments, items that match a particular hash key value may be ordered in a table by their range key value. In such an embodiment, the combination of the specified hash key value and the first range key value that matches the specified range key condition uniquely identifies the first item in the table that matches the query condition. You may identify. In such an embodiment, the query may initially be directed to a segment containing items identified by this combination. In some cases, one or more additional items that match the specified hash key value and the specified range key condition may be present on the first segment targeted by the query, and these targets (Ie, the items themselves and / or specific subsets of their attribute values) may be returned in response to the query.
場合によっては、特定されたハッシュキー値および特定された範囲キー条件の両方に合致するアイテムのうちのいくつかが、クエリが対象とした第1の区分以外のテーブルの1つ以上の区分上に記憶されてもよい。該当する場合、1340からの否定の出口として示され、1350の場合のように、クエリが1つ以上の他の区分を対象としてもよく、これらの追加のクエリ標的が読み出されてもよい。例えば、特定されたハッシュキー値および特定された範囲キー条件の両方に合致するアイテムの数は、テーブルの各区分の中に記憶されたアイテムの数よりも大きくてもよい。別の実施例では、(例えば、アイテムが特定の順序で選別され、それらの範囲キー値に従って特定の区分に割り当てられる実施形態において)アイテムがテーブルの中で選別されて記憶され、および/または種々の区分に割り当てられる順序により、標的アイテムは、区分境界を越えてもよい。これらおよび他の場合において、本方法は、1370の場合のように、ハッシュキー値および範囲キー条件に合致する1つ以上のアイテムの1つ以上の属性値を含む、応答を返すことを含んでもよく、ハッシュキー値および範囲キー条件の両方に合致する1つ以上のアイテムのうちのいくつかは、異なる区分(場合によっては、異なる物理的コンピューティングノードまたは記憶デバイス)から読み出されてもよい。   In some cases, some of the items that meet both the specified hash key value and the specified range key condition are on one or more partitions of the table other than the first partition targeted by the query. It may be stored. Where applicable, shown as a negative exit from 1340, as in 1350, the query may be directed to one or more other partitions, and these additional query targets may be read. For example, the number of items that match both the specified hash key value and the specified range key condition may be greater than the number of items stored in each partition of the table. In another example, items are sorted and stored in a table (eg, in embodiments where items are sorted in a particular order and assigned to a particular partition according to their range key values) and / or various Depending on the order assigned to the partitions, the target item may cross the partition boundary. In these and other cases, the method may include returning a response that includes one or more attribute values of one or more items that match the hash key value and the range key condition, as in 1370. Often, some of the one or more items that meet both the hash key value and the range key condition may be read from different partitions (possibly different physical computing nodes or storage devices). .
しかしながら、図13で図示されるように、特定されたハッシュキー値および特定された範囲キー条件の両方に合致するアイテムの全てが、クエリが対象とした第1の区分上に記憶される場合、1340からの肯定の出口として示され、本方法は、1360の場合のように、ハッシュキー値および範囲キー条件の両方に合致する1つ以上のアイテムの1つ以上の属性値を含む、応答を返すことを含んでもよく、ハッシュキー値および範囲キー条件の両方に合致する1つ以上のアイテムの全ては、最初に標的にされた区分(したがって、単一の物理的コンピューティングノードまたは記憶デバイス)から読み出される。   However, as illustrated in FIG. 13, if all of the items that match both the specified hash key value and the specified range key condition are stored on the first partition targeted by the query, Shown as a positive exit from 1340, the method returns a response that includes one or more attribute values of one or more items that match both the hash key value and the range key condition, as in 1360. All of the one or more items that match both the hash key value and the range key condition are initially targeted partitions (thus a single physical computing node or storage device) Read from.
Query APIの使用は、以下の実施例を介して(すなわち、以下の擬似コードによって)さらに例証されてもよい。第1の実施例では、単語「The」で始まり、単一の顧客ID番号と関連付けられる、テーブルに記憶された映画の題名の全てを読み出すために、テーブルにクエリ動作を行うように、要求が行われる。この実施例は、属性「ID」および「movie titles」に基づく、複合一次キーを伴うテーブルを仮定する。このQuery要求は、「The」で始まる範囲値(すなわち、「The」で始まる映画の題名)を有する、一次ハッシュ値2(例えば、顧客ID=2)について、全てのアイテムを読み出すために使用されてもよい。

results=Query(‘hashrange−table’,array(NUMBER=>2),array(
‘RangeKeyCondition’=>array(
‘ComparisonOperator’=>BEGINS_WITH,
‘AttributeValueList’=>array(array(STRING=>“The”))

));
The use of the Query API may be further illustrated through the following examples (ie, by the following pseudo code). In the first example, a request is made to query the table to retrieve all of the movie titles stored in the table that begin with the word “The” and are associated with a single customer ID number. Done. This example assumes a table with a composite primary key based on the attributes “ID” and “movie titles”. This Query request is used to retrieve all items for a primary hash value 2 (eg, customer ID = 2) with a range value starting with “The” (ie, a movie title starting with “The”). May be.

results = Query ('hashrange-table', array (NUMBER => 2), array (
'RangeKeyCondition'=> array (
'ComparisonOperator'=> BEGINS_WITH,
'AttributeValueList'=> array (array (STRING => “The”))
)
));
上述のように、いくつかの実施形態では、(フィルタにかける前に)単一のクエリによって返されるアイテムの数は、(例えば、1MBのデータに)限定されてもよい。そのような実施形態では、クエリが1MBよりも多くのデータを返す必要がある場合、最後に返された値を伴うアイテムの一次キーに基づいて、第2のクエリが設定されてもよい。Query APIは、第2のクエリの開始点として、LastEvaluatedKeyパラメータにおいて返される値を使用してもよい。例えば、途切れたクエリによって返されるLastEvaluatedKeyパラメータ値が、変数に記憶され、Exclusive StartKey入力パラメータ値として次のクエリに提供されてもよい。以下の擬似コード例が、この一連の動作を例証する。

//first query
results=query(‘hashrange−table’,array(NUMBER=>1),array(‘Limit’=>2));

//retrieve the LastEvaluatedKey
lastEvaluatedKey=results−>body−>LastEvaluatedKey;

//create ExclusiveStartKey
exclusiveStartKey=array(‘HashKeyElement’=>array(NUMBER=>
(int)lastEvaluatedKey−>HashKeyElement−>N),
‘RangeKeyElement’=>array(STRING=>
(string)lastEvaluatedKey−>RangeKeyElement−>S)
);

//perform another query providing the LastEvaluatedKey as the ExclusiveStartKey
//for the second query
results=query(‘hashrange−table’,
array(NUMBER=>1),
array(‘Limit’=>2,
‘ExclusiveStartKey’=>ExclusiveStartKey)
);
As mentioned above, in some embodiments, the number of items returned by a single query (before filtering) may be limited (eg, to 1 MB of data). In such embodiments, if the query needs to return more than 1 MB, a second query may be set based on the primary key of the item with the last returned value. The Query API may use the value returned in the LastEvaluatedKey parameter as the starting point for the second query. For example, the LastEvaluatedKey parameter value returned by a broken query may be stored in a variable and provided to the next query as an Exclusive StartKey input parameter value. The following pseudo code example illustrates this sequence of operations.

// first query
results = query ('hashrange-table', array (NUMBER => 1), array ('Limit'=>2));

// retrieve the LastEvaluatedKey
lastEvaluatedKey = results->body->LastEvaluatedKey;

// create ExclusiveStartKey
exclusiveStartKey = array ('HashKeyElement'=> array (NUMBER =>
(Int) lastEvaluatedKey->HashKeyElement-> N),
'RangeKeyElement'=> array (STRING =>
(String) lastEvaluatedKey->RangeKeyElement-> S)
);

// perform another query providing the LastEvaluatedKey as the ExclusiveStartKey
// for the second query
results = query ('hashrange-table',
array (NUMBER => 1),
array ('Limit'=> 2,
'ExclusiveStartKey'=> ExclusiveStartKey)
);
本明細書で示されるように、複合一次キーは、ハッシュおよび範囲インデックスとしてインデックス作成されてもよい。このマルチパートキーは、第1および第2のインデックス値の間の階級を維持してもよい。例えば、表7として以下で例証されるアドレステーブルは、アドレステーブルの中の各アイテムを識別するために、ハッシュ値としての顧客のUserID、およびアドレスが範囲としてテーブルに入力された年を使用する。テーブルの中の全ての入力が、UserIDおよび年を有さなければならない一方で、各UserID/年の複合キーは、任意の一式の他の属性を有することができる。   As shown herein, the composite primary key may be indexed as a hash and range index. The multipart key may maintain a class between the first and second index values. For example, the address table illustrated below in Table 7 uses the customer's UserID as a hash value and the year the address was entered into the table as a range to identify each item in the address table. While all entries in the table must have a UserID and year, each UserID / year composite key can have any set of other attributes.
この実施例では、UserIDは、ハッシュインデックスであり、同等性についての(すなわち、値の正確な合致についての)比較のみをサポートする。この実施例では、年は、範囲インデックスである。したがって、テーブルにクエリを行うときに検索を制約するように、種々の比較演算子が、年に適用されてもよい。例えば、Query要求は、2010より前の年についてBobのアドレス情報の全てを読み出すために使用されてもよい(すなわち、Year属性値が2010未満であるという条件を特定するクエリ)。そのようなクエリは、表7の第5および第6の入力で示されるように、2009年および2004年についてBobのアドレス情報を返すであろう。以下で例証される表8等の他のテーブルについては、範囲キーは、映画の題名等の文字列タイプ属性であってもよいことに留意されたい。この実施例では、テーブルは、それらのTitle属性値の値(すなわち、それらの範囲キー値)によってアルファベット順で、同一のUserIDを有するアイテムを選別してもよく、各UserID/Titleペアは、テーブルの中の単一のアイテムを一意的に識別してもよい。   In this example, UserID is a hash index and supports only comparisons for equivalence (ie, for exact matches of values). In this example, the year is a range index. Thus, various comparison operators may be applied to the years to constrain the search when querying the table. For example, a Query request may be used to retrieve all of Bob's address information for years prior to 2010 (ie, a query that specifies a condition that the Year attribute value is less than 2010). Such a query would return Bob's address information for 2009 and 2004, as indicated by the fifth and sixth inputs in Table 7. Note that for other tables, such as Table 8 illustrated below, the range key may be a string type attribute, such as a movie title. In this example, the table may screen items having the same UserID in alphabetical order by their Title attribute value (ie, their range key value), and each UserID / Title pair is a table A single item within may be uniquely identified.
種々の実施形態では、Scan APIは、テーブルにわたって完全スキャンを行うことによって、記憶サービスクライアントの代わりにテーブルの中に記憶された1つ以上のアイテムおよび属性を読み出すために使用されてもよい。返されるアイテムは、フィルタを特定することによって限定されてもよい。いくつかの実施形態では、Scan APIは、上記で説明されるQuery APIよりも豊富なセマンティックスをサポートしてもよい。例えば、それは、「CONTAINS」、「IS NULL」、「IN」等の比較演算子をサポートしてもよい。   In various embodiments, the Scan API may be used to retrieve one or more items and attributes stored in a table on behalf of a storage service client by performing a full scan across the table. The items returned may be limited by specifying a filter. In some embodiments, the Scan API may support richer semantics than the Query API described above. For example, it may support comparison operators such as “CONTAINS”, “IS NULL”, “IN”, etc.
いくつかの実施形態では、Scan APIの入力パラメータは、上記で説明されるQuery APIに対してサポートされる同一の入力パラメータのうちのいくつかを含んでもよい。例えば、入力パラメータは、TableName(更新されるアイテムが記憶される、またはアイテムが条件付きで挿入される、テーブルの名前を含む文字列であり得る)、AttributesToGetパラメータ(値が返される、属性の配列であり得る)、Limitパラメータ(単一のクエリ要求に応答して返される結果の最大数を特定する整数であり得る)、Countパラメータ(これらのアイテムの属性値よりもむしろ、クエリに合致するアイテムのカウントが返されるべきかどうかを示す、ブール値であり得る)、および/またはLastEvaluatedKeyパラメータ(スキャン動作が、単一のScan要求に応答して情報を返すことができるアイテム数への所定の制限を超えた、スキャン動作の継続である場合、スキャン動作の開始点として使用される一次キー値を特定し得る)を含んでもよい。Scan API入力パラメータはまた、結果セットに適用されるフィルタを特定し得る、ScanFilterパラメータを含んでもよい。ScanFilterは、以下で説明されるように、1つ以上のAttibuteName値を対応するScanCondition構造にマップしてもよい。いくつかの実施形態では、特定されたスキャン条件の全ては、アイテムがフィルタに合致し、結果セットに含まれるために、満たされる必要があり得る。   In some embodiments, the scan API input parameters may include some of the same input parameters supported for the Query API described above. For example, the input parameters are TableName (which can be a string containing the name of the table where the item to be updated is stored or the item is conditionally inserted), AttributesToGet parameter (an array of attributes whose values are returned) A Limit parameter (which can be an integer specifying the maximum number of results returned in response to a single query request), a Count parameter (the items that match the query rather than the attribute values of these items) Can be a Boolean value indicating whether a count of items should be returned, and / or a LastEvaluatedKey parameter (a predetermined limit on the number of items that a scan operation can return information in response to a single Scan request) If the scanning operation is continued beyond Scan may identify primary key value used as a starting point of operation) it may contain. The Scan API input parameter may also include a ScanFilter parameter that may specify a filter to be applied to the result set. A ScanFilter may map one or more AttributeName values to a corresponding ScanCondition structure, as described below. In some embodiments, all of the identified scan conditions may need to be met in order for the item to match the filter and be included in the result set.
いくつかの実施形態では、各ScanCondition構造は、合致する条件を特定してもよく、対応するAttributesValuesパラメータは、スキャン条件との比較が行われるであろう、属性値のリストを含んでもよい。いくつかの実施形態では、スキャン条件は、「EQ」(すなわち、〜に等しい)、「NE」(すなわち、〜に等しくない)、「GT」(すなわち、〜よりも大きい)、「GE」(すなわち、〜以上)、「LT」(すなわち、〜未満)、「LE」(すなわち、〜以下)、「NOT NULL」(すなわち、属性が存在する)、「NULL」(すなわち、属性が存在しない)、「CONTAINS」(すなわち、多値属性が特定値を含有する)、「NOT CONTAINS」(すなわち、多値属性が特定値を含有しない)、「BEGINS WITH」、「IN」(すなわち、属性が特定値のうちの1つに合致する)、または「BETWEEN」等の値のうちの1つを有する、ComparisonOperatorパラメータを使用して特定されてもよい。いくつかの実施形態では、ComparisonOperatorが、「EQ」、「GT」、「GE」、「LT」、「LE」、または「BEGINS WITH」のうちの1つである場合、単一のスカラー値がAttributeValuesパラメータに含まれてもよい。ComparisonOperatorが「IN」である場合、特定属性値の全てが、スカラーおよび同一タイプであってもよい。ComparisonOperatorが「BETWEEN」である場合、2つの値がAttributeValuesパラメータに含まれてもよい。ComparisonOperatorが「CONTAINS」または「NOT CONTAINS」である場合、AttributeValuesパラメータは、多値またはスカラー文字列であってもよい(例えば、スカラー文字列属性については、比較が部分文字列合致の検索に変換してもよい)。ComparisonOperatorが「NULL」または「NOT NULL」である場合、AttributeValuesパラメータは、空白(または空値)であってもよく、AttributeValuesパラメータの任意の値を提供することにより、エラー指示の返信をもたらし得る。いくつかの実施形態では、特定比較が、タイプ「文字列」を有する(例えば、2進文字列として表されるUTF8文字列を伴う)属性については辞書式で、およびタイプ「数字」を有する属性については数値的に行われてもよいことに留意されたい。いくつかの実施形態では、「BETWEEN」演算子に対して特定される2つの値は、包含的であり得、第1の値が第2の値よりも小さい。「BEGINS WITH」演算子は、スカラー文字列のみに有効である前置演算子であってもよい。   In some embodiments, each ScanCondition structure may specify matching conditions, and the corresponding AttributesValues parameter may include a list of attribute values that will be compared with the scanning conditions. In some embodiments, the scan conditions are “EQ” (ie, equal to), “NE” (ie, not equal to), “GT” (ie, greater than), “GE” ( Ie, above), “LT” (ie, less than), “LE” (ie, below), “NOT NULL” (ie, attribute exists), “NULL” (ie, attribute does not exist). , “CONTAINS” (ie multi-value attribute contains a specific value), “NOT CONTAINS” (ie multi-value attribute does not contain a specific value), “BEGINS WITH”, “IN” (ie attribute specific) Specified using the ComparisonOperator parameter, which has one of the values such as “BETWEEN” It may be. In some embodiments, if the ComparisonOperator is one of “EQ”, “GT”, “GE”, “LT”, “LE”, or “BEGINS WITH”, a single scalar value is It may be included in the AttributeValues parameter. When the ComparisonOperator is “IN”, all of the specific attribute values may be a scalar and the same type. If the ComparisonOperator is “BETWEEN”, two values may be included in the AttributeValues parameter. If ComparisonOperator is “CONTAINS” or “NOT CONTAINS”, the AttributeValues parameter may be multi-valued or a scalar string (eg, for scalar string attributes, the comparison converts to a search for substring matches. May be) If the ComparisonOperator is “NULL” or “NOT NULL”, the AttributeValues parameter may be blank (or empty) and may provide an error indication reply by providing any value for the AttributeValues parameter. In some embodiments, the specific comparison is lexicographic for attributes that have the type “string” (eg, with a UTF8 string represented as a binary string), and attributes that have the type “number” Note that may be done numerically. In some embodiments, the two values specified for the “BETWEEN” operator may be inclusive, where the first value is less than the second value. The “BEGINS WITH” operator may be a prefix operator that is valid only for scalar strings.
AttributesToGetパラメータは、いくつかの実施形態では、それらの名前とともに属性タイプを含んでもよい。いくつかの実施形態では、属性名がスキャン要求に対して特定されていない場合(およびCountパラメータが「偽」である場合)、スキャン条件に合致するアイテムの全ての属性が返されてもよい。いくつかの実施形態では、Countパラメータが「真」である場合、スキャン要求に応答してデータ記憶システムによって返される合致アイテムの数へのいかなる既定の制限も適用されなくてもよい。Countパラメータを「真」に設定し、(単一のスキャン要求の中で)AttributesToGetのリストを提供することは、無効であり得、データ記憶システムがエラー指示(例えば、検証エラーの指示)を返してもよい。上述のように、単一のスキャン要求に合致するアイテムの数がLimitパラメータの値を超える場合、スキャン動作は、制限に達したときに終了させられてもよい。この場合、データ記憶システムは、最大でLimitパラメータの値までの合致アイテムの数の属性値を返してもよく、(例えば、後続のスキャン要求の入力として、このLastEvaluatedKeyを含むことによって)スキャン動作を継続するために使用され得る、継続トークン(すなわち、LastEvaluatedKeyパラメータ)を含んでもよい。いくつかの実施形態では、データ記憶システムは、Scan APIを使用したスキャン要求に応答して返される合致アイテムの数へのシステム全体の制限、および/または合致アイテムの数への要求特有の制限をサポートしてもよい(すなわち、上記で説明されるLimitパラメータを使用する)ことに留意されたい。いくつかのそのような実施形態では、これらの制限のうちのいずれか一方が満たされたときに(例えば、要求特有の制限を満たす前にシステム全体の制限が満たされた場合、またはその逆も同様)、スキャン動作が終了させられ、継続トークンが要求側に返されてもよい。   The AttributesToGet parameter may include attribute types along with their names in some embodiments. In some embodiments, if no attribute name is specified for the scan request (and the Count parameter is “false”), all attributes of the item that meet the scan condition may be returned. In some embodiments, if the Count parameter is “true”, any default limit on the number of matching items returned by the data storage system in response to a scan request may not apply. Setting the Count parameter to “true” and providing a list of AttributesToGet (within a single scan request) can be invalid and the data storage system returns an error indication (eg, a validation error indication) May be. As described above, if the number of items that match a single scan request exceeds the value of the Limit parameter, the scan operation may be terminated when the limit is reached. In this case, the data storage system may return an attribute value for the number of matching items up to the value of the Limit parameter and perform a scan operation (eg, by including this LastEvaluatedKey as input for subsequent scan requests) It may include a continuation token (ie, LastEvaluatedKey parameter) that may be used to continue. In some embodiments, the data storage system may provide a system-wide limit on the number of matching items returned in response to a scan request using the Scan API and / or a request-specific limit on the number of matching items. Note that it may be supported (ie, using the Limit parameter described above). In some such embodiments, when any one of these restrictions is met (eg, if the system-wide limit is met before the request-specific limit is met, or vice versa) Similarly, the scanning operation may be terminated and a continuation token may be returned to the requester.
いくつかの実施形態では、上記で説明されるように、Scan要求に応答して行われるスキャンプロセスは、一貫した読み取り動作ではなくてもよいことに留意されたい。言い換えれば、スキャンが行われている間にすでに「スキャンされている」データの変更は、スキャン結果に含まれなくてもよい。一方で、上記で説明されるように、Query要求に応答して行われるクエリ動作は、デフォルトで、最終的に一貫した読み取り動作であってもよく、かつクエリが一貫した読み取り動作として行われるべきであることを指定するオプションをサポートしてもよい。最終的に一貫した読み取り動作は、場合によっては、最近完了したPutItemまたはUpdateItem動作の結果を反映しない場合があることに留意されたい。   Note that in some embodiments, as described above, the scanning process performed in response to a Scan request may not be a consistent read operation. In other words, changes to data that has already been “scanned” while a scan is being performed may not be included in the scan results. On the other hand, as explained above, the query operation performed in response to a Query request may by default be a consistent read operation, and the query should be performed as a consistent read operation. An option may be supported to specify that Note that the final consistent read operation may not reflect the result of a recently completed PutItem or UpdateItem operation in some cases.
いくつかの実施形態では、Scan要求のリターンパラメータは、Itemsパラメータ(それぞれが特定されたスキャン条件に合致する属性値のマップを含む、アイテムの配列を含み得る)、Countパラメータ(応答において表されるアイテムの数を示し得る)、ScannedCountパラメータ(Scan要求に応答してスキャンされるアイテムの数を示し得る)、および/またはLastEvaluatedKeyパラメータ(上記で説明されるように、単一のスキャン要求に応答して属性が返される、アイテムの数への所定の制限に達する前に、スキャン動作中に評価される最後のアイテムの一次キー値を特定し得る)を含んでもよい。上述のように、LastEvaluatedKeyパラメータの値は、単一のスキャン要求に応答して情報を返すことができる、アイテムの数への所定の制限を超えた場合に、スキャン動作の継続における開始点として使用されてもよい。いくつかの実施形態では、Countパラメータは、常に、合致アイテム(および/またはそれらの属性)も返されるかどうかにかかわらず、Scan APIに対する応答において返されてもよいことに留意されたい。   In some embodiments, the scan request return parameters include an Items parameter (which may include an array of items, each containing a map of attribute values that match the specified scan criteria), a Count parameter (represented in the response). In response to a single scan request (as described above), a ScannedCount parameter (which may indicate the number of items scanned in response to a Scan request), and / or a LastEvaluatedKey parameter (as described above). May return an attribute, which may identify a primary key value of the last item evaluated during the scan operation before reaching a predetermined limit on the number of items). As described above, the value of the LastEvaluatedKey parameter can be used as a starting point in the continuation of a scan operation when a predetermined limit on the number of items that can return information in response to a single scan request is exceeded. May be. Note that in some embodiments, the Count parameter may always be returned in response to the Scan API, regardless of whether matching items (and / or their attributes) are also returned.
データ記憶サービスによって提供される他のAPIと同様に、Scan要求および/または応答は、異なる実施形態では、JSON要求/応答形式または別の好適な形式で提示されてもよい。Scan APIに対応する、データ記憶サービスへの要求およびデータ記憶サービスから受信される応答の実施例が、一実施形態に従って以下で見出される。以下の実施例は、一実施形態による、「2009−12−12T10:30:30Z」の後に作成され、かつ「*」または「*****」という評定(例えば、利用可能な最高および最悪の評定値)を有する、「Pictures」と呼ばれるテーブルに記憶された全てのアイテムの題名および作成日を読み出すために使用され得る、スキャン要求、および対応する応答を例証する。

要求形式例:

“TableName”:“Pictures”,
“AttributesToGet”:[“Title”,“DateCreated”],
“MaxItemsToScan”:1000,
“Filter”:{
“DateCreated”:{“AttributeValues”:[{“S”:“2009−12−12T10:30:30Z”}],
“ComparisonOperator”:“GT”},
“Rating”:{“AttributeValues”:[{“S”:“*”},{“S”:“*****”}],
“ComparisonOperator”:“IN”}



応答形式例:

“Items“:[
{“Title”:{“S”:“sun flower”},“DateCreated”:{“S”:“20100205T00:00:00Z”}},
{“Title”:{“S”:“jasmine”},“DateCreated”:{“S”:“20100206T00:00:00Z”}},
{“Title”:{“S”:“lupine”},“DateCreated”:{“D”:“20100301T00:00:00Z”}},
],
],
“Count”:3,
“ScannedCount”:200,
“LastEvaluatedKey”:[{“S”:“some−customer”},{“S”:“Daffodils”}]

As with other APIs provided by the data storage service, the Scan request and / or response may be presented in a JSON request / response format or another suitable format in different embodiments. An example of a request to the data storage service and a response received from the data storage service corresponding to the Scan API is found below according to one embodiment. The following examples are created after “2009-12-12T10: 30: 30Z” and rated “*” or “****” (eg, highest and worst available, according to one embodiment) 2 illustrates a scan request and corresponding response that can be used to retrieve the title and creation date of all items stored in a table called “Pictures” with

Example request format:
{
“TableName”: “Pictures”,
“AttributesToGet”: [“Title”, “DateCreated”],
“MaxItemsToScan”: 1000,
“Filter”: {
“DateCreated”: {“AttributeValues”: [{“S”: “2009-12-12T10: 30: 30Z”}],
“ComparisonOperator”: “GT”},
“Rating”: {“AttributeValues”: [{“S”: “*”}, {“S”: “******”}],
“ComparisonOperator”: “IN”}
}
}
}
Example response format:
{
“Items”: [
{“Title”: {“S”: “sun flower”}, “DateCreated”: {“S”: “20100205T00: 00: 00Z”}},
{“Title”: {“S”: “jasmine”}, “DateCreated”: {“S”: “20100206T00: 00: 00Z”}},
{“Title”: {“S”: “lupine”}, “DateCreated”: {“D”: “2010301T00: 00: 00Z”}},
],
],
“Count”: 3,
“ScannedCount”: 200,
“LastEvaluatedKey”: [{“S”: “some-customer”}, {“S”: “Daffodils”}]
}
本明細書で説明されるScan APIによって定義されるもの等のテーブルスキャン動作を行うための方法の一実施形態が、図14でフロー図によって図示されている。いくつかの実施形態では、テーブル全体をスキャンすることは、2つ以上の物理的コンピューティングノードまたは記憶デバイス上でホストされ得る、2つ以上の区分をスキャンすることを伴ってもよいことに留意されたい。1410で図示されるように、この実施例では、本方法は、非リレーショナルデータベース内のテーブル(例えば、データ記憶サービスクライアントの代わりに維持されるテーブル)をスキャンし、1つ以上のアイテムおよび/またはそれらの属性を返すサービス要求を受信することを含んでもよい。以前の実施例の場合のように、スキャン要求は、テーブル名(スキャン要求の標的であるテーブルを識別し得る)を含んでもよい。要求はまた、値が返される1つ以上の属性、および/またはスキャン動作の結果がフィルタにかけられる、または選別される、1つ以上の条件を特定してもよい。要求がフィルタ基準を特定する場合、1420からの肯定の出口として示され、本方法は、1430の場合のように、テーブルをスキャンし、フィルタ基準に対してアイテムを評価することを含んでもよい。上記で説明されるように、フィルタ基準は、テーブルの中のアイテムの種々の属性の値、条件、または値の範囲を特定してもよい。アイテムの属性値が特定フィルタ条件を満し(1440からの肯定の出口として示される)、要求が、値が応答において返される、1つ以上の属性を特定する(1450からの肯定の出口として示される)場合、アイテムにおける特定属性の値が、1460の場合のように、スキャン要求に対する結果セットに含まれてもよい。   One embodiment of a method for performing a table scan operation, such as that defined by the Scan API described herein, is illustrated by the flow diagram in FIG. Note that in some embodiments, scanning the entire table may involve scanning more than one partition that may be hosted on more than one physical computing node or storage device. I want to be. As illustrated at 1410, in this example, the method scans a table in a non-relational database (eg, a table maintained on behalf of a data storage service client) and scans one or more items and / or It may include receiving a service request that returns those attributes. As in previous embodiments, the scan request may include a table name (which may identify the table that is the target of the scan request). The request may also specify one or more attributes for which values are returned and / or one or more conditions under which the results of the scanning operation are filtered or screened. If the request identifies filter criteria, shown as a positive exit from 1420, the method may include scanning the table and evaluating items against the filter criteria, as in 1430. As described above, the filter criteria may specify values, conditions, or ranges of values for various attributes of items in the table. The item's attribute value meets a specific filter condition (shown as a positive exit from 1440), and the request specifies one or more attributes whose values are returned in the response (shown as a positive exit from 1450). The value of the specific attribute in the item may be included in the result set for the scan request, as in 1460.
アイテムの属性値が特定フィルタ条件を満たす(1440からの肯定の出口として示される)が、要求が、値が応答において返される、いかなる属性も特定しない(1450からの否定の出口として示される)場合、アイテムにおける属性の全ての値が、1470の場合のように、スキャン要求に対する結果セットに含まれてもよい。アイテムの属性値が特定フィルタ条件を満たさない場合、1440からの否定の出口として示され、アイテム(すなわち、その属性値)は、スキャン要求に対する結果セットに含まれなくてもよい。処理されるアイテムがさらにあり(すなわち、スキャンされる、および/または特定フィルタ基準に対して評価されるアイテムがさらにあり)、スキャン制限(例えば、スキャンすることができる、または単一のスキャン要求に応答して結果を返すことができる、アイテムの数への所定の制限)がまだ満たされていない場合、1480からの肯定の出口として示され、調査されるアイテムがなくなるまで、またはそのようなスキャン制限に達するまで、1440、1450、1460、1470、および/または1480として図示される動作が、テーブルの中の追加のアイテムに対して繰り返されてもよい。これは、図14で1480から1440へのフィードバックによって図示されている。図14で図示されるように、いったんテーブルの中のアイテムの全てが処理され、あるいは単一のスキャン要求に応じてスキャンおよび/または返されるアイテムの数への所定の制限が満たされると、1480からの否定の出口として示され、本方法は、1490の場合のように、要求を要求側に返すことを含んでもよい。1490に示され、以下でさらに詳細に説明されるように、単一のScan要求に応答して要求側に返される結果は、場合によっては、特定基準を満たすアイテムおよび/または属性値の一部分のみを含んでもよい。   If the attribute value of the item satisfies a specific filter condition (indicated as a positive exit from 1440), but the request does not specify any attribute (indicated as a negative exit from 1450), the value is returned in the response , All values of attributes in the item may be included in the result set for the scan request, as in 1470. If an item's attribute value does not meet a specific filter condition, it is shown as a negative exit from 1440, and the item (ie, its attribute value) may not be included in the result set for the scan request. There are more items to be processed (ie, there are more items to be scanned and / or evaluated against specific filter criteria) and scan restrictions (eg, can be scanned or on a single scan request) If the predetermined limit on the number of items that can be returned in response is not yet met, it is shown as a positive exit from 1480 until there are no more items to be investigated or such a scan The operations illustrated as 1440, 1450, 1460, 1470, and / or 1480 may be repeated for additional items in the table until the limit is reached. This is illustrated by the feedback from 1480 to 1440 in FIG. As illustrated in FIG. 14, once all of the items in the table have been processed, or a predetermined limit on the number of items scanned and / or returned in response to a single scan request is met, 1480 The method may include returning the request to the requestor, as in 1490. As shown in 1490 and described in more detail below, the result returned to the requestor in response to a single Scan request may in some cases be only a portion of the items and / or attribute values that meet the specified criteria. May be included.
要求がいかなるフィルタ基準も特定しない(1420からの否定の出口として示される)が、要求が、値が返される1つ以上の属性を特定する(1425からの肯定の出口として示される)場合、結果セットは、テーブルの中のアイテムの全ての特定属性の値を含んでもよい。言い換えれば、この場合、このスキャン動作に対する完全な一式の結果は、テーブルの中のアイテムの全ての特定属性の値を含むであろう。しかしながら、いくつかの実施形態では、(例えば、単一のスキャン要求に応答して、スキャンおよび/または返されるアイテムの数への所定の制限が、要求に対して、あるいはシステム全体またはクライアント特有のパラメータによって特定された場合)単一のスキャン要求に応答して、これらの結果のうちの全てを返せるわけではない(または必ずしも発見できるわけでもない)ことに留意されたい。例えば、テーブルの中の第1のアイテムの特定属性の値は、(1435の場合のように)結果セットに含まれてもよく、他の処理するアイテムがあり、スキャン制限にまだ達していない(1455からの肯定の出口として示される)場合、1つ以上の他のアイテムの特定の属性が、結果セットに含まれてもよい。これは、図14で1455から1425へのフィードバックによって図示されている。いったんアイテムの全ての特定属性が結果セットに追加され、またはスキャン制限に達すると(1455からの否定の出口として示される)、1490の場合のように、結果セットの少なくとも一部分を含む応答が、要求側に返されてもよい。同様に、要求がいかなるフィルタ基準も特定せず(1420からの否定の出口として示される)、要求が、値が返されるいかなる属性も特定しない(1425からの否定の出口として示される)場合、結果セットは、テーブルの中のアイテムの全ての属性の全ての値を含んでもよい。言い換えれば、この場合、このスキャン動作に対する完全な一式の結果は、テーブルの中のアイテムの全ての属性の全ての値を含むであろう。例えば、テーブルの中の第1のアイテムの属性の全ての値は、(1445の場合のように)結果セットに含まれてもよく、他の処理するアイテムがあり、スキャン制限にまだ達していない(1455からの肯定の出口として示される)場合、1つ以上の他のアイテムの属性の全てが、結果セットに含まれてもよい。再度、これは、図14で1455から1425へのフィードバックによって図示されている。この場合、いったんアイテムの全ての属性の全てが結果セットに追加され、またはスキャン制限に達すると(1455からの否定の出口として示される)、1490の場合のように、結果セットの少なくとも一部分を含む応答が、要求側に返されてもよい。この実施例で図示されるように、いくつかの実施形態では、単一のスキャン要求に応答して、スキャン動作の結果のうちの全てを返えせるわけではない(または必ずしも発見できるわけでもない)。   If the request does not specify any filter criteria (shown as a negative exit from 1420), but the request specifies one or more attributes whose values are returned (shown as a positive exit from 1425), the result The set may include values for all specific attributes of items in the table. In other words, in this case, the complete set of results for this scan operation will include the values of all the specific attributes of the items in the table. However, in some embodiments (for example, in response to a single scan request, a predetermined limit on the number of items scanned and / or returned may be specific to the request or system-wide or client-specific. Note that not all of these results can be returned (or necessarily discovered) in response to a single scan request (as specified by the parameters). For example, the value of the specific attribute of the first item in the table may be included in the result set (as in 1435), there are other items to process, and the scan limit has not yet been reached ( If indicated as a positive exit from 1455), certain attributes of one or more other items may be included in the result set. This is illustrated by the feedback from 1455 to 1425 in FIG. Once all the specific attributes of the item have been added to the result set or the scan limit has been reached (shown as a negative exit from 1455), a response containing at least a portion of the result set is requested, as in 1490 May be returned to the side. Similarly, if the request does not specify any filter criteria (indicated as a negative exit from 1420) and the request does not specify any attribute for which a value is returned (indicated as a negative exit from 1425), the result The set may include all values of all attributes of items in the table. In other words, in this case, the complete set of results for this scan operation will include all values of all attributes of the items in the table. For example, all values of the attributes of the first item in the table may be included in the result set (as in 1445), there are other items to process, and the scan limit has not yet been reached If indicated (as a positive exit from 1455), all of the attributes of one or more other items may be included in the result set. Again, this is illustrated by the feedback from 1455 to 1425 in FIG. In this case, once all of the attributes of the item have been added to the result set or the scan limit has been reached (shown as a negative exit from 1455), it contains at least a portion of the result set, as in 1490 A response may be returned to the requester. As illustrated in this example, in some embodiments, in response to a single scan request, not all of the results of a scan operation can be returned (or necessarily discovered). ).
上記で説明されるScanおよびQuery APIの使用は、以下の実施例を介して(すなわち、以下の擬似コードによって)さらに例証されてもよい。第1の実施例では、テーブルをスキャンするように要求が行われ、要求は、スキャンされたアイテムのID値が返されることを特定する。第2の実施例では、テーブルをスキャンするように、および結果をフィルタにかけて10未満の一次キーID値を有する全てのアイテムを返すように、要求が行われる。

Scan(‘my−table’,array(
‘AttributesToGet’=>‘ID’

);

Scan(‘my−table’,array(
‘AttributesToGet’=>‘ID’,
‘ScanFilter’=>array(//WHERE
‘ID’=>array(
‘ComparisonOperator’=>LESS_THAN,
‘AttributeValueList’=>array(
array(NUMBER=>10)



);
The use of the Scan and Query APIs described above may be further illustrated through the following examples (ie, by the following pseudo code). In the first example, a request is made to scan the table, and the request specifies that the ID value of the scanned item is returned. In the second embodiment, a request is made to scan the table and to filter the results to return all items with a primary key ID value less than 10.

Scan ('my-table', array (
'AttributesToGet'=>'ID'
)
);

Scan ('my-table', array (
'AttributesToGet'=>'ID',
'ScanFilter'=> array (// WHERE
'ID'=> array (
'ComparisonOperator'=> LESS_THAN,
'AttributeValueList'=> array (
array (NUMBER => 10)
)
)
)
);
上述のように、要求に対する完全な結果を発見、収集、および返す前に、単一のScanまたはQuery要求に応答してスキャンおよび/または返されるアイテムの数への所定の制限が満たされた場合、動作は早く終了させられてもよく、応答は、所定の制限に達する前に読み出されたアイテムおよび/または属性値のみを含んでもよい。いくつかの実施形態では、応答は、テーブルをスキャンし、またはテーブルに問い合わせを行い、元のScanまたはQuery要求のパラメータに従って追加のアイテムおよび/または属性を返し続けるように発行され得る、後続のScanまたはQuery要求への入力として使用可能な情報を含んでもよい。例えば、応答は、LastEvaluatedKeyパラメータ値、または別の継続トークンを含んでもよく、それは、次いで、後続のScanまたはQuery要求の対応する入力パラメータ値として含まれてもよい。場合によっては、スキャンまたはクエリ動作に対する完全な一式の結果を発見および/または収集して返すために、2つ以上の後続のScanまたはQuery要求が行われる必要があり得る。   As described above, a predetermined limit on the number of items scanned and / or returned in response to a single Scan or Query request is met before finding, collecting, and returning a complete result for the request The operation may be terminated early and the response may include only items and / or attribute values that were read before the predetermined limit was reached. In some embodiments, a response may be issued to scan the table or query the table and continue to return additional items and / or attributes according to the parameters of the original Scan or Query request. Alternatively, it may include information that can be used as input to the Query request. For example, the response may include a LastEvaluatedKey parameter value, or another continuation token, which may then be included as a corresponding input parameter value in a subsequent Scan or Query request. In some cases, two or more subsequent Scan or Query requests may need to be made to find and / or collect and return a complete set of results for a scan or query operation.
図15は、一実施形態による、スキャンまたは応答制限が特定されている、クエリまたはスキャン動作を行うための方法を図示する。1510で図示されるように、この実施例では、本方法は、非リレーショナルデータベース内のテーブル(例えば、1人以上のデータ記憶サービスクライアントの代わりにデータ記憶サービスによって維持されるテーブル)の中の1つ以上のアイテムを対象とする、クエリまたはスキャン要求を受信することを含んでもよい。この実施例で図示されるように、要求は、1515の場合のように、特定要求パラメータ(例えば、クエリ条件、ハッシュキー属性値、範囲キー条件、スキャン条件等)に依存して、テーブルの所与の区分を対象としてもよい。要求によって評価されるアイテムが、要求の条件またはパラメータを満たす場合、そのアイテムの1つ以上の属性(例えば、全ての属性の値、または要求において特定される任意の属性の値)が、1520の場合のように、要求に対する結果セットに含まれてもよい。要求に対するスキャンまたは応答制限が満たされていない場合、1525からの否定の出口として示され、および要求の条件またはパラメータを満たすアイテムが区分の中にさらにある場合、1530からの肯定の出口として示され、該当する場合、要求条件またはパラメータを満たす、別のアイテムの1つ以上の属性値が、結果セットに追加されてもよい。これは、図15で1530から1520へのフィードバックによって図示されている。   FIG. 15 illustrates a method for performing a query or scan operation in which scan or response limits are specified, according to one embodiment. As illustrated at 1510, in this example, the method uses one of the tables in a non-relational database (eg, a table maintained by a data storage service on behalf of one or more data storage service clients). It may include receiving a query or scan request directed to one or more items. As illustrated in this example, the request depends on specific request parameters (eg, query conditions, hash key attribute values, range key conditions, scan conditions, etc.) as in 1515, and the location of the table. A given category may be targeted. If an item evaluated by a request meets the conditions or parameters of the request, one or more attributes of that item (eg, all attribute values, or any attribute values specified in the request) are 1520 As in the case, it may be included in the result set for the request. Shown as a negative exit from 1525 if scan or response limits for the request are not met, and as a positive exit from 1530 if there are more items in the segment that meet the requirements or parameters of the request. If applicable, one or more attribute values of another item that satisfy the requirement or parameter may be added to the result set. This is illustrated by the feedback from 1530 to 1520 in FIG.
要求に対するスキャンまたは応答制限が満たされていない(1525からの否定の出口として示される)が、要求の条件またはパラメータを満たす、現在調査されているアイテムが区分の中にもはやなく(1530からの否定の出口として示される)、問い合わせられる、またはスキャンされる区分がさらにある(1535からの肯定の出口として示される)場合、本方法は、スキャンまたはクエリ動作を継続するように、要求を別の区分にダイレクトすることを含んでもよい。これは、図15で1535から1515へのフィードバックによって図示されている。この実施例では、本方法は、1515〜1535で図示される動作を1回以上繰り返し、該当する場合、要求条件またはパラメータを満たす、他のアイテムの1つ以上の属性値を、結果セットに追加することを含んでもよい。これは、図15で1530から1520へのフィードバックによって図示されている。要求についてスキャンまたは応答制限に達する前に、スキャンまたはクエリ動作が完了する場合、1535からの否定の出口として示され、本方法は、1540の場合のように、完全な一式の結果、およびスキャンまたはクエリ動作の完了が成功したという指示を含む、応答を要求側に返すことを含んでもよい。   The scan or response limit for the request has not been met (shown as a negative exit from 1525), but there are no longer any items currently being investigated in the category that satisfy the requirement or parameter of the request (negative from 1530) If there are more partitions (shown as positive exits from 1535) that are queried or scanned, the method will redirect the request to another partition to continue the scan or query operation. Directing may be included. This is illustrated by the feedback from 1535 to 1515 in FIG. In this example, the method repeats the actions illustrated at 1515-1535 one or more times and, if applicable, adds one or more attribute values of other items that satisfy the requirement or parameter to the result set. May include. This is illustrated by the feedback from 1530 to 1520 in FIG. If the scan or query operation is completed before the scan or response limit is reached for the request, it is shown as a negative exit from 1535, and the method will return the complete set of results, as in 1540, and the scan or It may include returning a response to the requestor, including an indication that the query operation has been successfully completed.
何らかの時点で、要求についてスキャンまたは応答制限に達した場合、1525からの肯定の出口として示され、本方法は、早く(すなわち、完全な一式の結果を発見および/または収集する前に)スキャンまたはクエリ動作を終了させ、部分的結果(スキャンまたは応答制限に達する前に結果セットの中で収集されたもの)および継続トークン(LastEvaluatedKeyパラメータ値等)を含む、応答を要求側に返すことを含んでもよい。これは、1545において図15で図示されている。依然として、調査されるアイテムがさらにある場合、1550からの肯定の出口として示され、その入力パラメータのうちの1つとして継続トークンを含む、後続のクエリまたはスキャン動作が開始されてもよい。この後続のクエリまたはスキャン動作は、1560で示されるように、以前の動作が終了させられた時点で、テーブルをスキャンすること、またはテーブルに問い合わせることを開始するであろう。制限に達し、動作を終了させた後に、調査されるアイテムがもはやない場合、1550からの否定の出口として示され、スキャンまたはクエリ動作が、1570の場合のように、完了してもよい。   If a scan or response limit is reached for a request at some point, it is shown as a positive exit from 1525, and the method will either scan early (ie, before finding and / or collecting a complete set of results) Including terminating the query operation and returning a response to the requestor, including partial results (collected in the result set before the scan or response limit is reached) and continuation tokens (such as the LastEvaluatedKey parameter value). Good. This is illustrated at 1545 in FIG. If there are still more items to be investigated, a subsequent query or scan operation may be initiated, indicated as a positive exit from 1550 and including a continuation token as one of its input parameters. This subsequent query or scan operation will begin to scan or query the table when the previous operation is terminated, as indicated at 1560. If the limit is reached and the operation is terminated, there are no more items to be investigated, which is indicated as a negative exit from 1550, and the scan or query operation may be completed, as in 1570.
本明細書のデータ記憶システムにおいてサポートされるAPIのうちの種々のものによって返され得る、エラー指示のうちのいくつかが、上記で説明されている。その他は、以下の表9に記載される。   Some of the error indications that can be returned by various of the APIs supported in the data storage system herein are described above. Others are listed in Table 9 below.
いくつかの実施形態では、以下のエラー指示が、サービスによってサポートされるAPIのうちのいずれかによって返されてもよい一方で、他のエラー指示は、これらのAPIのうちの特定のものによって返されてもよいことに留意されたい。
・InvalidParameterValue
・MissingParameterValue
・InternalFailure
・ServiceUnavailable
In some embodiments, the following error indications may be returned by any of the APIs supported by the service, while other error indications are returned by certain of these APIs. Note that it may be done.
・ InvalidParameterValue
・ MissingParameterValue
・ Internal Failure
・ ServiceUnavailable
いくつかの実施形態では、データ記憶サービスクライアントの代わりにテーブル(本明細書で説明されるメタデータテーブルのうちのいずれかを含む)を維持および管理する際に使用されるものとして本明細書で説明されるメタデータのうちのいずれかまたは全ては、クライアント/ユーザテーブルが記憶されるものと同一の規模変更可能なデータ記憶部(例えば、同一の非リレーショナルデータベース)の中に記憶されてもよい。そのような実施形態では、本システムは、データ記憶サービスの初期化を支援する1つ以上のブートストラッピング機構(および/またはデータ記憶サービスを実装する基礎的システム)を含み、または採用してもよく、そのうちのいくつかが本明細書で説明される。図16は、一実施形態による、そのようなシステムのデータモデルの一部分を図示する。この実施例では、種々のコンピューティングノード(データモデルにおいて単純に「ノード1610」として表される)は、上記で説明されるもの等のデータ記憶サービスによって使用されるメタデータを含む、(例えば、ユーザの代わりに維持されるテーブルの中の)ユーザデータおよび/またはシステムデータを記憶してもよい。したがって、データモデルの各ノード1610は、ノードタイプ1615として知られているノードのタイプの指標を含んでもよい。例えば、一実施形態では、各ノードは、「記憶ノード」、「要求ルータ」、「自己管理」ノード、または「ステージング」ノードとして指定されてもよい。いくつかの実施形態では、「記憶ノード」は、データ記憶サービスによって維持される1つ以上のテーブルの中にユーザデータを記憶してもよいが、メタデータ(例えば、Tablesテーブル、Subscribersテーブル、Partitionsテーブル、またはNodesテーブルのうちの1つ以上の中に記憶されたデータ)は、他のタイプのノード(例えば、「自己管理」ノードおよび/または「ステージング」ノード)上でホストされてもよい。他の実施形態では、そのようなメタデータは、1つ以上の「記憶ノード」上で記憶されてもよく、そのうちのいくつかもまた、ユーザデータを記憶してもよい。図16で図示されるように、各ノード1610はまた、ノードの識別子(ノードid1620として示される)および1つ以上の他の要素(1630として示される)を含んでもよい。   In some embodiments, as used herein in maintaining and managing tables (including any of the metadata tables described herein) on behalf of a data storage service client. Any or all of the described metadata may be stored in the same resizable data store (eg, the same non-relational database) as the client / user table is stored. . In such embodiments, the system includes or employs one or more bootstrapping mechanisms (and / or underlying systems that implement the data storage service) that assist in the initialization of the data storage service. Well, some of which are described herein. FIG. 16 illustrates a portion of the data model of such a system, according to one embodiment. In this example, various computing nodes (represented simply as “node 1610” in the data model) include metadata used by data storage services such as those described above (eg, User data and / or system data (in a table maintained on behalf of the user) may be stored. Thus, each node 1610 of the data model may include an indication of the type of node known as node type 1615. For example, in one embodiment, each node may be designated as a “storage node”, “requesting router”, “self-management” node, or “staging” node. In some embodiments, a “storage node” may store user data in one or more tables maintained by a data storage service, but metadata (eg, a Tables table, Subscribers table, Partitions). Table, or data stored in one or more of the Nodes tables) may be hosted on other types of nodes (eg, “self-managed” and / or “staging” nodes). In other embodiments, such metadata may be stored on one or more “storage nodes”, some of which may also store user data. As illustrated in FIG. 16, each node 1610 may also include a node identifier (shown as node id 1620) and one or more other elements (shown as 1630).
図16で図示されるように、各複製に関する情報は、データモデルにおいて複製1640として表されてもよい。データモデルにおける各複製1640は、複製がホストされるノードの識別子(ノードid1620として示される)、およびこれらの複製に含まれる区分を示す1つ以上の区分識別子(区分id1635として示される)を含んでもよい。この実施例では、各区分は、データモデルにおいて区分1650として表されてもよく、その区分id1655を含んでもよい。種々の1対多数のマッピングによって図16で図示されるように、各ノードは、複数の複製をホストしてもよく、各区分は、複数の複製に含まれてもよい。   As illustrated in FIG. 16, information about each replica may be represented as replica 1640 in the data model. Each replica 1640 in the data model also includes an identifier of the node where the replica is hosted (shown as node id 1620), and one or more partition identifiers (shown as partition id 1635) that indicate the partitions included in these replicas. Good. In this example, each partition may be represented as a partition 1650 in the data model and may include its partition id 1655. As illustrated in FIG. 16 by various one-to-many mappings, each node may host multiple replicas, and each partition may be included in multiple replicas.
いくつかの実施形態では、本明細書で説明されるシステムは、「完全シェアードナッシング」タイプのアーキテクチャにおいて、ユーザテーブルのシームレスな規模変更をサポートしてもよい。例えば、いくつかの実施形態では、各区分は、完全に独立した並列計算ユニットとして実装されてもよい。そのような実施形態では、本システムは、区分にわたる分散協調を提供しなくてもよく、あるいはバッチ「put」動作および/またはマルチステートメントトランザクションをサポートしなくてもよい。いくつかの実施形態では、作業負荷分配が区分にわたって十分に拡散されている限り、区分の数の増加は、より大きい使用可能テーブルサイズおよび/またはサービス要求のための増加したスループット容量をもたらしてもよい。本明細書で説明されるように、いくつかの実施形態では、作業負荷変化に適応するために、(プログラム的/自動的であろうと、明示的に開始されようと)ライブ再区分化が採用されてもよい。言い換えれば、いくつかの実施形態では、影響を受けた区分を対象とするサービス要求が受信および処理され続けている間に(すなわち、ソース区分をオフラインにすることなく)再区分化(区分移動、区分分割、および他の再区分化動作を含む)が行われてもよい。   In some embodiments, the systems described herein may support seamless scaling of user tables in a “fully shared nothing” type architecture. For example, in some embodiments, each partition may be implemented as a completely independent parallel computing unit. In such embodiments, the system may not provide distributed coordination across partitions, or may not support batch “put” operations and / or multi-statement transactions. In some embodiments, as long as workload distribution is sufficiently spread across partitions, increasing the number of partitions may result in a larger usable table size and / or increased throughput capacity for service requests. Good. As described herein, some embodiments employ live repartitioning (whether programmatic / automatic or explicitly initiated) to accommodate workload changes. May be. In other words, in some embodiments, repartitioning (partition movement, while the service request for the affected section continues to be received and processed (ie, without taking the source section offline). Including segmentation and other repartitioning operations).
異なる実施形態では、データ記憶サービス(および/または基礎的システム)は、種々のサービス供給および/またはスループットモデルをサポートしてもよい。例えば、いくつかの実施形態では、サービスは、コミットメント型スループット供給および/またはベストエフォート型供給をサポートしてもよい。いくつかの実施形態では、記憶サービスクライアント(例えば、サービスへのアクセスを有するクライアントアプリケーション、ユーザ、または加入者)は、種々のビジネスモデル、購読タイプ、および/または支払モデルに従って、サービスによって供給される複数のスループットオプション間の選好を特定してもよい。例えば、クライアント/ユーザは、いくつかの実施形態では、テーブルを作成する要求のパラメータを通して、特定のテーブルの好ましいスループットモデルを示してもよい。他の実施形態では、クライアント/ユーザは、それらの代わりにデータ記憶サービスが、作成および維持される全てのテーブルのデフォルトスループットモデルを特定してもよい。コミットメント型スループットモデルおよびベストエフォート型スループットモデル(いかなるスループット保証も行われない)の両方をサポートすることによって、本システムは、それらの必要性および/または予算に従って、クライアント/ユーザが性能と費用との間のトレードオフを行うことを可能にしてもよい。   In different embodiments, the data storage service (and / or underlying system) may support various service provisioning and / or throughput models. For example, in some embodiments, a service may support committed throughput supply and / or best effort supply. In some embodiments, a storage service client (eg, a client application, user, or subscriber with access to the service) is served by the service according to various business models, subscription types, and / or payment models. Preferences between multiple throughput options may be specified. For example, the client / user may in some embodiments indicate a preferred throughput model for a particular table through the parameters of the request to create the table. In other embodiments, the client / user may specify a default throughput model for all tables on which data storage services are created and maintained instead. By supporting both committed and best effort throughput models (no throughput guarantees are made), the system allows clients / users to balance performance and cost according to their needs and / or budget. It may be possible to make trade-offs between them.
コミットメント型スループット供給を提供するデータ記憶サービス(および基礎的システム)は、テーブルを対象とするトラフィックに応答して、クライアント/ユーザの代わりに維持されるテーブルの作成、成長、および管理のための容量および/またはリソースを事前に割り付けるように、ならびにテーブルが維持される記憶ノード(複数可)のリソースおよび/または容量をオーバーブッキングしないように構成されてもよい。いくつかの実施形態では、コミットメント型スループットモデルの下でサービス(および基礎的システム)によって維持されるテーブルが、クライアント/ユーザからの要求を果たすときに極めて低い待ち時間を提供するために、高性能メディア(例えば、フラッシュメモリあるいはソリッドステートドライブまたはSSD、メディア)等のより高速(かつしばしばより高価な)メモリの中で維持されてもよい。例えば、本システムは、これらのテーブル(およびその種々の区分)の維持のために、メイン(例えば、ディスク)メモリに対する高速/ローカルメモリの高い比率を提供し(かつ専用にし)てもよい。コミットメント型スループットモデルの下で所与のテーブルに割り付けられたメモリが、場合によっては、(少なくともいくらかの時間)十分に活用されない場合がある一方で、クライアント/ユーザは、常にそのテーブルに必要であり得るよりも多くのリソースを専用にする追加の(場合によっては無駄な)費用よりも、コミットメント型スループットモデルによって得られる予測可能な性能を重視してもよい。   Data storage services (and underlying systems) that provide committed throughput provisioning capacity to create, grow, and manage tables that are maintained on behalf of clients / users in response to table-targeted traffic And / or may be configured to pre-allocate resources and not overbook the resources and / or capacity of the storage node (s) in which the table is maintained. In some embodiments, the table maintained by the service (and underlying system) under a commitment throughput model provides high performance to provide very low latency when fulfilling requests from clients / users. It may be maintained in faster (and often more expensive) memory such as media (eg, flash memory or solid state drive or SSD, media). For example, the system may provide (and dedicated) a high ratio of high speed / local memory to main (eg, disk) memory for the maintenance of these tables (and their various partitions). While the memory allocated to a given table under a committed throughput model may not be fully utilized (at least for some time) in some cases, the client / user is always needed for that table The predictable performance gained by a commitment throughput model may be valued rather than the additional (and possibly wasted) cost of dedicating more resources than you get.
種々の実施形態では、所与のテーブル(またはクライアント/ユーザ)に対するコミットメント型スループットレベルは、サービス要求がテーブルを標的にするときに行われる作業に関して特定されてもよいことに留意されたい。例えば、テーブルへの読み取りアクセスが、(例えば、テーブルのデータファイルを読み出すために)1回だけの入出力アクセスを必要としてもよい一方で、テーブルへの書き込みアクセス(例えば、テーブルの中のアイテムまたはアイテム属性を追加、削除、または修正するアクセス)は、(例えば、書き込みアクセスを記録するため、次いで、アクセスを行うために)少なくとも2回の入出力アクセスを必要としてもよい。加えて、本明細書で説明されるように、いくつかの個別サービス要求は、テーブルの中の複数のアイテムおよび/またはアイテム属性を読み取り、および/または書き込んでもよい。したがって、1秒あたりの入出力動作(IOPS)の数または1秒あたりのサービス要求の数(すなわち、API呼び出し)に関して、コミットメント型スループットを特定するよりもむしろ、コミットメント型スループットレベルは、「1秒あたりの論理サービス要求単位」に関して等、経時的な正規化された論理作業単位の測定に関して特定されてもよい。一実施例では、テーブルの中の単一のアイテムを標的にする読み取りアクセスをもたらすサービス要求が、1つの論理サービス要求単位を必要とする(または消費する)と見なされてもよい一方で、テーブルの中の単一のアイテムを標的にする書き込みアクセスをもたらすサービス要求は、2つまたは3つの論理サービス要求単位を必要とする(または消費する)と見なされてもよい。別の実施例では、スループットレベルは、読み取り要求および書き込み要求に対して異なって特定されてもよく、または読み取り要求および書き込み要求によって消費される論理サービス要求単位は、これらの要求によってアクセスされるアイテムのサイズに基づいて正規化されてもよい。一般に、複数の読み取りおよび/または書き込みアクセスを含む、サービス要求(例えば、0〜1MBのいずれかのデータを返し得るクエリまたはスキャン要求)によって行われる作業は、これらの要求を果たすために必要とされる論理作業単位の数に、および/またはこれらの要求のそれぞれによってアクセスされる1つまたは複数のアイテムのサイズに依存し得る、論理サービス要求単位に関してモデル化されてもよい。種々の実施形態では、要求を果たすときに実際に行われる物理的入出力動作(例えば、メモリアクセス)の数は、要求を果たすときに必要とされる(または消費される)論理サービス要求単位の数の固定または可変倍数であってもよい。例えば、いくつかの実施形態では、所与の要求を果たすときに行われる物理的入出力動作の数は、要求を果たす際に必要とされる(または消費される)論理サービス要求単位の数の約2倍であってもよい。   Note that in various embodiments, the commitment throughput level for a given table (or client / user) may be specified in terms of work to be performed when a service request targets the table. For example, while read access to a table may require only one input / output access (eg, to read a data file of the table), write access to the table (eg, an item in the table or Access that adds, deletes, or modifies item attributes) may require at least two I / O accesses (eg, to record write access and then to access). In addition, as described herein, some individual service requests may read and / or write multiple items and / or item attributes in a table. Thus, rather than specifying commitment throughput with respect to the number of input / output operations (IOPS) per second or the number of service requests per second (ie, API calls), the commitment throughput level is “1 second. It may be specified in terms of a measurement of normalized logical work units over time, such as with respect to “per logical service request unit”. In one embodiment, a service request that results in read access targeting a single item in the table may be considered as requiring (or consuming) one logical service request unit, while the table A service request that results in write access targeting a single item in may be considered as requiring (or consuming) two or three logical service request units. In another embodiment, throughput levels may be specified differently for read requests and write requests, or logical service request units consumed by read requests and write requests are items accessed by these requests. May be normalized based on the size of. In general, work performed by service requests (eg, queries or scan requests that can return any of 0-1 MB of data), including multiple read and / or write accesses, is required to fulfill these requests. May be modeled in terms of logical service request units, which may depend on the number of logical work units and / or the size of one or more items accessed by each of these requests. In various embodiments, the number of physical I / O operations (eg, memory accesses) actually performed when fulfilling the request is the number of logical service request units required (or consumed) when fulfilling the request. It may be a fixed or variable multiple of the number. For example, in some embodiments, the number of physical I / O operations performed when fulfilling a given request is the number of logical service request units required (or consumed) in fulfilling the request. It may be about twice.
いくつかの実施形態では、コミットメント型スループットモデルの下でサービスを受信するクライアント/ユーザは、テーブルサイズおよび/またはサービス要求トラフィックの増加を予想して、追加の容量またはリソースを積極的に要求および/または購入してもよい。例えば、クライアント/ユーザは、テーブルを対象とするトラフィックについて、1秒あたり10,000の論理サービス要求単位のコミットメント型スループットレベルを(例えば、テーブルを作成するサービス要求において)特定してもよい。それに応答して、データ記憶サービス(および基礎的システム)は、テーブルに対して20の区分を自動的に作成してもよく、20の区分のそれぞれを対象とした1秒あたり500の論理サービス要求単位をサポートするのに十分なリソースおよび/または容量を保存してもよい。いくつかの実施形態では、これは、物理的メモリ(例えば、ディスク)にとって約1000回の入出力動作に変換してもよい。本システムが最初に要求されたコミットメント型スループットレベルを提供するように構成された後、クライアント/ユーザは、コミットメント型スループットレベルの一時的または永久的増加または減少を要求してもよく、それに応答して、本システムは、リソース/容量をテーブルのために保存されたものに自動的に追加し、またはテーブルのために保存されたものからリソース/容量を除去して、要求された修正に相応するように、保存されたリソース/容量の量を修正するように構成されてもよい。いくつかの実施形態では、コミットメント型スループットモデルを提供するシステムが、コミットメント型スループットレベルを超えるトラフィックの短期増加または急増をサポートするように、随意的なバースティングを可能にしてもよい。例えば、本システムは、所定のバースト許容レベルまで、追加の論理サービス要求単位を自動的に受け入れて果たすように構成されてもよく(その後、追加の論理サービス要求単位を受け入れて果たしてもよく、またはそうしなくてもよい)、テーブルがバースト許容レベルを加えたコミットメント型スループットレベルに等しいトラフィックを取り扱うことができるために十分なリソースを保存してもよい。他の実施形態では、本システムは、日和見的に(例えば、リソースおよび容量が利用可能である場合に)追加の論理サービス要求単位を受け入れて果たすのみであってもよいが、これらの追加の論理サービス要求単位を果たす任意の保証を伴わない。なおも他の実施形態では、本システムは、コミットメント型スループットレベルに対応する量で受け入れられ、果たされる論理サービス要求単位の上限を厳密に定め、その後、追加のサービス要求が抑制されてもよい。   In some embodiments, a client / user receiving a service under a commitment throughput model actively requests additional capacity or resources in anticipation of an increase in table size and / or service request traffic. Or you may purchase. For example, the client / user may specify a commitment-type throughput level of 10,000 logical service request units per second (eg, in a service request that creates a table) for traffic targeted to the table. In response, the data storage service (and underlying system) may automatically create 20 partitions for the table, 500 logical service requests per second for each of the 20 partitions. Sufficient resources and / or capacity may be saved to support the unit. In some embodiments, this may translate to about 1000 I / O operations for physical memory (eg, disk). After the system is initially configured to provide the requested commitment throughput level, the client / user may request and respond to a temporary or permanent increase or decrease in the commitment throughput level. Thus, the system automatically adds resources / capacities to those stored for the table or removes resources / capacities from those stored for the table to meet the required modifications. As such, it may be configured to modify the amount of saved resources / capacity. In some embodiments, a system that provides a commitment throughput model may allow for optional bursting to support short-term or rapid increases in traffic beyond the commitment throughput level. For example, the system may be configured to automatically accept and fulfill additional logical service request units up to a predetermined burst tolerance level (which may then accept and fulfill additional logical service request units, or Otherwise, sufficient resources may be saved so that the table can handle traffic equal to the committed throughput level plus the burst tolerance level. In other embodiments, the system may only accept and fulfill additional logical service request units on an opportunistic basis (eg, when resources and capacity are available), but these additional logical Without any guarantee to fulfill the service request unit. In still other embodiments, the system may be accepted in an amount corresponding to the commitment-type throughput level and strictly limit the upper limit of the logical service request units to be fulfilled, after which additional service requests may be suppressed.
一実施例では、クライアント/ユーザは、(例えば、テーブルまたはその区分を対象とする増加した活動をトリガし得る、販売、販促、告知、新発売、または他の事象による)需要の計画または予期された一時的バーストまたは急増に先だって、または需要が現在のコミットメント型スループットレベルに近づいているという観察に応答して、テーブルに対するコミットメント型スループットレベルの増加を要求してもよい。別の実施例では、所与のテーブルに対する需要の一時的増加の準備をし、観察した後、クライアント/ユーザは、コミットメント型スループットレベルを、その初期レベルに、または前進する予期された需要に相応する新しいレベル(例えば、テーブルに対する「新しい正常」)に戻す要求を提出してもよい。いくつかの実施形態では、データ記憶サービス(および基礎的システム)は、クライアント/ユーザが、(計画されているか否かにかかわらず)需要の降下に続いて、テーブルに対するコミットメント型スループットレベルを「再交渉」することを可能にしてもよく、それは、クライアント/ユーザが、後に必要とされるであろうよりも大量のリソース/容量の保存と関連付けられる費用を削減することを可能にしてもよい。いくつかの実施形態では、データ記憶サービス(および基礎的システム)は、より高い性能(すなわち、より低い待ち時間)が所望される、高需要の初期期間に続いて、コミットメント型スループットモデルよりもむしろベストエフォート型スループットモデルの下で、所与のテーブルが管理されることを、クライアント/ユーザが要求することを可能にしてもよい。そのような実施形態では、テーブルに割り付けられた、またはテーブルのために保存されたリソース/容量の一部分が、(例えば、クライアント/ユーザ推定需要、履歴データ、あるいはシステム全体、アカウント特有、またはクライアント特有のデフォルトに基づいて)割り付け/保存を解除されてもよく、テーブルを標的にする、後に受信されたサービス要求が、(リソース/容量が利用可能である際に)日和見的に取り扱われてもよい。   In one embodiment, the client / user can plan or anticipate demand (eg, by sales, promotions, announcements, new releases, or other events that may trigger increased activity for the table or its partition). Prior to a temporary burst or surge, or in response to the observation that demand is approaching the current committed throughput level, an increase in the committed throughput level for the table may be requested. In another embodiment, after preparing and observing a temporary increase in demand for a given table, the client / user can move the committed throughput level to its initial level or to the expected demand going forward. A request to revert to a new level (e.g. "new normal" for the table) may be submitted. In some embodiments, the data storage service (and underlying system) allows the client / user to “re-run” the commitment throughput level for the table following a drop in demand (whether planned or not). “Negotiation” may be possible, which may allow the client / user to reduce the costs associated with storing a larger amount of resources / capacity than would be required later. In some embodiments, the data storage service (and the underlying system) is rather than a commitment throughput model, following an initial period of high demand where higher performance (ie, lower latency) is desired. Under a best effort throughput model, it may allow a client / user to request that a given table be managed. In such an embodiment, a portion of the resources / capacity allocated to or stored for the table is (eg, client / user estimated demand, historical data, or the entire system, account specific, or client specific (Based on defaults) may be deallocated / saved, and later received service requests targeting the table may be treated opportunistically (when resources / capacity is available) .
ベストエフォート型スループット供給を提供するデータ記憶サービス(および基礎的システム)は、より低い記憶費用をもたらし得るが、より高い待ち時間をもたらし得る、より従来的な回転メディア(例えば、ディスクメディア)上で作動するように構成されてもよい。ベストエフォート型スループットモデルの下でテーブルを管理するとき、本システムは、(すなわち、クライアント/ユーザに管理負担を課すことなく、またはそれらの介入を必要とすることなく)トラフィックまたはデータ記憶量の増加に自動的応答するように構成されてもよく、増加を取り扱おうとする努力が実行されるまで、少なくともいくつかのサービス要求を抑制してもよい。例えば、いくつかの実施形態では、本システムは、トラフィックおよび/またはデータ量の増加に応答した、作業負荷変化および/または記憶サービスクライアント(例えば、ユーザ、加入者、またはクライアントアプリケーション)の代わりにサービスによって管理されているデータの再区分に応答して、区分を追加しながら、着信サービス要求の少なくとも一部分を抑制するように構成されてもよい。ベストエフォート型スループットモデルは、クライアント/ユーザにとってより少ない費用がかかり得る一方で、急速に変化する作業負荷について行くことができない場合がある。言い換えれば、ベストエフォート型スループットモデルの下で管理される所与のテーブルを対象とする作業負荷が急速に変化し得る状況で、所与のテーブルを標的にするアプリケーションの全体的な性能が劣り得る(作業負荷がコミットメント型スループットレベルを超えない、または作業負荷の変化が予測可能であり、かつ増加した需要に先だってコミットメント型スループットレベルを修正することによって積極的に取り扱われる、コミットメント型スループットモデルの下で管理されるテーブルを標的にするアプリケーションの性能と比較して)。   Data storage services (and underlying systems) that provide best effort throughput supply can result in lower storage costs, but on more traditional rotating media (eg, disk media) that can result in higher latency It may be configured to operate. When managing tables under a best-effort throughput model, the system increases traffic or data storage (ie, without imposing administrative burden on clients / users or requiring their intervention). At least some service requests may be suppressed until an effort is made to deal with the increase. For example, in some embodiments, the system may service services on behalf of workload change and / or storage service clients (eg, users, subscribers, or client applications) in response to increased traffic and / or data volume May be configured to suppress at least a portion of the incoming service request while adding the partition in response to the re-partitioning of the data managed by. While best effort throughput models may be less expensive for clients / users, they may not be able to keep up with rapidly changing workloads. In other words, in situations where the workload targeted for a given table managed under a best effort throughput model can change rapidly, the overall performance of an application targeting a given table can be poor. (Under the commitment throughput model, where the workload does not exceed the commitment throughput level, or the change in workload is predictable and is actively handled by modifying the commitment throughput level prior to increased demand. Compared to the performance of applications that target tables managed by
特定スループットモデルに従って、データ記憶サービスクライアント(例えば、ユーザ、加入者、またはクライアントアプリケーション)の代わりにテーブルを作成および管理するための方法の一実施形態が、図17でフロー図によって図示されている。1710で図示されるように、この実施例では、本方法は、非リレーショナルデータベース内のテーブル(例えば、データ記憶サービスのクライアント/ユーザの代わりに維持されるテーブル)を作成するサービス要求を受信する、データ記憶サービスを実装するシステムの構成要素を含んでもよい。いくつかの実施形態では、クライアント/ユーザは、テーブルを対象とする要求を果たすときに使用されるスループットモデル(例えば、ベストエフォート型スループットモデルまたはコミットメント型スループットモデル)を特定するためのパラメータを含む、APIに一致するテーブルを作成するように、サービス要求をサービス(または基礎的データ記憶部)に提出してもよい。そのような実施形態では、要求はまた、コミットメントが求められる、要求されたスループットレベルの指示を含んでもよい。いくつかの実施形態では、データ記憶サービス(および基礎的システム)は、クライアント/ユーザの代わりに新しいテーブルを作成するときに使用されるスループットモデルに対するシステム全体、アカウント特有、またはクライアント特有のデフォルトの使用をサポートしてもよい。いくつかのそのような実施形態では、テーブルを作成する要求は、スループットモデル選好の指示を含まなくてもよいが、コミットメントが求められる、要求されたスループットレベルの指示を含んでもよい。   One embodiment of a method for creating and managing a table on behalf of a data storage service client (eg, user, subscriber, or client application) according to a specific throughput model is illustrated by the flow diagram in FIG. As illustrated at 1710, in this example, the method receives a service request to create a table in a non-relational database (eg, a table maintained on behalf of a data storage service client / user). It may include system components that implement a data storage service. In some embodiments, the client / user includes parameters for identifying a throughput model (eg, a best effort throughput model or a commitment throughput model) to be used when fulfilling a request directed to the table. A service request may be submitted to the service (or basic data store) to create a table that matches the API. In such embodiments, the request may also include an indication of the requested throughput level for which commitment is sought. In some embodiments, the data storage service (and underlying system) uses system-wide, account-specific, or client-specific default usage for the throughput model used when creating a new table on behalf of the client / user. May be supported. In some such embodiments, the request to create the table may not include an indication of throughput model preference, but may include an indication of the requested throughput level for which commitment is sought.
クライアント/ユーザがコミットメント型スループットモデルの選好を特定した場合、1715からの肯定の出口として示され、本方法は、1730の場合のように、そのユーザの代わりに維持されている、このテーブルおよび/または任意の他のテーブルを対象とするトラフィックに対する要求されたコミットメント型スループットレベルをサポートするように、本システムが十分な容量および/またはリソースを事前に割り付けることを含んでもよい。例えば、クライアント/ユーザが、特定のスループットコミットメントを受信する特権の代金を支払った加入者である場合、本システムは、そのコミットメントを満たすように十分なリソースおよび/または容量を事前に割り付けてもよい。いくつかの実施形態では、コミットメント型スループットモデルの下で管理されるテーブルに割り付けられたメモリは、ベストエフォート型スループットモデルの下で管理されるテーブルに割り付けられたメモリよりも高速の(かつ高価な)メモリを含んでもよいことに留意されたい。クライアント/ユーザが、1750の場合のように、後に、増加したスループットへのコミットメントを要求する、またはコミットメント型スループットレベルの低減を要求する場合、本システムは、1770の場合のように、そのテーブルがコミットメント型スループットレベルへの要求された修正に相応するために、容量および/またはリソースを割り付け、または割り付けを解除するように構成されてもよい。例えば、いくつかの実施形態では、クライアント/ユーザは、スループットの一時的または永久的増加の代金を支払うことが可能であり得(したがって、コミットメント型スループットの要求されたレベルを修正する)、本システムは、それに従って(例えば、クライアント/ユーザのアカウント情報の変化に応答して)リソースおよび/または容量を再び割り付けるように構成されてもよい。いくつかの実施形態では、そのような要求は、クライアント/ユーザの代わりにデータ記憶サービスによって維持されるテーブルを構成および/または再構成するための1つ以上のパラメータを含むAPIに従って、テーブルを作成するクライアント/ユーザによって、または別の特権ユーザ(すなわち、テーブルの構成の変更を行う権限があるユーザ)によって行われてもよい。いくつかの実施形態では、容量および/またはリソースの一時的増加の要求に続いて、クライアント/ユーザは、容量および/またはリソースに関して減少したレベルのサポートを要求(および受信)してもよい。   If the client / user identifies a preference for a commitment throughput model, this table is shown as a positive exit from 1715 and the method is maintained on behalf of that user as in 1730 and / or Or it may include pre-allocating sufficient capacity and / or resources to support the requested commitment throughput level for traffic directed to any other table. For example, if the client / user is a subscriber who has paid for the privilege to receive a particular throughput commitment, the system may pre-allocate sufficient resources and / or capacity to meet that commitment. . In some embodiments, memory allocated to a table managed under a commitment throughput model is faster (and more expensive) than memory allocated to a table managed under a best effort throughput model. Note that memory may be included. If the client / user later requests a commitment to increased throughput, as in 1750, or requests a reduction in the commitment throughput level, the system will have that table as in 1770. It may be configured to allocate or deallocate capacity and / or resources to accommodate the required modifications to the committed throughput level. For example, in some embodiments, the client / user may be able to pay for a temporary or permanent increase in throughput (thus modifying the required level of committed throughput) May be configured to reallocate resources and / or capacity accordingly (eg, in response to changes in client / user account information). In some embodiments, such a request creates a table according to an API that includes one or more parameters for configuring and / or reconfiguring the table maintained by the data storage service on behalf of the client / user. Or by another privileged user (ie, a user authorized to change the configuration of the table). In some embodiments, following a request for a temporary increase in capacity and / or resources, the client / user may request (and receive) a reduced level of support for capacity and / or resources.
ユーザがコミットメント型スループットの選好を特定していない場合(例えば、ベストエフォート型モデルがテーブル作成要求において特定される、あるいはクライアント/ユーザの代わりに新しいテーブルを作成するときに使用されるスループットモデルに対するシステム全体、アカウント特有、またはクライアント特有のデフォルトが、テーブルを対象とする要求を管理するときにベストエフォート型スループットモデルが適用されるべきであると示す場合)、1715からの否定の出口として示され、本方法は、1740の場合のように、本システムが、テーブルを対象とするトラフィックの初期量および/または分配をサポートするように、容量および/またはリソースを割り付けることを含んでもよい。例えば、ユーザが、特定のスループットコミットメントを受信する特権の代金を支払っていないが、ベストエフォート型スループットモデルがユーザの必要性に十分であると示している加入者である場合、本システムは、ベストエフォート型スループットモデルに基づいて、初期量のリソースおよび/または容量を割り付けてもよい。種々の実施形態では、新しいテーブルに割り付けられるリソースおよび/または容量の初期量は、このクライアント/ユーザおよび/または他のクライアント/ユーザに対するサービス要求の履歴量および/またはパターン、クライアント/ユーザによって予測されるサービス要求の量または分配(いくつかの実施形態ではテーブル作成要求において特定され得る)、新たに作成されたテーブルに最初に割り付けられるリソースおよび/または容量に対するシステム全体、アカウント特有、またはクライアント特有のデフォルト、および/または要因に依存し得る。いくつかの実施形態では、ベストエフォート型スループットモデルの下で管理されるテーブルが維持されるメモリは、ベストエフォート型スループットモデルの下で管理されるテーブルが維持されるメモリよりも安価(かつ低速)であり得ることに留意されたい。   If the user has not specified a commitment throughput preference (eg, a system for a throughput model where a best effort model is specified in the table creation request or used when creating a new table on behalf of the client / user) A global, account-specific, or client-specific default indicates that a best effort throughput model should be applied when managing requests intended for a table), indicated as a negative exit from 1715; The method may include allocating capacity and / or resources so that the system supports an initial amount and / or distribution of traffic intended for the table, as in 1740. For example, if the user is a subscriber who has not paid for the privilege to receive a particular throughput commitment, but the subscriber shows that the best effort throughput model is sufficient for the user's needs, the system An initial amount of resources and / or capacity may be allocated based on an effort-type throughput model. In various embodiments, the initial amount of resources and / or capacity allocated to the new table is predicted by the historical amount and / or pattern of service requests for this client / user and / or other clients / users, the client / user. The amount or distribution of service requests (which may be specified in a table creation request in some embodiments), system-wide, account-specific, or client-specific for resources and / or capacity initially allocated to newly created tables It may depend on defaults and / or factors. In some embodiments, the memory in which tables managed under the best effort throughput model are maintained is less expensive (and slower) than the memory in which tables managed under the best effort throughput model are maintained. Note that can be.
本システムが、データのトラフィックおよび/または量の増加を検出した場合(例えば、増加したトラフィックが、システムが要求の全てを果たすことをできなくさせる、または記憶されるデータの量が割り付けられた容量に近づく場合)、1725からの肯定の出口として示され、本システムは、1740の場合のように、トラフィックまたはデータ量の増加をサポートするように、追加の容量および/またはリソースを定位置に置くことができるまで、または置くことができない限り、要求を抑制するように構成されてもよい。例えば、1つ以上のテーブル(またはその区分)を対象とする増加したトラフィック、あるいはテーブル(またはその区分)に対する現在割り付けられている容量に近づいているテーブルの中のデータの量の検出に応答して、本システムは、増加したトラフィックまたはデータ容量レベルで、クライアント/ユーザにサービス提供しようとして、自動的に区分を追加し、区分を移動させ、または別様にテーブルの中および/または1つ以上の他のテーブルの中のデータを再区分するように構成されてもよい。   If the system detects an increase in data traffic and / or volume (eg, the increased traffic will prevent the system from fulfilling all of the requests, or the capacity allocated the amount of data stored ), Shown as a positive exit from 1725, the system places additional capacity and / or resources in place to support an increase in traffic or data volume, as in 1740 It may be configured to restrain the request until it can or cannot be placed. For example, in response to detecting increased traffic for one or more tables (or sections thereof), or the amount of data in a table that is approaching the currently allocated capacity for the tables (or sections thereof). Thus, the system automatically adds partitions, moves partitions, or otherwise in the table and / or one or more in an attempt to serve clients / users at increased traffic or data capacity levels. It may be configured to repartition data in other tables.
同様に、本システムが(例えば、持続期間にわたって)トラフィックおよび/またはデータの量の減少を検出した場合、1725からの否定の出口として示され、本システムは、1760の場合のように、テーブル専用の容量および/またはリソースの量が観察された需要とより一致するように、テーブルに対する容量および/またはリソースを除去し、または割り付けを解除するように構成されてもよい。例えば、テーブル(またはその1つ以上の区分)を対象とする減少したトラフィック(または現在割り付けられているリソースおよび容量によってサポートすることができるレベルを十分に下回ったままであるトラフィック)、あるいはテーブルまたはその区分(複数可)に対する現在割り付けられている容量を十分に下回る(かつ少なくとも所定の期間にわたって十分に下回っている)テーブル(またはその1つ以上の区分)の中のデータの量の検出に応答して、本システムは、テーブルに割り付けられているリソースおよび容量を観察された需要により良く合致させようとして、自動的に1つ以上の区分を除去し、複数の区分を単一の区分に崩し、1つ以上の区分に対するメモリまたはスループット容量の割り付けを解除し、または別様にテーブルの中のデータを再区分するように構成されてもよい。図17で図示されるように、トラフィックおよび/またはデータ量は、最初に割り付けられた容量および/またはリソースを使用して、合理的な性能でサービス提供することができる範囲内にとどまり、1725および1745からの否定の出口として示されるが、データ記憶サービス(および基礎的システム)は、1780の場合のように、テーブルに対する初期容量およびリソースを維持してもよい。   Similarly, if the system detects a decrease in the amount of traffic and / or data (eg, over the duration), it is shown as a negative exit from 1725, and the system is dedicated to the table as in 1760. The capacity and / or resources for the table may be configured to be removed or deallocated so that the capacity and / or amount of resources is more consistent with the observed demand. For example, reduced traffic (or traffic that remains well below the level that can be supported by the currently allocated resources and capacity) for the table (or one or more segments thereof), or the table or its Responsive to detecting the amount of data in the table (or one or more of its sections) well below (and at least well over a given period of time) the currently allocated capacity for the section (s) The system automatically removes one or more segments to break down multiple segments into a single segment in an attempt to better match the resources and capacity allocated to the table to the observed demand. Deallocate memory or throughput capacity for one or more partitions or otherwise It may be configured to re-partition the data in the table. As illustrated in FIG. 17, the amount of traffic and / or data remains within a range that can be serviced with reasonable performance using the initially allocated capacity and / or resources, 1725 and Although shown as a negative exit from 1745, the data storage service (and underlying system) may maintain initial capacity and resources for the table, as in 1780.
種々の実施形態では、図17で図示される動作のうちのいずれかまたは全ては、テーブルがアクティブなままである間に、データ記憶サービスによって管理されるテーブルを作成し、後に維持するために、繰り返されてもよいことに留意されたい。いくつかの実施形態では、作業負荷またはデータ量の変化を検出すること、着信サービス要求を抑制すること、および/または所与のテーブルに対して割り付けられた、保存された、または利用可能である区分の数および/またはリソース/容量の量を修正することのうちのいずれかまたは全ては、クライアント/ユーザによって行われる条件および/または要求の変更に応答して、最初にリソースを割り付け、後にこれらのリソースを修正する、自動管理インスタンスによって行われてもよいことに留意されたい。   In various embodiments, any or all of the operations illustrated in FIG. 17 can be used to create and later maintain a table managed by the data storage service while the table remains active. Note that it may be repeated. In some embodiments, detecting changes in workload or amount of data, suppressing incoming service requests, and / or allocated, saved, or available for a given table Any or all of modifying the number of partitions and / or the amount of resources / capacity may be done by first allocating resources and later after these in response to changes in conditions and / or requests made by the client / user Note that this may be done by an auto-management instance that modifies the resource.
上述のように、コミットメント型スループットモデルを使用してテーブルが管理される、種々の実施形態では、本システムは、これらのテーブルに対するコミットメント型スループットレベルへの修正を可能にしてもよく、例えば、コミットメント型スループットレベルにおける一時的および/または永久的変化を可能にしてもよい。図18は、コミットメント型スループットレベルを維持または修正しながら、特定のテーブルを対象とした要求を果たすための方法の一実施形態を図示するフロー図である。1810で図示されるように、この実施例では、データ記憶サービス(または基礎的データ記憶部)は、コミットメント型スループットモデルの下でクライアント/ユーザの代わりにテーブルを管理してもよい。いくつかの実施形態では、コミットメント型スループットモデルの下で管理されるテーブルに割り付けられたメモリは、ベストエフォート型スループットモデルの下で管理されるテーブルに割り付けられたメモリよりも高速の(かつ高価な)メモリを含んでもよいことに留意されたい。この実施例では、何らかの時点で、(テーブルまたはその種々の区分を標的にする要求を果たすときのスループットに関して)観察された需要が、コミットメント型スループットレベルを超える場合(1820からの肯定の出口として示される)、および(例えば、所定のバースト許容レベルまでの)いくらかの量のスループットのバースティングおよび/または急増が、本システムによってサポートされる場合(1830からの肯定の出口として示される)、本方法は、1840の場合のように、本システムが、追加の需要の少なくとも一部分を提供する(所定のバースト許容レベルまでの追加のスループットを提供する)ことを含んでもよい。この実施例では、コミットメント型スループットレベルおよび所定のバースト許容レベルを満たすように、追加のリソースがテーブルのために保存されることが仮定される。他の実施形態では、スループットのバースティングまたは急増は、日和見的に(例えば、テーブルのために保存されていないリソースおよび/または容量が偶然に利用可能である場合)サポートされるのみであってもよい。   As described above, in various embodiments where tables are managed using a commitment throughput model, the system may allow modifications to commitment throughput levels for these tables, eg, commitment Temporary and / or permanent changes in mold throughput levels may be allowed. FIG. 18 is a flow diagram illustrating one embodiment of a method for fulfilling a request directed to a particular table while maintaining or modifying a committed throughput level. As illustrated at 1810, in this example, the data storage service (or underlying data store) may manage tables on behalf of clients / users under a committed throughput model. In some embodiments, memory allocated to a table managed under a commitment throughput model is faster (and more expensive) than memory allocated to a table managed under a best effort throughput model. Note that memory may be included. In this example, if at some point the observed demand (in terms of throughput when fulfilling a request to target a table or its various partitions) exceeds the committed throughput level (shown as a positive exit from 1820). And if a certain amount of throughput bursting and / or spikes (eg, up to a predetermined burst tolerance level) is supported by the system (shown as a positive exit from 1830), the method May include providing the system to provide at least a portion of the additional demand (providing additional throughput up to a predetermined burst tolerance level), as in 1840. In this example, it is assumed that additional resources are saved for the table to meet the committed throughput level and the predetermined burst tolerance level. In other embodiments, throughput bursting or spikes may only be supported opportunistically (eg, if resources and / or capacity not stored for a table are available by chance). Good.
図18で図示されるように、観察された需要が、コミットメント型スループットレベルを超える(1820からの肯定の出口として示される)が、スループットのバースティングおよび/または急増が、本システムによってサポートされておらず(1830からの否定の出口として示される)、追加の需要の少なくとも一部分を提供するために利用可能である十分なリソースがない場合(1835からの否定の出口として示される)、本方法は、1845の場合のように、本システムが、コミットメント型スループットレベルに合致するように、テーブルを対象とするサービス要求を抑制することを含んでもよい。いくつかの実施形態では、需要が、コミットメント型スループットレベルを超え(1820からの肯定の出口として示される)、スループットのバースティングおよび/または急増が、本システムによってサポートされていない(1830からの否定の出口として示される)が、追加の需要の少なくとも一部分を提供するために利用可能である十分なリソースがある場合(1835からの肯定の出口として示される)、本方法は、1840の場合のように、本システムが、追加の需要の少なくとも一部分を提供することを含んでもよい。言い換えれば、いくつかの実施形態では、任意の追加の需要(コミットメント型スループットレベルを超える需要)は、日和見的に提供されてもよいが、保証されなくてもよい。上述のように、(バースト/急増を許容するためのポリシーを通してであろうと、日和見的であろうと)コミットメント型スループットレベルを超える要求を果たすことにより、いくつかの実施形態では、コミットメント型スループットレベルを提供するための料金を超えたクライアント/ユーザアカウントへの追加の料金をもたらし得る。   As illustrated in FIG. 18, the observed demand exceeds the committed throughput level (shown as a positive exit from 1820), but bursting and / or spikes in throughput are supported by the system. If not (shown as a negative exit from 1830) and there are not enough resources available to provide at least a portion of the additional demand (shown as a negative exit from 1835), the method , 1845, the system may include suppressing service requests targeted at the table to match the commitment-type throughput level. In some embodiments, demand exceeds the committed throughput level (shown as a positive exit from 1820), and bursting and / or spikes in throughput are not supported by the system (negative from 1830). If there are sufficient resources available to provide at least a portion of the additional demand (shown as a positive exit from 1835), the method is as in 1840 In addition, the system may include providing at least a portion of the additional demand. In other words, in some embodiments, any additional demand (demand beyond the committed throughput level) may be provided opportunistically but may not be guaranteed. As noted above, in some embodiments, the commitment throughput level is reduced by fulfilling a request that exceeds the commitment throughput level (whether through a policy to allow bursts / proliferation or opportunistic). Additional fees may be incurred for client / user accounts beyond the fees to provide.
この実施例で図示されるように、観察された需要が、コミットメント型スループットレベルを超えない(1820からの否定の出口として示される)が、(1850の場合のように)増加したコミットメント型スループットレベルに対する要求を示すサービス要求が受信される場合、本方法は、1855の場合のように、本システムが、コミットメント型スループットレベルの要求された増加をサポートするように、1つ以上の区分および/または追加のリソース/容量を追加することを含んでもよい。例えば、クライアント/ユーザが、(テーブルを標的にする要求を果たすときのスループットに関して)需要の一時的または永久的増加を期待する場合、クライアント/ユーザは、いくつかの実施形態では、増加した需要に応答することを待たずに、本システムが増加した要求を取り扱うように、コミットメント型スループットレベルの増加を積極的に要求してもよい。   As illustrated in this example, the observed demand does not exceed the commitment throughput level (shown as a negative exit from 1820), but increased commitment throughput level (as in 1850). When a service request indicating a request for is received, the method, as in 1855, may include one or more partitions and / or so that the system supports the requested increase in committed throughput level. It may include adding additional resources / capacities. For example, if a client / user expects a temporary or permanent increase in demand (in terms of throughput when fulfilling a request targeting a table), the client / user may, in some embodiments, meet the increased demand. Instead of waiting for a response, the system may actively request an increase in commitment-type throughput level to handle increased requests.
いくつかの実施形態では、増加した需要が一時的であると期待(または観察)される場合、あるいは増加した需要の期間に続いて減衰する需要に応答して、クライアント/ユーザは、コミットメント型スループットレベルが(例えば、以前のコミットメント型スループットレベルまで、または異なる「新しい正常」コミットメント型スループットレベルまで)減少させられることを要求してもよい。この場合、1860で示されるように、本システムは、1865の場合のように、テーブルに割り付けられるリソースおよび容量を、減少したコミットメント型スループットレベルにより合致させようとして、1つ以上の区分を除去し、複数の区分を単一の区分に崩し、1つ以上の区分に対するメモリまたはスループット容量の割り付けを解除し、および/またはテーブルの中のデータを再区分するように構成されてもよい。   In some embodiments, in response to a demand that is expected (or observed) to be temporary or that decays following a period of increased demand, the client / user may have committed throughput. The level may be required to be reduced (eg, to the previous commitment throughput level or to a different “new normal” commitment throughput level). In this case, as shown at 1860, the system removes one or more partitions, as in 1865, in an attempt to match the resources and capacity allocated to the table with a reduced commitment throughput level. , May be configured to break multiple partitions into a single partition, deallocate memory or throughput capacity for one or more partitions, and / or repartition data in a table.
いくつかの実施形態では、テーブル(および/またはその種々の区分)を対象とする需要が、テーブルがアクティブである残りの時間にわたって比較的低レベルにとどまることを、クライアント/ユーザが期待する場合、クライアント/ユーザは、減少したコミットメント型スループットレベルに対する要求において、テーブルに対するスループットレベルへのいかなるコミットメント(または対応する保証)ももはや必要としていない、または所望していないことを示してもよいことに留意されたい。言い換えれば、要求は、テーブルを対象とする要求を後に果たすときに、コミットメント型スループットモデルよりもむしろベストエフォート型スループットモデルを使用してテーブルを管理する要求を効果的に示し得る、ゼロというコミットメント型スループットレベルを示してもよい。これは、1870からの肯定の出口および要素1880によって図18で図示されている。いくつかの実施形態では、ベストエフォート型スループットモデルの下で管理されるテーブルが維持されるメモリは、ベストエフォート型スループットモデルの下で管理されるテーブルが維持されるメモリよりも安価(かつ低速)であり得ることに留意されたい。クライアント/ユーザがテーブルに対するスループットレベルへのコミットメント(および対応する保証)をもはや必要としていない、または所望していないことを、減少したコミットメント型スループットレベルに対する要求が示さない場合、1870からの否定の出口として示され、本システムは、1875の場合のように、コミットメント型スループットモデルを使用して(例えば、現在のコミットメント型スループットレベルに従って)テーブルを管理し続けてもよい。   In some embodiments, if the client / user expects that the demand for the table (and / or its various partitions) will remain at a relatively low level for the remaining time the table is active, It is noted that the client / user may indicate in a request for a reduced commitment throughput level that any commitment (or corresponding guarantee) to the throughput level for the table is no longer needed or desired. I want. In other words, when a request fulfills a request that targets a table, the commitment type of zero, which can effectively indicate a request to manage the table using a best effort throughput model rather than a commitment throughput model. A throughput level may be indicated. This is illustrated in FIG. 18 by a positive exit from 1870 and element 1880. In some embodiments, the memory in which tables managed under the best effort throughput model are maintained is less expensive (and slower) than the memory in which tables managed under the best effort throughput model are maintained. Note that can be. A negative exit from 1870 if the client / user no longer needs or desires a commitment (and corresponding guarantee) to the throughput level for the table, indicating that the request for a reduced commitment throughput level does not indicate The system may continue to manage the table using a commitment throughput model (eg, according to the current commitment throughput level), as in 1875.
種々の実施形態では、図18で図示される動作のうちのいずれかまたは全ては、テーブルがアクティブなままである間に、データ記憶サービスによって管理されるテーブルを作成し、後に維持するために、繰り返されてもよいことに留意されたい。   In various embodiments, any or all of the operations illustrated in FIG. 18 can be used to create and later maintain a table managed by the data storage service while the table remains active. Note that it may be repeated.
種々の実施形態では、例えば、1つのマシンから別のマシンへ、区分(またはその複製)がコピーされる必要があり得る、状況があってもよい。例えば、それぞれ異なる物理的または論理的マシン上でホストされる、特定の区分の3つの複製があり、マシンのうちの1つが故障する場合、そのマシン上でホストされた複製が、別のマシン上の区分の新しいコピーに置換される必要があり得る。別の実施例では、1つ以上のテーブルの複数の区分をホストする特定マシンが激しいトラフィックを体験する場合、システム作業負荷をより均等に分配し、性能を向上させようとして、大量にアクセスされた区分のうちの1つが、(コピー動作を使用して)より少ないトラフィックを体験しているマシンへ移動させられてもよい。いくつかの実施形態では、本明細書で説明されるデータ記憶サービス(および/または基礎的システム)は、(従来の論理的データベース区分コピー動作の場合のように)区分データのスナップショットを行ごとにコピーするよりもむしろ、1つのマシンから別のマシンへ区分全体をコピーする、物理的コピー機構(例えば、物理的ファイルシステム機構)を使用して、区分移動を行ってもよい。区分がコピーされている間に、区分を標的にする書き込み動作が記録されてもよい。コピー動作中に、任意の記録された書き込み動作が、周期的な間隔で(例えば、一連のチェックポイントで)追い上げプロセスによって区分に適用されてもよい。いったん区分全体が宛先マシンにコピーされると、任意の残りの記録された書き込み動作(すなわち、最後のチェックポイント以降に行われた任意の書き込み動作)が、最終追い上げプロセスによって宛先区分に行われてもよい。したがって、従来の区分移動機構と違って、宛先区分の中のデータは、区分移動の完了後に一貫性があり得る。   In various embodiments, there may be situations, for example, where a partition (or a duplicate thereof) may need to be copied from one machine to another. For example, if there are three replicas of a particular partition, each hosted on a different physical or logical machine, and one of the machines fails, the replica hosted on that machine will be May need to be replaced with a new copy of the partition. In another embodiment, if a particular machine hosting multiple partitions of one or more tables experiences heavy traffic, it has been heavily accessed in an attempt to distribute the system workload more evenly and improve performance One of the partitions may be moved to a machine experiencing less traffic (using a copy operation). In some embodiments, the data storage service (and / or underlying system) described herein performs a row-by-row snapshot of partitioned data (as is the case with traditional logical database partitioned copy operations). Rather than copying to, the partition migration may be performed using a physical copy mechanism (eg, a physical file system mechanism) that copies the entire partition from one machine to another. While the partition is being copied, a write operation targeting the partition may be recorded. During the copy operation, any recorded write operation may be applied to the partition by a follow-up process at periodic intervals (eg, at a series of checkpoints). Once the entire partition is copied to the destination machine, any remaining recorded write operations (ie, any write operations performed since the last checkpoint) are performed on the destination partition by the final eviction process. Also good. Thus, unlike a conventional segment move mechanism, the data in the destination segment can be consistent after the segment move is complete.
区分が「ライブである」間に、記憶サービスクライアントの代わりに、データ記憶サービスによって維持されているテーブルの区分の複製を移動させる(またはコピーする)ための方法の一実施形態が、図19でフロー図によって図示されている。この実施例では、本方法は、1910の場合のように、区分の複製を移動させる要求を受信するデータ記憶サービスを実装する、システムの構成要素を含んでもよい。例えば、本システムは、クライアント/ユーザまたはシステム管理者から、複製を移動させる明示的な要求を受信してもよく、またはそのような要求は、(以下でさらに詳細に説明されるように)異常の検出に応答して、本システムにおいて自動的に生成されてもよい。1920で図示されるように、区分を移動させる要求の受信に応答して、本システムは、区分が「ライブである」間に(すなわち、区分の1つ以上の複製が、区分を対象とする要求を受け入れて果たし続けている間に)、新しい複製(宛先複製と呼ばれ得る)を作成するように構成されてもよい。いくつかの実施形態では、宛先複製を作成することは、宛先複製を作成するコンピューティングノードまたは記憶デバイスを選択すること、宛先複製に対するコンピューティングノードまたは記憶デバイス上のメモリを割り付けること、区分および/または宛先複製と関連付けられるメタデータを作成または更新すること、および/または宛先複製を作成するために適切な他の機能を果たすことを含んでもよい。   One embodiment of a method for moving (or copying) a replica of a table partition maintained by a data storage service on behalf of a storage service client while the partition is “live” is shown in FIG. Illustrated by a flow diagram. In this example, the method may include a system component that implements a data storage service that receives a request to move a replica of a partition, as in 1910. For example, the system may receive an explicit request to move a replica from a client / user or system administrator, or such request may be abnormal (as described in further detail below). May be automatically generated in the system in response to detection of. As illustrated at 1920, in response to receiving a request to move a partition, the system detects that the partition is “live” (ie, one or more replicas of the partition are targeted to the partition). It may be configured to create a new replica (which may be referred to as the destination replica) while accepting and continuing to fulfill the request. In some embodiments, creating a destination replica includes selecting a computing node or storage device to create the destination replica, allocating memory on the computing node or storage device for the destination replica, partitioning and / or Or it may include creating or updating metadata associated with the destination replica and / or performing other functions appropriate to create the destination replica.
この実施例で図示されるように、本方法は、1930の場合のように、区分の複製がライブである間に、本システムが、ファイルコピー機構または別の物理的コピー機構を使用して、宛先複製へ移動させられている複製をコピーすることを含んでもよい。言い換えれば、複製は、論理的コピー動作(例えば、行ごとにテーブルデータを読み取ってコピーする動作)を使用するよりもむしろ、複製データの物理的位置をコピーする動作を使用して、新しい宛先複製にコピーされてもよい。1940で図示されるように、物理的コピー動作を行った後に、本方法は、本システムが、コピー動作中に行われたが、新しいコピーではまだ反映されていない、複製データへの任意の変更を調整するように、追い上げ動作を行うことを含んでもよい。この追い上げ動作は、以下でさらに詳細に説明される。いったん宛先複製が作成されてデータ投入されると、本方法は、1950の場合のように、コピーされた複製から離し、新しい指定複製に向かって、トラフィックをダイレクトすることを含んでもよい。   As illustrated in this example, the method uses a file copy mechanism or another physical copy mechanism while the replica of the partition is live, as in 1930, It may include copying a copy that has been moved to a destination copy. In other words, replication uses the operation of copying the physical location of the replicated data rather than using a logical copy operation (e.g., reading and copying table data row by row) to create a new destination replica. May be copied. After performing a physical copy operation, as illustrated at 1940, the method may include any changes to the replicated data that the system has performed during the copy operation but has not yet been reflected in the new copy. It may also include performing a follow-up operation to adjust. This follow-up operation is described in further detail below. Once the destination replica is created and populated, the method may include directing traffic away from the copied replica and towards the new designated replica, as in 1950.
いくつかの実施形態では、データ記憶サービス(例えば、非リレーショナルデータベース)の基礎的データ記憶部のための記憶エンジンは、データベースファイルの中に複製データを記憶してもよく、各複製(およびデータベースファイル)は、回復ログと関連付けられてもよい。そのような実施形態では、複製データを修復するサービス要求が受信されたとき、複製に適用される前に回復ログの中に記録されてもよい。ノード障害またはシステムクラッシュの場合、回復ログに記録される変更は、複製のコンテンツを回復させるように、複製データの以前のスナップショットまたはチェックポイントに再適用されてもよい。上述のように、いくつかの実施形態では、データ記憶サービス(およびその基礎的システム)は、物理的コピー機構を採用する複製移動をサポートしてもよい。いくつかのそのような実施形態では、物理的コピー機構は、新しい宛先へ移動させられる複製データが一貫していることを確実にし得る、そのようなログを採用してもよい。図20は、上記で説明されるような物理的コピー機構を使用して、複製を移動させるための方法の一実施形態を図示する。この実施例では、本方法は、2010の場合のように、その現在の物理的記録位置から対応する物理的宛先位置へ、複製データをコピーし始める。いくつかの実施形態では、物理的コピー動作は、ネットワーク上で1つの物理的記憶デバイス(例えば、ディスク記憶装置)から宛先記憶デバイスへ、ページをコピーすることを含んでもよい。   In some embodiments, the storage engine for the underlying data store of a data storage service (eg, a non-relational database) may store replicated data in a database file, and each replica (and database file) ) May be associated with the recovery log. In such an embodiment, when a service request to repair replicated data is received, it may be recorded in the recovery log before being applied to the replica. In the event of a node failure or system crash, the changes recorded in the recovery log may be reapplied to previous snapshots or checkpoints of the replicated data so as to recover the replicated content. As mentioned above, in some embodiments, the data storage service (and its underlying system) may support replica movement that employs a physical copy mechanism. In some such embodiments, the physical copy mechanism may employ such a log that may ensure that the replicated data being moved to the new destination is consistent. FIG. 20 illustrates one embodiment of a method for moving a replica using a physical copy mechanism as described above. In this example, the method begins copying duplicate data from its current physical recording location to the corresponding physical destination location, as in 2010. In some embodiments, the physical copy operation may include copying a page from one physical storage device (eg, a disk storage device) to a destination storage device over a network.
2020で図示されるように、物理的コピー動作中に、移動させられている複製を標的にする書き込み動作は、上記で説明されるように、コピーされている複製に適用される前に記録されてもよい。種々の実施形態では、各記録された書き込み動作(または書き込み動作群)は、ログシーケンス番号が割り当てられてもよい。いくつかの実施形態では、記録された変更は、周期的チェックポイント間隔でコピーされている複製に適用されてもよい。図20で図示される実施例では、所定のチェックポイント間隔が経過するとき、2030からの肯定の出口として示され、最後のチェックポイント以降に記録された修正の全て(例えば、書き込み動作)が、コピーされている複製に適用されてもよい。複製がコピーされている間にこれらの更新が適用されるため、これらの修正のうちのいくつかは、コピー動作(例えば、複製データの所与の部分が宛先にコピーされる前に、データのその部分に適用された修正)の結果として、宛先複製において反映されるであろう。他の修正は、コピー動作(例えば、複製データの所与の部分が宛先にコピーされた後に、データのその部分に適用された修正)に続いて、宛先複製において反映されなくてもよい。   As illustrated at 2020, during a physical copy operation, write operations that target the duplicate being moved are recorded before being applied to the duplicate being copied, as described above. May be. In various embodiments, each recorded write operation (or group of write operations) may be assigned a log sequence number. In some embodiments, the recorded changes may be applied to duplicates being copied at periodic checkpoint intervals. In the example illustrated in FIG. 20, when a given checkpoint interval elapses, all of the modifications (eg, write operations) shown as positive exits from 2030 and recorded since the last checkpoint are: It may be applied to the duplicate being copied. Because these updates are applied while the replica is being copied, some of these modifications can cause copy operations (e.g., before a given portion of replicated data is copied to the destination, As a result of the modifications applied to that part, it will be reflected in the destination replica. Other modifications may not be reflected in the destination replica following a copy operation (eg, a modification applied to that portion of data after a given portion of the replicated data has been copied to the destination).
図20で図示されるように、本方法は、完了していない間に、現在の物理的記録位置から対応する物理的宛先位置へ複製データをコピーし続けることを含んでもよい(2050からの否定の出口、要素2060、および2020へのフィードバックとして示される)。本方法は、(2020の場合のように)書き込み動作を記録し、チェックポイント間隔が経過するたびに(2030からの肯定の出口として示される)(2040の場合のように)記録された書き込み動作をコピーされている複製に適用し続けることを含んでもよい。いったん物理的コピー動作が完了すると(2050からの肯定の出口として示される)、本方法は、2070の場合のように、宛先複製においてまだ反映されていない、任意の記録された書き込み動作が宛先複製に適用される、追い上げ動作を行うことを含んでもよい。その後、複製へのアクセスは、ソース複製から離してダイレクトされ、新しい宛先複製に向かってダイレクトされてもよい。例えば、複製を標的にする任意の書き込み動作が、宛先複製のための回復ログの中に記録され、後に、(例えば、次の周期的チェックポイントで)宛先複製に適用されてもよい。いくつかの実施形態では、その新しい宛先への複製の移動に続いて、ソース複製への修正が記録されたログは、宛先複製のための回復ログにコピーされてもよい(または直接使用されてもよい)。   As illustrated in FIG. 20, the method may include continuing to copy replicated data from the current physical recording location to the corresponding physical destination location while not completed (negative from 2050). ), Shown as feedback to elements 2060 and 2020). The method records the write operation (as in 2020) and the recorded write operation (as in 2040) (as indicated by a positive exit from 2030) each time the checkpoint interval elapses. May continue to apply to the duplicate being copied. Once the physical copy operation is complete (shown as an affirmative exit from 2050), the method detects any recorded write operations that are not yet reflected in the destination replica, as in 2070. It may include performing a chase operation applied to the above. Thereafter, access to the replica may be directed away from the source replica and directed toward the new destination replica. For example, any write operation that targets a replica may be recorded in the recovery log for the destination replica and later applied to the destination replica (eg, at the next periodic checkpoint). In some embodiments, following the move of the replica to its new destination, the log that recorded the modifications to the source replica may be copied (or used directly) to the recovery log for the destination replica. Also good).
いくつかの実施形態では、上記で説明される区分移動プロセスは、区分分割動作で採用されてもよい。例えば、区分は、大きいため、例えば、大きくなりすぎて1つのマシン上に適合できないときに、および/またはマシン故障の場合に(多数の並行プロセスを使用して)単一のマシン上でホストされる区分を迅速に再構築するほど十分小さく区分サイズを保つために、分割されてもよい。区分はまた、過剰に「ホット」になるときに(すなわち、他の区分と比較して、平均よりもはるかに大量のトラフィックを体験するときに)分割されてもよい。例えば、作業負荷が所与の区分に対して突然および/または劇的に変化する場合、本システムは、変化に迅速に応答するように構成されてもよい。いくつかの実施形態では、本明細書で説明される区分分割プロセスは、アプリケーションおよびクライアント/ユーザにトランスペアレントであり得、それは、データ記憶サービスが自動的に(すなわち、クライアント/ユーザ介入または開始を必要とすることなく)規模変更されることを可能にしてもよい。   In some embodiments, the segment movement process described above may be employed in a segmentation operation. For example, partitions are hosted on a single machine because they are large, for example, when they are too large to fit on one machine and / or in case of machine failure (using multiple parallel processes) In order to keep the partition size small enough to quickly reconstruct the partitions that may be split, they may be split. A partition may also be split when it becomes excessively “hot” (ie, when it experiences much more traffic than average compared to other partitions). For example, if the workload changes suddenly and / or dramatically for a given segment, the system may be configured to respond quickly to the change. In some embodiments, the partitioning process described herein may be transparent to applications and clients / users, which means that data storage services automatically (ie, require client / user intervention or initiation) It may be possible to be resized.
いくつかの実施形態では、本システムが、複製移動のために上記で説明されるファイルコピープロセスを利用してもよいため、クラスタの中の区分の複製を移動させることは、区分を分割することよりも迅速であり得ることに留意されたい。一方で、区分を分割することは、上記で説明されるように、1つの基礎的データ構造(例えば、1つのBツリー)の中の区分データを、2つのそのようなデータ構造(例えば、2つのBツリー)に論理的に分割することを要求してもよく、それは概して、複製全体の移動よりも効率的でない。したがって、いくつかの実施形態では、区分分割プロセスは、区分の追加の複製を作成し、その後、各複製上の区分データの半分のみを管理することを含んでもよい。例えば、分割される所与の区分の3つの複製がある場合、区分分割プロセスは、(例えば、上記で説明される区分移動プロセスを使用して)区分全体の3つの追加のコピーを作成することを含んでもよい。これらの結果として生じる6つの複製は、3つの区分の2つのグループに分割されてもよく、そのそれぞれは、複製のグループ間で責任を分割する動作を使用して、元の区分データの半分を対象とするサービス要求を取り扱う責任を負わされ得る。例えば、責任を分割する動作に続いて、元の区分の指定部分の中のデータを対象とするサービス要求が、所与の複製によって受け入れられ、果たされてもよい一方で、元の区分の残りのデータを標的にするサービス要求は、その複製によって拒絶されてもよい。いくつかの実施形態では、所与の複製が責任を持たない区分データは、最終的に除去されてもよく(例えば、もはやサポートしていないデータの複製に割り付けられたメモリが、複製の中に新しいアイテムを記憶するために後に使用され得るように)、またはそれが記憶されたメモリは、本システムによって再生利用されてもよい(例えば、もはやサポートしていないデータの複製に割り付けられたメモリが、別の区分によって後に使用され得るように)。サポートされていないデータの除去またはメモリの再生利用は、データ記憶システムの性能に影響を及ぼすことなく、バックグラウンドタスクによって行われてもよく、かつクライアント/ユーザにトランスペアレントであり得る。   In some embodiments, moving the copy of a partition in the cluster may split the partition, because the system may utilize the file copy process described above for copy movement. Note that it can be faster. On the other hand, partitioning a partition, as explained above, converts the partition data in one basic data structure (eg, one B-tree) into two such data structures (eg, 2 May be required to be logically divided into two B-trees), which is generally less efficient than moving the entire replica. Thus, in some embodiments, the partitioning process may include creating additional replicas of the partitions and then managing only half of the partition data on each replica. For example, if there are three replicas of a given partition to be split, the partition splitting process will create three additional copies of the entire partition (eg, using the partition move process described above) May be included. These resulting six replicas may be divided into two groups of three partitions, each of which divides half of the original partition data using an action that divides responsibility between the groups of replicas. Responsible for handling targeted service requests. For example, following a split action, a service request for data in a specified portion of the original partition may be accepted and fulfilled by a given replica while the original partition's A service request targeting the remaining data may be rejected by its replication. In some embodiments, partitioned data for which a given replica is not responsible may eventually be removed (e.g., memory allocated to a replica of data that is no longer supported is in the replica). The memory in which it is stored may be reclaimed by the system (e.g. memory allocated to a copy of data that is no longer supported) so that it can be used later to store new items As can later be used by another division). Unsupported data removal or memory reclamation may be performed by a background task and may be transparent to the client / user without affecting the performance of the data storage system.
いくつかの実施形態では、各区分は、区分が作成されるときに割り当てられる一意的な番号(例えば、GUID)であり得る、区分IDによって識別されてもよい。区分はまた、区分が再構成を受けるたびに(例えば、必ずしもマスタフェイルオーバーに応答するわけではないが、複製の追加または除去に応答して)増分される、バージョン番号を有してもよい。区分が分割されるとき、2つの新しい区分が作成されてもよく、そのそれぞれは、それぞれの新しい区分IDを有してもよく、元の区分IDがもはや使用されなくてもよい。いくつかの実施形態では、変化する条件に応答して、分割ツールまたはプロセスを使用して、区分が本システムによって分割されてもよい。例えば、自動管理インスタンスのスケジュールに入れられたタスクが、区分サイズおよび「熱」(例えば、各区分を対象とするトラフィック)を監視してもよく、分割を行うために分割ツール/プロセスを使用するときを判定するポリシーを適用してもよい。いくつかの実施形態では、分割ツールおよび自動管理インスタンスは、ロックマネージャを採用することによって、2つの分割を同時に試行することを回避してもよい。   In some embodiments, each partition may be identified by a partition ID, which may be a unique number (eg, GUID) assigned when the partition is created. A partition may also have a version number that is incremented each time the partition undergoes reconfiguration (eg, not necessarily in response to master failover, but in response to adding or removing replicas). When a partition is split, two new partitions may be created, each of which may have a respective new partition ID, and the original partition ID may no longer be used. In some embodiments, in response to changing conditions, a partition may be split by the system using a split tool or process. For example, a scheduled task for an auto management instance may monitor partition size and “heat” (eg, traffic targeted to each partition) and use a partition tool / process to perform the partition A policy that determines when may be applied. In some embodiments, the split tool and auto-management instance may avoid trying two splits simultaneously by employing a lock manager.
いくつかの実施形態では、監視構成要素が、分割基準を満たす区分のリストを、分割ツール/プロセスに提供してもよい。基準は、区分サイズおよび熱に基づいてもよく、熱は、(IOPS等の)内部で測定された測定基準、(待ち時間等の)外部から測定された測定基準、および/または他の要因によって追跡されてもよい。いくつかの実施形態では、分割ツール/プロセスは、分割する区分の区分IDおよびバージョン番号と、新しい区分/複製の場所(複数可)のためのマシン(例えば、軽負荷であることが分かっている同一のクラスタまたは貯蔵サイロの中のマシン)のリストとを含む、監視構成要素から区分を分割する要求を受信してもよい。分割ツール/プロセスへの入力としてバージョン番号を含むことにより、バージョン番号が合致しない場合に分割ツール/プロセスが要求を拒絶し得るため、分割ツール/プロセスは、分割基準に対して評価された最後の時以来、1回以上の再構成をすでに受けている区分を分割しようとしないことを確実にしてもよい。   In some embodiments, the monitoring component may provide a list of partitions that meet the split criteria to the split tool / process. The criteria may be based on segment size and heat, which may depend on internally measured metrics (such as IOPS), externally measured metrics (such as latency), and / or other factors. May be tracked. In some embodiments, the partitioning tool / process is known to be lightly loaded (eg, lightly loaded) with the partition ID and version number of the partition to be split and the new partition / replication location (s). A request to divide a partition from a monitoring component, including a list of machines in the same cluster or storage silo). By including the version number as input to the split tool / process, the split tool / process may reject the request if the version numbers do not match, so the split tool / process will be the last one evaluated against the split criteria. Since time, it may be ensured that no attempt is made to split a segment that has already undergone one or more reconstructions.
記憶サービスクライアントの代わりにデータ記憶サービスによって維持されているテーブルの区分を分割するための方法の一実施形態が、図21でフロー図によって図示されている。この実施例では、本方法は、2110の場合のように、区分を分割する要求を受信するデータ記憶サービスを実装する、システムの構成要素を含んでもよい。例えば、本システムは、クライアント/ユーザまたはシステム管理者から、区分を分割する明示的な要求を受信してもよく、またはそのような要求は、(以下でさらに詳細に説明されるように)異常の検出に応答して、本システムにおいて自動的に生成されてもよい。上記で説明されるように、いくつかの実施形態では、区分を分割することは、区分の追加の複製を作成し、次いで、元の区分のそれぞれの部分のマネージャとして、複製の総数の半分を指定することを含んでもよい。したがって、2120で図示されるように、区分を分割する要求の受信に応答して、本システムは、ソース区分の元の複製のうちの1つ以上がライブである間に(すなわち、これらの複製のうちの1つ以上が、区分を対象とする要求を受け入れて果たし続けている間に)1つ以上の新しい区分(宛先区分と呼ばれ得る)の作成を開始するように構成されてもよい。2130で図示されるように、本方法は、(上記で説明されるもの等の)物理的コピー機構を使用して、ソース区分を宛先複製にコピーすることを含んでもよい。例えば、本システムは、いくつかの実施形態では、ファイルコピー機構を使用して、区分の元の複製のうちの1つから宛先複製のうちの1つ以上の区分へ、テーブル区分データをコピーするように構成されてもよい。本方法はまた、(例えば、上記で説明されるように、追い上げ動作を行うことによって)新しい複製を(いったんデータ投入されると)最新にすることを含んでもよい。   One embodiment of a method for partitioning a table partition maintained by a data storage service on behalf of a storage service client is illustrated by a flow diagram in FIG. In this example, the method may include a system component that implements a data storage service that receives a request to split a partition, as in 2110. For example, the system may receive an explicit request to divide a partition from a client / user or system administrator, or such request may be abnormal (as described in further detail below). May be automatically generated in the system in response to detection of. As explained above, in some embodiments, splitting a partition creates additional replicas of the partition, and then, as a manager of each part of the original partition, half of the total number of replicas You may include specifying. Accordingly, as illustrated at 2120, in response to receiving a request to split a partition, the system may allow one or more of the original replicas of the source partition to be live (ie, these replicas). May be configured to initiate the creation of one or more new partitions (which may be referred to as destination partitions) while one or more of them continue to accept and fulfill requests directed to the partitions . As illustrated at 2130, the method may include copying the source partition to the destination replica using a physical copy mechanism (such as that described above). For example, the system, in some embodiments, uses a file copy mechanism to copy table partition data from one of the partition's original replicas to one or more partitions of the destination replica. It may be configured as follows. The method may also include bringing the new replica up to date (once data is populated) (eg, by performing a follow-up operation as described above).
この実施例で図示されるように、本方法は、2140の場合のように、区分を分割するように、および分割された区分の一部分を取り扱うものとして各複製を指定するように、特別な「書き込み」コマンド(すなわち、「分割」コマンド)を伝搬することを含んでもよい。いくつかの実施形態では、本システムは、区分複製を分割するコマンドが、6つの複製がホストされる記憶ノードに伝搬されている間に、ソース複製を短期間に使用されていない状態にしてもよい。分割コマンドは、単語の第1の半分または単語の第2の半分に属するものとして各複製を指定することによって、半分に分割するようにコピー動作に起因する複製に命令し、したがって、2つの新しい複製グループを形成してもよい。いくつかの実施形態では、特別な「分割」コマンドは、いかなる特別な耐久性も必要としなくてもよいことに留意されたい。   As illustrated in this example, the method uses a special “specify” to divide the partition and specify each replica as handling a portion of the partitioned partition, as in 2140. Propagating a “write” command (ie, a “split” command) may be included. In some embodiments, the system causes the source replica to remain unused for a short period of time while the command to split the partitioned replica is propagated to the storage node where the six replicas are hosted. Good. The split command instructs the copy resulting from the copy operation to split in half by designating each copy as belonging to the first half of the word or the second half of the word, and thus two new A replication group may be formed. Note that in some embodiments, a special “split” command may not require any special durability.
この実施例で図示されるように、いったん「分割」コマンドが伝搬され、2つの新しい複製グループが確立されると、本方法は、2150の場合のように、新しい複製グループのそれぞれが、新しいマスタを選択することを含んでもよい。後に、2160の場合のように、区分に対する結果として生じる複製(例えば、元の複製または区分に対する結果として生じる複製の別のサブセット)の半分が、元の区分の一部分を対象とする要求を取り扱ってもよく、他の複製(例えば、宛先複製または区分に対する結果として生じる複製の別のサブセット)は、元の区分の残りを対象とする要求を取り扱ってもよい。例えば、複製のそれぞれは、その新しくより小さい範囲外にあるデータ(すなわち、それがもはや責任を持たないデータの半分)に対する要求を拒絶してもよく、複製(または複製がホストされるノード)がそのデータをもはやホストしていないという指示を返してもよい。上記で説明されるように、いくつかの実施形態では、本システムは、2170の場合のように、結果として生じる分割区分複製の未使用部分の論理的再生利用を行うように構成されてもよい。例えば、区分の中に新しいアイテムを記憶する要求が受信されると、これらの新しいアイテムは、(複製コピー動作に続いて)元の区分の中に記憶されたアイテムを保持したが、異なる区分の一部(すなわち、分割によって作成された2つの区分のうちの他方)として管理されている、テーブルの中の位置に記憶されてもよい。いくつかの実施形態では、本システムは、結果として生じる区分複製のそれぞれの内側のスペースを論理的に解放するためにバックグラウンドプロセスを採用してもよいが、そのスペースは、より多くのアイテムが、それらのハッシュキー属性値および/または範囲キー属性値に従って、新しい区分複製に割り当てられるテーブルに追加された場合に、後に消費されてもよい。いくつかの実施形態では、オペレーティングシステムへの分割の前に、より大きい区分複製に以前に割り付けられた、メモリの一部分を返却し得る、物理的メモリ再生利用動作が行われてもよい。そのような実施形態では、デフラグ動作も行われてもよい。   As illustrated in this example, once the “split” command has been propagated and two new replica groups have been established, the method is such that, as in 2150, each new replica group has a new master. May be included. Later, as in 2160, half of the resulting replica for the partition (eg, the original replica or another subset of the resulting replica for the partition) handles a request that covers a portion of the original partition. Alternatively, other replicas (eg, the destination replica or another subset of the resulting replicas for the partition) may handle requests directed to the rest of the original partition. For example, each replica may reject a request for data that is outside its new smaller range (ie, half of the data that it is no longer responsible for) and the replica (or node on which the replica is hosted) An indication that the data is no longer hosted may be returned. As described above, in some embodiments, the system may be configured to logically recycle unused portions of the resulting split-partition replica, as in 2170. . For example, if a request is received to store new items in a partition, these new items will retain the items stored in the original partition (following the copy copy operation), but in different partitions It may be stored at a location in the table that is managed as part (ie, the other of the two sections created by the split). In some embodiments, the system may employ a background process to logically free the space inside each of the resulting segmented replicas, but that space is more May be consumed later when added to a table assigned to a new partitioned replica according to their hash key attribute value and / or range key attribute value. In some embodiments, a physical memory reclamation operation may be performed that may return a portion of memory previously allocated to a larger partitioned replica prior to partitioning into operating systems. In such an embodiment, a defragmentation operation may also be performed.
上述のように、図19で図示され、上記で説明される区分移動プロセスは、いくつかの実施形態では、データ記憶サービスを実装するシステムにおける異常の検出に応答して、自動的に(例えば、プログラムで)開始されてもよい。異常の検出に応答して、記憶サービスクライアントの代わりにデータ記憶サービスによって維持されているテーブルの区分を移動させるための方法の一実施形態が、図22でフロー図によって図示されている。2210で図示されるように、この実施例では、本方法は、システムの構成要素が、テーブルの区分の複製をホストしている物理的コンピューティングノードまたは記憶デバイス上の故障または障害を検出することを含んでもよい。いくつかの実施形態では、障害または故障が検出されたノード上でホストされる区分複製が、その複製グループに対するマスタであった場合、本方法は、2220の場合のように、複製グループに対する新しいマスタを選択することを含んでもよい。この実施例では、本方法は、2230の場合のように、ソース区分複製がライブである間に(すなわち、区分の複製のうちの1つ以上が、区分を対象とする要求を受け入れて果たし続けている間に)、本システムが、代替区分複製の作成を開始することを含んでもよい。   As described above, the partition migration process illustrated in FIG. 19 and described above, in some embodiments, automatically (eg, in response to detecting an anomaly in a system implementing a data storage service) May be started). One embodiment of a method for moving a partition of a table maintained by a data storage service on behalf of a storage service client in response to detecting an anomaly is illustrated by a flow diagram in FIG. As illustrated at 2210, in this example, the method allows a system component to detect a failure or failure on a physical computing node or storage device hosting a replica of a table partition. May be included. In some embodiments, if the partitioned replica hosted on the node where the failure or failure is detected is the master for that replica group, the method may be a new master for the replica group, as in 2220. May be included. In this example, the method continues as the source partition replica is live (ie, one or more of the partition replicas continue to accept requests directed to the partition, as in 2230. In the meantime, the system may include initiating the creation of the alternate partition replica.
この実施例で図示されるように、本方法は、(2240の場合のように)物理的コピー機構を使用して、ソース区分複製を新たに作成された代替区分複製にコピーし、(2250の場合のように)新たに作成された代替区分複製においてまだ反映されていない区分データへの任意の変更を調整するように、追い上げ動作を行うことを含んでもよい。例えば、ソース区分複製は、論理的コピー動作(例えば、行ごとにテーブルデータを読み取ってコピーする動作)を使用するよりもむしろ、区分データの物理的位置をコピーする動作を使用して、代替区分複製にコピーされてもよい。種々の実施形態では、障害のあるマシンの区分複製は、ソース区分複製として使用されてもよく、または(作業マシン上の)同一の区分に対する別の複製は、例えば、検出された障害のタイプおよび/または重大度に応じて、ソース区分複製として使用されてもよい。   As illustrated in this example, the method uses a physical copy mechanism (as in 2240) to copy the source partition replica to the newly created alternate partition replica (at 2250). It may include performing a follow-up operation to adjust any changes to the partition data that have not yet been reflected in the newly created alternate partition replica (as in the case). For example, source partition replication uses an operation to copy the physical location of partition data, rather than using a logical copy operation (eg, reading and copying table data row by row) It may be copied to a duplicate. In various embodiments, a faulty machine partition replica may be used as a source partition replica, or another replica for the same partition (on the work machine), for example, the type of fault detected and Depending on the severity, it may be used as a source partition replica.
上述のように、上記で説明され、図19および20で図示される区分移動プロセス、および図21で図示され、上記で説明される区分分割プロセスは、いくつかの実施形態では、データ記憶サービスを実装するシステムにおける異常の検出に応答して、自動的に(例えば、プログラムで)開始されてもよい。例えば、ホットスポットが、データ記憶サービスの基礎にある本システム内の特定のコンピューティングノードまたは記憶デバイス上で発生する場合、本システムは、そのコンピューティングノードまたは記憶デバイス上に記憶された1つ以上の区分複製を分割し、および/または移動させるように構成されてもよい。ホットスポットの検出に応答して、記憶サービスクライアントの代わりにデータ記憶サービスによって維持されているテーブルの区分の複製を分割する、または移動させるための方法の一実施形態が、図23でフロー図によって図示されている。2310で図示されるように、この実施例では、本方法は、システムの構成要素が、テーブルの区分の特定の複製をホストしている物理的コンピューティングノードまたは記憶デバイス上のホットスポットを検出することを含んでもよい。言い換えれば、本システムは、システム内の他のコンピューティングノードまたは記憶デバイスと比較して、コンピューティングノードまたは記憶デバイスが、高レベルのトラフィックを体験していることを検出してもよい。場合によっては、この激しいトラフィックの全てまたは一部分が、特定の区分複製自体を対象としてもよい一方で、他の場合においては、激しいトラフィックは、コンピューティングノードまたは記憶デバイス上でホストされている他の区分複製、テーブル、またはアプリケーションを対象としてもよい。   As described above, the partition move process described above and illustrated in FIGS. 19 and 20, and the partition split process illustrated in FIG. 21 and described above, in some embodiments, provides data storage services. In response to detecting an anomaly in the implemented system, it may be initiated automatically (eg, programmatically). For example, if a hotspot occurs on a particular computing node or storage device in the system that is the basis of a data storage service, the system may have one or more stored on that computing node or storage device. The partitioned replicas may be configured to be split and / or moved. One embodiment of a method for splitting or moving a replica of a table partition maintained by a data storage service on behalf of a storage service client in response to hot spot detection is illustrated by the flow diagram in FIG. It is shown in the figure. As illustrated at 2310, in this example, the method detects a hot spot on a physical computing node or storage device where a component of the system is hosting a particular replica of a table partition. You may include that. In other words, the system may detect that a computing node or storage device is experiencing a high level of traffic compared to other computing nodes or storage devices in the system. In some cases, all or a portion of this intense traffic may be directed to a particular segmented replication itself, while in other cases, the intense traffic may be directed to other nodes hosted on the computing node or storage device. It may be a segmented replica, a table, or an application.
この実施例で図示されるように、ホットスポットの検出に応答して、本システムは、待ち時間を削減すること、システムにおける全体的なスループットを増加させること、または別様にデータ記憶サービスの性能を向上させること等によって、ホットスポットの効果を低減させようとして、特定の区分を移動させ、および/または分割するように構成されてもよい。ホットスポットが、単一の区分を標的にするトラフィックによるものである場合、2315からの肯定の出口として示され、本方法は、その区分の分割を開始することを含んでもよい。いくつかの実施形態では、本システムは、2320の場合のように、ソース区分の元の複製のうちの1つ以上がライブである間に(すなわち、これらの複製のうちの1つ以上が、区分を対象とする要求を受け入れて果たし続けている間に)、1つ以上の新しい区分(宛先区分と呼ばれ得る)を作成するように構成されてもよい。例えば、本システムは、ホットスポットが検出されたものほど高負荷ではないコンピューティングノードまたは記憶デバイス上で1つ以上の宛先複製を作成するように構成されてもよい。2330で図示されるように、本方法は、(上記で説明されるもの等の)物理的コピー機構を使用して、ソース区分複製を宛先複製にコピーすることを含んでもよい。例えば、本システムは、いくつかの実施形態では、ファイルコピー機構を使用して、区分の元の複製のうちの1つ(例えば、高負荷のコンピューティングノードまたは記憶デバイス上でホストされる区分複製、あるいは異なるコンピューティングノードまたは記憶デバイス上でホストされる特定の区分の複製のうちの別の1つ)から宛先複製のうちの1つ以上へ、テーブル区分データをコピーするように構成されてもよい。本方法はまた、2340の場合のように、(例えば、上記で説明されるように、追い上げ動作を行うことによって)新しい複製を(いったんデータ投入されると)最新にすることを含んでもよい。   As illustrated in this example, in response to hot spot detection, the system may reduce latency, increase overall throughput in the system, or otherwise perform data storage service performance. It may be configured to move and / or divide specific sections in an attempt to reduce the effects of hot spots, such as by improving If the hot spot is due to traffic targeting a single segment, it is shown as a positive exit from 2315 and the method may include initiating segmentation of that segment. In some embodiments, the system, as in 2320, while one or more of the original replicas of the source partition are live (ie, one or more of these replicas are It may be configured to create one or more new partitions (which may be referred to as destination partitions) while continuing to accept and fulfill requests directed to the partition. For example, the system may be configured to create one or more destination replicas on a computing node or storage device that is not as heavily loaded as the hot spot is detected. As illustrated at 2330, the method may include copying the source partition replica to the destination replica using a physical copy mechanism (such as that described above). For example, the system, in some embodiments, uses a file copy mechanism to provide one of the original replicas of a partition (eg, a partitioned replica hosted on a high load computing node or storage device). Or configured to copy table partition data from one of the replicas of a particular partition hosted on a different computing node or storage device) to one or more of the destination replicas. Good. The method may also include refreshing the new replica (once populated) (eg, by performing a follow-up operation, as described above), as in 2340.
この実施例では、本方法は、2360の場合のように、区分を分割するように、および分割された区分の一部分を取り扱うものとして各複製を指定するように、特別な「分割」コマンドを伝搬することを含んでもよい。「分割」コマンドの伝搬後、区分に対する結果として生じる複製の半分(すなわち、1つの新しい複製グループ)は、元の区分の一部分を対象とする要求を取り扱ってもよく、他の複製(すなわち、第2の新しい複製グループ)は、元の区分の残りを対象とする要求を取り扱ってもよい。2380で図示されるように、本方法は、2380の場合のように、新しい複製グループのそれぞれに対する新しいマスタを選択することを含んでもよい。上記で説明されるように、いくつかの実施形態では、本システムは、結果として生じる分割区分複製の未使用部分の論理的再生利用を行うように構成されてもよい(図示せず)。そのような実施形態では、区分の中に新しいアイテムを記憶する要求が受信されると、これらの新しいアイテムは、元の区分複製の中に記憶されたアイテムを保持したが、異なる区分の一部(分割によって作成された2つの新しい複製グループのうちの他方)として現在管理されている、テーブルの中の位置に記憶されてもよい。   In this example, the method propagates a special “split” command to split the partition and to designate each replica as handling a portion of the split partition, as in 2360. May include. After propagation of the “split” command, half of the resulting replicas for the partition (ie, one new replica group) may handle requests that target a portion of the original partition and other replicas (ie, 2 new replica groups) may handle requests that cover the rest of the original partition. As illustrated at 2380, the method may include selecting a new master for each of the new replica groups, as in 2380. As described above, in some embodiments, the system may be configured to logically recycle unused portions of the resulting split partition replica (not shown). In such an embodiment, when a request to store new items in a partition is received, these new items retain the items stored in the original partition replica but are part of a different partition. It may be stored at a position in the table that is currently managed as (the other of the two new replication groups created by the split).
図23で図示されるように、ホットスポットが、単一の区分を標的にするトラフィックによるものではない場合(例えば、コンピューティングノードまたは記憶デバイス上でホストされている複数の区分複製、テーブル、またはアプリケーションを対象とするトラフィックによるものである場合)、本方法は、高トラフィックノードから区分複製のうちの1つを除去するように、それの移動を開始することを含んでもよい。これは、2315からの否定の出口によって図23で図示されている。この場合、本方法は、(2330の場合のように)移動させられている複製が、その複製グループに対するマスタであった場合、複製グループに対する新しいマスタを選択することを含んでもよい。この実施例で図示されるように、本方法は、2350の場合のように、複製が移動させられている、区分の1つ以上の複製がライブである間に、別のコンピューティングノードまたは記憶デバイス上で新しい複製を作成することを含んでもよい。いくつかの実施形態では、2370の場合のように、移動させられている区分複製は、(本明細書で説明されるもの等の)物理的コピー機構を使用して、この新しい宛先複製にコピーされてもよく、宛先複製は、いったんコピーが完成すると、追い上げ機構を使用して最新にされてもよい。いったん宛先複製がデータ投入され、最新にされると、2390の場合のように、新しい宛先にコピーされた区分複製が、高トラフィックノードから除去されてもよい。後に、その区分を対象とするトラフィックは、他のノード(あまり高負荷ではないノード)上の宛先複製を対象としてもよい。   As illustrated in FIG. 23, if the hotspot is not due to traffic targeting a single partition (eg, multiple partition replicas, tables, or hosted on a computing node or storage device) If it is due to traffic intended for the application), the method may include initiating its movement to remove one of the partitioned replicas from the high traffic node. This is illustrated in FIG. 23 by a negative exit from 2315. In this case, the method may include selecting a new master for the replication group if the replica being moved (as in 2330) was the master for that replication group. As illustrated in this example, the method may include another computing node or storage while one or more replicas of a partition are live, as replicas have been moved, as in 2350. It may include creating a new replica on the device. In some embodiments, as in 2370, the partitioned replica being moved is copied to this new destination replica using a physical copy mechanism (such as that described herein). The destination replica may be updated using a chase mechanism once the copy is complete. Once the destination replica is populated and updated, the partitioned replica copied to the new destination may be removed from the high traffic node, as in 2390. Later, traffic targeted for that segment may target destination replication on other nodes (nodes that are not very heavily loaded).
いくつかの実施形態では、データ記憶サービスを実装するシステム内のコンピューティングノードまたは記憶デバイス上のホットスポットの検出に応答して、本システムは、区分分割および1回以上の複製移動(複数可)の両方を行ってもよいことに留意されたい。例えば、激しいトラフィックを体験している区分を分割した後、ホットノード上でホストされた分割区分に対する複製はまた、本明細書で説明される物理的コピー機構を使用して、ホットノードから新しいホストノードへ移動させられてもよい。加えて、区分分割に起因する新しい複製グループのうちのいずれか一方の中の他の複製のうちのいずれかが、ホットノード上でホストされる場合、それらはまた、他のノードへ移動させられてもよい。いくつかの実施形態では、区分を移動させ、および/または分割するための図23で図示される方法に類似する方法が、増加するテーブルサイズの検出に応答して適用されてもよいことに留意されたい。例えば、より多くのアイテムが所与のテーブルに追加されるにつれて、新しい区分(およびその対応する複製)を追加するため、したがって、テーブルの自動規模変更を提供するために、そのような方法が使用されてもよい。   In some embodiments, in response to detecting a hot spot on a computing node or storage device in a system that implements a data storage service, the system performs partitioning and one or more replica movement (s). Note that both may be performed. For example, after splitting a partition experiencing heavy traffic, replication to the split partition hosted on the hot node can also be performed from the hot node to the new host using the physical copy mechanism described herein. It may be moved to a node. In addition, if any of the other replicas in any one of the new replica groups due to partitioning are hosted on a hot node, they are also moved to the other node May be. Note that in some embodiments, a method similar to the method illustrated in FIG. 23 for moving and / or dividing partitions may be applied in response to detecting increasing table size. I want to be. For example, as more items are added to a given table, such methods are used to add new partitions (and their corresponding replicas) and thus provide automatic scaling of the table May be.
1つ以上の記憶サービスクライアントの代わりに、複数のテーブルを維持および管理するための方法の一実施形態が、図24でフロー図によって図示されている。2410で図示されるように、この実施例では、本方法は、1人以上の記憶サービスクライアントからの要求を果たしながら、データ記憶サービスを実装するシステムにおいて異常を検出することを含んでもよい。いくつかの実施形態では、本システムは、テーブルを規模変更すること、区分を移動させること、区分を分割すること、および/または本明細書で説明されていない他のアクションを講じること等によって、種々のタイプの異常の検出に自動的に(例えば、プログラムで)応答するように構成されてもよい。例えば、故障した、または障害のあるノード(例えば、コンピューティングノードまたは記憶デバイス)が検出された場合(2420の場合のように)、本システムは、故障した、または障害のあるノードを新しいノードと交換するように、および/または、故障した、または障害のあるノード上でホストされるいずれかまたは全ての区分を新しいノードにコピーするように、構成されてもよい(2425の場合のように)。前述のように、故障した、または障害のあるノードが、その複製グループに対するマスタであった区分複製をホストした場合、本システムはまた、区分を新しいノードにコピーした後に、新しいマスタを選択するように構成されてもよい。   One embodiment of a method for maintaining and managing multiple tables on behalf of one or more storage service clients is illustrated by the flow diagram in FIG. As illustrated at 2410, in this example, the method may include detecting an anomaly in a system implementing a data storage service while fulfilling a request from one or more storage service clients. In some embodiments, the system may scale the table, move the partition, split the partition, and / or take other actions not described herein, etc. It may be configured to automatically (eg, programmatically) respond to detection of various types of anomalies. For example, if a failed or failed node (eg, a computing node or storage device) is detected (as in 2420), the system will make the failed or failed node a new node. May be configured to swap and / or copy any or all partitions hosted on a failed or failed node to a new node (as in 2425) . As mentioned above, if a failed or failed node hosts a partitioned replica that was the master for that replication group, the system also selects a new master after copying the partition to the new node. May be configured.
ホットスポットまたは増加するテーブルサイズが検出された場合(2430の場合のように)、本システムは、(例えば、ホットスポットが検出されたもの以外のコンピューティングノードまたは記憶デバイス上で)1つ以上の新しい区分および対応する複製を追加するように、ならびに新しい区分または複製のうちの1つ以上において高負荷のコンピューティングノードまたは記憶デバイス上でホストされたデータを移動させ、および/または分割するように構成されてもよい(2435の場合のように)。同様に、ベストエフォート型スループット標的(または別のユーザ選好)が満たされていない、または増加するトラフィックにより満たされない危険があることを本システムが検出した場合、あるいはデータ量がテーブルの標的容量を超えて増加している場合(2440の場合のように)、本システムは、状況を訂正しようとしながら、着信サービス要求を抑制するように構成されてもよい。再度、本システムは、(例えば、ホットスポットが検出されたもの以外のコンピューティングノードまたは記憶デバイス上で)1つ以上の新しい区分および対応する複製を追加するように、ならびに新しい区分または複製のうちの1つ以上において高負荷のコンピューティングノードまたは記憶デバイス上でホストされたデータを移動させ、および/または分割するように構成されてもよい(2445の場合のように)。同様に、2450の場合のように、ライブ再区分が(例えば、テーブル所有者によって)明示的に要求された場合、本システムは、それに従って、1つ以上の新しい区分および対応する複製を追加または除去するように、あるいは新しい区分または複製のうちの1つ以上において高負荷のコンピューティングノードまたは記憶デバイス上でホストされたデータを移動させ、および/または分割するように構成されてもよい(2455の場合のように)。   If a hotspot or increasing table size is detected (as in 2430), the system may (eg, on a computing node or storage device other than the one where the hotspot is detected) To add and / or partition new hosted and corresponding replicas, and to move and / or split data hosted on high load computing nodes or storage devices in one or more of the new partitions or replicas May be configured (as in 2435). Similarly, if the system detects that the best-effort throughput target (or another user preference) is not met or is at risk of not being met by increasing traffic, or the amount of data exceeds the target capacity of the table The system may be configured to suppress incoming service requests while trying to correct the situation. Again, the system will add one or more new partitions and corresponding replicas (eg, on a computing node or storage device other than the one where the hot spot was detected) and out of the new partitions or replicas. May be configured to move and / or partition data hosted on high load computing nodes or storage devices (as in 2445). Similarly, if a live repartition is explicitly requested (eg, by the table owner), as in 2450, the system adds or adds one or more new partitions and corresponding replicas accordingly. It may be configured to remove and / or move and / or partition data hosted on a heavily loaded computing node or storage device in one or more of the new partitions or replicas (2455). As in the case of).
別のタイプの異常が検出され(2420、2430、2440、および2450の否定の出力として示される)、本システムが、その異常の指標に応答した、および/または指標を返した場合(2460の場合のように)、またはいったん本システムが上記で説明される異常のうちの1つへの応答として始動すると(2425、2435、2445、または2455の場合のように)、本システムは、2465の場合のように、着信要求を果たし続けてもよい。いくつかの実施形態では、本システムは、追加の異常が検出されるまで、または検出されない限り、2465の場合のように、動作を継続するように(例えば、着信サービス要求を果たし続けるように)構成されてもよい。これは、2470から2465へのフィードバックによって図24で図示される。任意の追加の異常が検出された場合、2470からの肯定の出口として示され、2420〜2460として示される動作のうちのいずれかまたは全ては、データ記憶サービスクライアントの代わりにテーブルを維持および管理するために、システムによって繰り返されてもよい。これは、2470から2420へのフィードバックによって図24で図示される。いくつかの実施形態では、データ記憶サービスが動作中である間に、図24で図示される動作のうちのいずれかまたは全ては、バックグラウンドタスクによって積極的(および自動的)に行われてもよく、必ずしも任意の特定のサービス要求の受信に応答して行われなくてもよいことに留意されたい。   If another type of anomaly is detected (shown as a negative output of 2420, 2430, 2440, and 2450) and the system has responded to and / or returned an indication of that anomaly (case 2460) Once the system is started in response to one of the anomalies described above (as in 2425, 2435, 2445, or 2455), the system is As described above, the incoming request may continue to be fulfilled. In some embodiments, the system continues to operate (eg, continue to fulfill incoming service requests), as in 2465, until an additional anomaly is detected or not detected. It may be configured. This is illustrated in FIG. 24 by feedback from 2470 to 2465. If any additional anomalies are detected, indicated as a positive exit from 2470, any or all of the actions shown as 2420-2460 maintain and manage the table on behalf of the data storage service client. May be repeated by the system. This is illustrated in FIG. 24 by feedback from 2470 to 2420. In some embodiments, any or all of the operations illustrated in FIG. 24 may be actively (and automatically) performed by a background task while the data storage service is in operation. It should be noted that often it does not necessarily have to be made in response to receipt of any particular service request.
以下の付記を考慮して、本開示の種々の実施形態を説明することができる。

付記1.
データ記憶サービスを集合的に実装する、それぞれ、少なくとも1つのプロセッサと、メモリとを備える、複数のコンピューティングノードを備え、
前記複数のコンピューティングノードは、
それを通してサービス要求が受信される、ウェブサービスインターフェースを提供し、処理するためにサービス要求を解析および発送するように構成される、フロントエンドモジュールと、
システム内のリソースを割り付けるように、前記システムの状態を監視するように、およびサービス要求が果たされている間に前記システムにおいて体験される異常を検出するように構成される、管理構成要素と、
非リレーショナルデータ記憶部を集合的に実装する、複数の記憶ノードと、
を備え、
前記フロントエンドモジュールが記憶サービスクライアントの代わりにテーブルを作成するサービス要求を受信することに応答して、前記サービス要求は、前記テーブルの中に記憶されたアイテムを区分してインデックス作成する、テーブル名および一次キーを特定し、
前記フロントエンドモジュールは、前記サービス要求を前記複数の記憶ノードのうちの1つに発送するように構成され、
前記サービス要求の受信に応答して、前記複数の記憶ノードのうちの前記1つは、前記非リレーショナルデータ記憶部の中で規模変更可能なテーブルを作成するように構成され、前記規模変更可能なテーブルは、それぞれが前記一次キーの値を含む、複数のアイテムを記憶するように構成され、前記規模変更可能なテーブルは、所定のサイズ制限を持たず、
前記規模変更可能なテーブルが作成された後、前記管理構成要素は、前記システムにおける異常の検出に応答して、あるいは前記規模変更可能なテーブルの中のアイテムを記憶する、読み出す、修正する、または削除する1つ以上のサービス要求の受信に応答して、プログラムで前記規模変更可能なテーブルをサイズ決定または区分させるように構成される、
システム。

付記2.
前記規模変更可能なテーブルを作成することは、非同期テーブル作成ワークフローの実施を開始することを含み、
前記データ記憶サービスによって維持される1つ以上のテーブルを記述するサービス要求の受信に応答して、前記非リレーショナルデータ記憶部は、前記1つ以上のテーブルに関する情報を返すように構成され、前記1つ以上のテーブルに関する前記情報は、前記非同期テーブル作成ワークフローによって前記規模変更可能なテーブルの作成が成功したかどうかを示す情報を含む、
付記1に記載のシステム。

付記3.
前記規模変更可能なテーブルの中に複数のアイテムを記憶する1つ以上のサービス要求の受信に応答して、前記管理構成要素は、
前記複数のアイテムを、前記規模変更可能なテーブルの単一の区分の中に記憶することができるかどうかを判定し、
前記複数のアイテムを前記規模変更可能なテーブルの単一の区分の中に記憶することができないという判定に応答して、前記規模変更可能なテーブルをプログラムで区分することを行うように構成される、
付記1に記載のシステム。

付記4.
前記一次キーは、ハッシュキー属性として指定される単一の属性を備え、
前記規模変更可能なテーブルを区分することは、それらのそれぞれのハッシュキー属性値のハッシュに依存して、前記規模変更可能なテーブルの中の前記アイテムを2つ以上の区分に分割することを含む、
付記1に記載のシステム。

付記5.
テーブルを作成する前記サービス要求はさらに、1つ以上のユーザ選好の指示を備え、前記1つ以上のユーザ選好は、好ましいサービス要求スループットレベル、または保証が要求されるサービス要求スループットレベルを備え、
前記管理構成要素は、前記ユーザ選好のうちの1つ以上が満たされていないという検出に応答して、プログラムで前記規模変更可能なテーブルをサイズ決定または区分させるように構成される、
付記1に記載のシステム。

付記6. プログラムで前記規模変更可能なテーブルを区分させることは、前記フロントエンドモジュールが、前記規模変更可能なテーブルの中のアイテム、前記規模変更可能なテーブルの特定の区分の中のアイテム、または前記規模変更可能なテーブルの中の前記アイテムの少なくともサブセットと同一のコンピューティングノード上に記憶されたアイテムを標的にする、増加する数の要求を受信することに応答して行われる、付記1に記載のシステム。

付記7.
コンピュータによって、
要求が、テーブルの識別子、および前記テーブルの中に記憶されたアイテムにインデックス作成する一次キーを特定する、非リレーショナルデータ記憶部の中で前記テーブルを作成する要求を受信することと、
前記受信に応答して、
規模変更可能なテーブルが、それぞれが前記一次キーの値を含む、複数のアイテムを記憶するように構成され、前記規模変更可能なテーブルが、所定のサイズ制限を持たない、前記非リレーショナルデータ記憶部の中で前記規模変更可能なテーブルを作成することと、
前記規模変更可能なテーブルにアクセスする1つ以上の要求の受信に応答して、前記規模変更可能なテーブルのサイズ決定または区分化のうちの少なくとも1つをプログラムで行うことと、
を含む、方法。

付記8. 前記規模変更可能なテーブルにアクセスする前記1つ以上の要求は、前記規模変更可能なテーブルの中のアイテムを記憶する、読み出す、修正する、または削除する1つ以上の要求を含む、付記7に記載の方法。

付記9. 前記規模変更可能なテーブルを作成することは、
前記複数のコンピューティングノードのうちの1つ以上の状態を反映する情報を収集することと、
前記収集された情報に依存して、前記規模変更可能なテーブルを作成する1つ以上のコンピューティングノードを判定することと、
を含む、付記7に記載の方法。

付記10. 前記規模変更可能なテーブルを作成することは、非同期テーブル作成ワークフローの実施を開始することを含み、
前記方法はさらに、
前記非リレーショナルデータ記憶部の中で維持された1つ以上のテーブルを記述する要求を受信することと、
1つ以上のテーブルを記述する前記要求の受信に応答して、1つ以上のテーブルに関する情報が、前記非同期テーブル作成ワークフローによって前記規模変更可能なテーブルの作成が成功したかどうかを示す情報を含む、前記1つ以上のテーブルに関する前記情報を返すことと、
を含む、付記7に記載の方法。


付記11. 前記規模変更可能なテーブルの中に複数のアイテムを記憶する1つ以上の要求を受信することと、
前記1つ以上の要求の受信に応答して、
前記複数のアイテムを、前記規模変更可能なテーブルの単一の区分の中に記憶することができるかどうかを判定することと、
前記複数のアイテムを前記規模変更可能なテーブルの単一の区分の中に記憶することができないという判定に応答して、前記規模変更可能なテーブルをプログラムで区分することを行うことと、
をさらに含む、付記7に記載の方法。

付記12. 前記一次キーは、ハッシュキー属性として指定される単一の属性を備え、
前記規模変更可能なテーブルの中に記憶された前記アイテムのそれぞれは、前記ハッシュキー属性のそれぞれの値を備え、
前記規模変更可能なテーブルをプログラムで区分することは、それらのそれぞれのハッシュキー属性値のハッシュに依存して、前記規模変更可能なテーブルの中の前記アイテムを2つ以上の区分に分割することを含む、
付記7に記載の方法。


付記13. 前記一次キーは、ハッシュキー属性として指定される属性と、範囲キー属性として指定される別の属性とを備え、
前記規模変更可能なテーブルの中に記憶された前記アイテムのそれぞれは、前記ハッシュキー属性のそれぞれの値と、前記範囲キー属性のそれぞれの値とを備え、
前記範囲キー属性値は、同一のハッシュキー属性値を有する前記規模変更可能なテーブルの中の全てのアイテムの中から、特定のアイテムを一意的に識別し、前記同一のハッシュキーを有する前記アイテムは、それらのそれぞれの範囲キー属性値に従って順序付けられ、
前記規模変更可能なテーブルをプログラムで区分することは、それらのそれぞれの範囲キー属性値に依存して、同一のハッシュキー属性値を有する前記規模変更可能なテーブルの中のアイテムを2つ以上の区分に分割することを含む、
付記7に記載の方法。

付記14. 前記規模変更可能なテーブルをプログラムで区分することは、前記規模変更可能なテーブルを2つ以上の区分に分割することと、複数のコンピューティングノードのうちの異なるものの上に、前記2つの区分のそれぞれを記憶することとを含む、付記7に記載の方法。

付記15. 前記規模変更可能なテーブルをプログラムで区分することは、区分の1つ以上の複製が要求を受け入れて処理し続けている間に、前記規模変更可能なテーブルの前記区分を移動させること、または分割することを含む、付記7に記載の方法。

付記16. 前記規模変更可能なテーブルをプログラムで区分することは、前記規模変更可能なテーブルの中のアイテム、前記規模変更可能なテーブルの特定の区分の中のアイテム、または前記規模変更可能なテーブルの中の前記アイテムの少なくともサブセットと同一のコンピューティングノード上に記憶されたアイテムを標的にする、増加する数の要求の受信に応答して、あるいは、前記規模変更可能なテーブルの中のアイテム、前記規模変更可能なテーブルの特定の区分の中のアイテム、または前記規模変更可能なテーブルの中の前記アイテムの少なくともサブセットと同一のコンピューティングノード上に記憶されたアイテムを標的にする、減少する数の要求の受信に応答して行われる、付記7に記載の方法。

付記17. テーブルを作成する前記要求はさらに、1つ以上のユーザ選好の指示を備え、前記1つ以上のユーザ選好は、好ましいサービス要求スループットレベル、または保証が要求されるサービス要求スループットレベルを備え、
前記規模変更可能なテーブルのサイズ決定または区分化のうちの少なくとも1つをプログラムで行うことは、前記ユーザ選好のうちの1つ以上が満たされていないという検出に応答して行われる、
付記7に記載の方法。

付記18.
要求が、好ましい一貫性モデルの指示を含む、前記規模変更可能なテーブルから1つ以上のアイテムを読み出す要求を受信することと、
前記1つ以上のアイテムを読み出す前記要求の受信に応答して、前記好ましい一貫性モデルと一致する方式で前記1つ以上のアイテムを返すことと、
をさらに含む、付記7に記載の方法。

付記19. 前記作成することは、
前記規模変更可能なテーブルと関連付けられるメタデータを生成することと、
前記非リレーショナルデータ記憶部内の別の規模変更可能なテーブルの中に前記メタデータを記憶することと、
を含む、付記7に記載の方法。

付記20. 1つ以上のコンピュータ上で実行されたときに、前記1つ以上のコンピュータに、
サービス要求が、テーブルの識別子、および前記テーブルの中に記憶されたアイテムにインデックス作成する一次キーを特定する、記憶サービスクライアントの代わりに前記テーブルを作成するサービス要求を受信することと、
前記受信に応答して、
前記規模変更可能なテーブルが、それぞれが前記一次キーの値を含む、複数のアイテムを記憶するように構成され、前記規模変更可能なテーブルが、所定のサイズ制限を持たない、非リレーショナルデータ記憶部の中で前記規模変更可能なテーブルを作成することと、
前記規模変更可能なテーブルの中に複数のアイテムを記憶する1つ以上のサービス要求の受信に応答して、
前記複数のアイテムを、前記規模変更可能なテーブルの単一の区分の中に記憶することができるかどうかを判定することと、
前記複数のアイテムを前記規模変更可能なテーブルの単一の区分の中に記憶することができないという判定に応答して、前記規模変更可能なテーブルを区分することと、
を行わせる、プログラム命令を記憶する、非一過性のコンピュータ可読媒体。

付記21. 前記1つ以上のコンピュータ上で実行されたとき、前記プログラム命令はさらに、前記1つ以上のコンピュータに、
前記規模変更可能なテーブルを区分した後、前記規模変更可能なテーブルの中のアイテムを記憶する、読み出す、修正する、または削除する1つ以上のサービス要求の受信に応答して、前記規模変更可能なテーブルのサイズ決定または再区分化のうちの少なくとも1つを行うことを行わせる、
付記20に記載の記憶媒体。

付記22. 前記規模変更可能なテーブルの前記再区分化は、前記規模変更可能なテーブルの中のアイテム、前記規模変更可能なテーブルの特定の区分の中のアイテム、または前記規模変更可能なテーブルの中の前記アイテムの少なくともサブセットと同一のコンピューティングノード上に記憶されたアイテムを標的にする、増加する数の要求の受信に応答して、あるいは、前記規模変更可能なテーブルの中のアイテム、前記規模変更可能なテーブルの特定の区分の中のアイテム、または前記規模変更可能なテーブルの中の前記アイテムの少なくともサブセットと同一のコンピューティングノード上に記憶されたアイテムを標的にする、減少する数の要求の受信に応答して行われる、付記21に記載の記憶媒体。

付記23. 前記規模変更可能なテーブルを作成することは、
前記複数のコンピューティングノードのうちの1つ以上の状態を反映する情報を収集することと、
前記収集された情報に依存して、前記規模変更可能なテーブルを作成する1つ以上のコンピューティングノードを判定することと、
前記1つ以上のコンピューティングノードのそれぞれの上に前記規模変更可能なテーブルの少なくともサブセットを記憶するためのそれぞれの区分を作成することと、
を含む、付記20に記載の記憶媒体。

付記24.
前記規模変更可能なテーブルを作成することは、非同期テーブル作成ワークフローの実施を開始することを含み、
前記非リレーショナルデータ記憶部の中で維持された1つ以上のテーブルを記述するサービス要求の受信に応答して、前記プログラム命令はさらに、前記1つ以上のコンピュータに、前記1つ以上のテーブルに関する情報を返すことを行わせ、前記1つ以上のテーブルに関する前記情報は、前記非同期テーブル作成ワークフローによって前記規模変更可能なテーブルの作成が成功したかどうかを示す情報を含む、
付記20に記載の記憶媒体。

付記25.
前記一次キーは、ハッシュキー属性として指定される単一の属性を備え、
前記規模変更可能なテーブルの中に記憶された前記アイテムのそれぞれは、前記ハッシュキー属性のそれぞれの値を備え、
前記規模変更可能なテーブルを区分することは、それらのそれぞれのハッシュキー属性値のハッシュに依存して、前記規模変更可能なテーブルの中の前記アイテムを2つ以上の区分に分割することを含む、
付記20に記載の記憶媒体。

付記26. 前記規模変更可能なテーブルを区分することは、前記規模変更可能なテーブルを2つ以上の区分に分割することと、複数のコンピューティングノードのうちの異なるものの上に、前記2つ以上の区分のそれぞれを記憶することとを含む、付記20に記載の記憶媒体。

付記27.
前記一次キーは、ハッシュキー属性として指定される属性と、範囲キー属性として指定される別の属性とを備え、
前記規模変更可能なテーブルの中に記憶された前記アイテムのそれぞれは、前記ハッシュキー属性のそれぞれの値と、前記範囲キー属性のそれぞれの値とを備え、
前記範囲キー属性値は、同一のハッシュキー属性値を有する前記規模変更可能なテーブルの中の全てのアイテムの中から、特定のアイテムを一意的に識別し、前記同一のハッシュキーを有する前記アイテムは、それらのそれぞれの範囲キー属性値に従って順序付けられ、
前記規模変更可能なテーブルを区分することは、それらのそれぞれの範囲キー属性値に依存して、同一のハッシュキー属性値を有する前記規模変更可能なテーブルの中のアイテムを2つ以上の区分に分割することを含む、
付記20に記載の記憶媒体。

付記28.
それぞれ、少なくとも1つのプロセッサと、メモリとを備える、複数のコンピューティングノードを備える、システムであって、前記複数のコンピューティングノードは、データ記憶サービスを実装するように構成され、
記憶サービスクライアントの代わりにテーブルを作成するサービス要求の受信に応答して、前記サービス要求は、前記テーブルの識別子、および前記テーブルの中に記憶されたアイテムにインデックス作成する一次キーを特定し、前記データ記憶サービスは、非リレーショナルデータ記憶部の中で規模変更可能なテーブルを作成するように構成され、
前記規模変更可能なテーブルは、それぞれが前記一次キーの値を含む、複数のアイテムを記憶するように構成され、
前記規模変更可能なテーブルは、所定のサイズ制限を持たず、
前記規模変更可能なテーブルを作成することは、非同期テーブル作成ワークフローの実施を開始することを含む、
システム。

付記29.
前記データ記憶サービスによって維持された1つ以上のテーブルを記述するサービス要求の受信に応答して、前記データ記憶サービスは、前記1つ以上のテーブルに関する情報を返すように構成され、
前記1つ以上のテーブルに関する前記情報は、前記非同期テーブル作成ワークフローによって前記規模変更可能なテーブルの作成が成功したかどうかを示す情報を含む、
付記28に記載のシステム。

付記30. 前記データ記憶サービスはさらに、前記規模変更可能なテーブルの中のアイテムを記憶する、読み出す、修正する、または削除する1つ以上のサービス要求の受信に応答して、前記規模変更可能なテーブルのサイズ決定または区分化のうちの少なくとも1つをプログラムで行うように構成される、付記28に記載のシステム。

付記31.
前記規模変更可能なテーブルの中に複数のアイテムを記憶する1つ以上のサービス要求の受信に応答して、前記データ記憶サービスは、
前記複数のアイテムを、前記規模変更可能なテーブルの単一の区分の中に記憶することができるかどうかを判定し、
前記複数のアイテムを前記規模変更可能なテーブルの単一の区分の中に記憶することができないという判定に応答して、前記規模変更可能なテーブルをプログラムで区分するように構成される、
付記28に記載のシステム。

付記32. 前記データ記憶サービスはさらに、前記規模変更可能なテーブルをプログラムで区分することが、前記規模変更可能なテーブルの中のアイテム、前記規模変更可能なテーブルの特定の区分の中のアイテム、または前記規模変更可能なテーブルの中の前記アイテムの少なくともサブセットと同一のコンピューティングノード上に記憶されたアイテムを標的にする、増加する数の要求の受信に応答して、あるいは、前記規模変更可能なテーブルの中のアイテム、前記規模変更可能なテーブルの特定の区分の中のアイテム、または前記規模変更可能なテーブルの中の前記アイテムの少なくともサブセットと同一のコンピューティングノード上に記憶されたアイテムを標的にする、減少する数の要求に応答して行われるように、構成される、付記28に記載のシステム。

付記33.
前記一次キーは、ハッシュキー属性として指定される単一の属性と、範囲キー属性として指定される別の属性とを備え、
前記規模変更可能なテーブルの中に記憶された前記アイテムのそれぞれは、前記ハッシュキー属性のそれぞれの値と、前記範囲キー属性のそれぞれの値とを備え、
前記範囲キー属性値は、同一のハッシュキー属性値を有する前記規模変更可能なテーブルの中の全てのアイテムの中から、特定のアイテムを一意的に識別し、前記同一のハッシュキーを有する前記アイテムは、それらのそれぞれの範囲キー属性値に従って順序付けられ、
前記データ記憶サービスはさらに、それらのそれぞれの範囲キー属性値に依存して、同一のハッシュキー属性値を有する前記規模変更可能なテーブルの中のアイテムを2つ以上の区分に分割するように構成される、
付記28に記載のシステム。

付記34. 規模変更可能なテーブルを作成することはさらに、
前記複数のコンピューティングノードのうちの1つ以上の状態を反映する情報を収集することと、
前記収集された情報に依存して、前記規模変更可能なテーブルを作成する1つ以上のコンピューティングノードを判定することと、
前記1つ以上のコンピューティングノードのそれぞれの上に前記規模変更可能なテーブルの少なくともサブセットを記憶するためのそれぞれの区分を作成することと、
を含む、付記28に記載のシステム。

付記35.
前記規模変更可能なテーブルから1つ以上のアイテムを読み出す要求の受信に応答して、前記要求は、好ましい一貫性モデルの指示を含み、前記データ記憶サービスは、前記好ましい一貫性モデルと一致する方式で前記1つ以上のアイテムを返すように構成される、
付記28に記載のシステム。
Various embodiments of the present disclosure can be described in view of the following supplementary notes.

Appendix 1.
A plurality of computing nodes each collectively implementing a data storage service, each comprising at least one processor and memory;
The plurality of computing nodes are:
A front-end module configured to parse and route the service request to provide and process a web service interface through which the service request is received;
A management component configured to allocate resources in the system, to monitor the status of the system, and to detect anomalies experienced in the system while a service request is being fulfilled; ,
A plurality of storage nodes that collectively implement non-relational data storage;
With
In response to the front-end module receiving a service request to create a table on behalf of a storage service client, the service request partitions and indexes the items stored in the table, a table name And identify the primary key,
The front end module is configured to route the service request to one of the plurality of storage nodes;
Responsive to receiving the service request, the one of the plurality of storage nodes is configured to create a resizable table in the non-relational data storage, the resizable The table is configured to store a plurality of items, each containing the value of the primary key, the resizable table does not have a predetermined size limit,
After the resizable table is created, the management component stores, retrieves, modifies items in the resizable table in response to detecting an anomaly in the system, or In response to receiving one or more service requests to be deleted, the program is configured to size or partition the resizable table;
system.

Appendix 2.
Creating the resizable table includes initiating an asynchronous table creation workflow;
In response to receiving a service request describing one or more tables maintained by the data storage service, the non-relational data storage is configured to return information about the one or more tables, The information regarding one or more tables includes information indicating whether the creation of the resizable table by the asynchronous table creation workflow is successful.
The system according to appendix 1.

Appendix 3.
In response to receiving one or more service requests that store a plurality of items in the resizable table, the management component comprises:
Determining whether the plurality of items can be stored in a single section of the resizable table;
Responsive to determining that the plurality of items cannot be stored in a single section of the resizable table, the resizable table is configured to be programmatically partitioned. ,
The system according to appendix 1.

Appendix 4.
The primary key comprises a single attribute designated as a hash key attribute;
Partitioning the resizable table includes dividing the items in the resizable table into two or more partitions depending on the hash of their respective hash key attribute values. ,
The system according to appendix 1.

Appendix 5.
The service request to create a table further comprises one or more user preference indications, the one or more user preferences comprising a preferred service request throughput level or a service request throughput level for which a guarantee is required;
The management component is configured to programmatically size or partition the resizable table in response to detecting that one or more of the user preferences are not met.
The system according to appendix 1.

Appendix 6. Partitioning the resizable table programmatically means that the front end module allows an item in the resizable table, an item in a particular section of the resizable table, or the resizing The system of claim 1, wherein the system is performed in response to receiving an increasing number of requests targeting items stored on the same computing node as at least a subset of the items in a possible table. .

Appendix 7.
By computer
Receiving a request to create the table in a non-relational data store that specifies an identifier of the table and a primary key to index the items stored in the table;
In response to the reception,
The non-relational data storage unit, wherein the resizable table is configured to store a plurality of items, each including the value of the primary key, and the resizable table does not have a predetermined size limit Creating the resizable table in
Programmatically performing at least one of sizing or partitioning of the resizable table in response to receiving one or more requests to access the resizable table;
Including a method.

Appendix 8. Appendix 7 wherein the one or more requests to access the resizable table include one or more requests to store, retrieve, modify or delete items in the resizable table The method described.

Appendix 9 Creating the resizable table is:
Collecting information reflecting a state of one or more of the plurality of computing nodes;
Depending on the collected information, determining one or more computing nodes that create the resizable table;
The method according to appendix 7, comprising:

Appendix 10. Creating the resizable table includes initiating an asynchronous table creation workflow;
The method further comprises:
Receiving a request describing one or more tables maintained in the non-relational data store;
In response to receiving the request describing one or more tables, information regarding the one or more tables includes information indicating whether the creation of the resizable table by the asynchronous table creation workflow is successful. Returning the information about the one or more tables;
The method according to appendix 7, comprising:


Appendix 11. Receiving one or more requests to store a plurality of items in the resizable table;
In response to receiving the one or more requests,
Determining whether the plurality of items can be stored in a single section of the resizable table;
In response to determining that the plurality of items cannot be stored in a single section of the resizable table, partitioning the resizable table programmatically;
The method according to appendix 7, further comprising:

Appendix 12. The primary key comprises a single attribute designated as a hash key attribute;
Each of the items stored in the resizable table comprises a respective value of the hash key attribute,
Partitioning the resizable table programmatically divides the items in the resizable table into two or more partitions depending on the hash of their respective hash key attribute values. including,
The method according to appendix 7.


Appendix 13. The primary key comprises an attribute designated as a hash key attribute and another attribute designated as a range key attribute;
Each of the items stored in the resizable table comprises a value of the hash key attribute and a value of the range key attribute,
The range key attribute value uniquely identifies a particular item among all items in the resizable table having the same hash key attribute value, and the item having the same hash key Are ordered according to their respective range key attribute values,
Partitioning the resizable table programmatically may depend on two or more items in the resizable table having the same hash key attribute value depending on their respective range key attribute values. Including dividing into segments,
The method according to appendix 7.

Appendix 14. Partitioning the resizable table programmatically includes dividing the resizable table into two or more partitions and over the different ones of the plurality of computing nodes. The method of claim 7 including storing each.

Appendix 15. Partitioning the resizable table programmatically involves moving or partitioning the partition of the resizable table while one or more replicas of the partition continue to accept and process requests. The method according to appendix 7, including:

Appendix 16. Partitioning the resizable table programmatically includes items in the resizable table, items in a particular section of the resizable table, or in the resizable table. In response to receiving an increasing number of requests targeting items stored on the same computing node as at least a subset of the items, or items in the resizable table, the resizing Of a decreasing number of requests targeting items in a particular partition of a possible table or items stored on the same computing node as at least a subset of the items in the resizable table The method according to appendix 7, which is performed in response to reception.

Appendix 17. The request to create a table further comprises an indication of one or more user preferences, the one or more user preferences comprising a preferred service request throughput level or a service request throughput level for which a guarantee is required;
Programmatically performing at least one of sizing or partitioning of the resizable table is performed in response to detecting that one or more of the user preferences are not satisfied,
The method according to appendix 7.

Appendix 18.
Receiving a request to retrieve one or more items from the resizable table, wherein the request includes an indication of a preferred consistency model;
In response to receiving the request to read the one or more items, returning the one or more items in a manner consistent with the preferred consistency model;
The method according to appendix 7, further comprising:

Appendix 19. The creation is
Generating metadata associated with the scaleable table;
Storing the metadata in another resizable table in the non-relational data store;
The method according to appendix 7, comprising:

Appendix 20. When executed on one or more computers, said one or more computers;
Receiving a service request to create the table on behalf of a storage service client, wherein the service request identifies an identifier of the table and a primary key to index items stored in the table;
In response to the reception,
The non-relational data storage unit, wherein the resizable table is configured to store a plurality of items, each including the value of the primary key, and the resizable table does not have a predetermined size limit Creating the resizable table in
In response to receiving one or more service requests that store a plurality of items in the resizable table,
Determining whether the plurality of items can be stored in a single section of the resizable table;
Partitioning the resizable table in response to determining that the plurality of items cannot be stored in a single partition of the resizable table;
A non-transitory computer-readable medium that stores program instructions.

Appendix 21. When executed on the one or more computers, the program instructions are further transmitted to the one or more computers,
After partitioning the resizable table, the resizing is possible in response to receiving one or more service requests to store, read, modify, or delete items in the resizable table To perform at least one of sizing or repartitioning of the correct table,
The storage medium according to appendix 20.

Appendix 22. The re-partitioning of the resizable table may include an item in the resizable table, an item in a particular section of the resizable table, or the resizing table. In response to receiving an increasing number of requests targeting items stored on the same computing node as at least a subset of the items, or items in the resizable table, the resizable Receiving a decreasing number of requests that target items in a particular section of a simple table, or items stored on the same computing node as at least a subset of the items in the resizable table The storage medium according to appendix 21, which is performed in response to.

Appendix 23. Creating the resizable table is:
Collecting information reflecting a state of one or more of the plurality of computing nodes;
Depending on the collected information, determining one or more computing nodes that create the resizable table;
Creating a respective partition for storing at least a subset of the resizable table on each of the one or more computing nodes;
The storage medium according to appendix 20, comprising:

Appendix 24.
Creating the resizable table includes initiating an asynchronous table creation workflow;
In response to receiving a service request describing one or more tables maintained in the non-relational data store, the program instructions further relate to the one or more tables to the one or more computers. Information about the one or more tables includes information indicating whether the creation of the resizable table is successful by the asynchronous table creation workflow;
The storage medium according to appendix 20.

Appendix 25.
The primary key comprises a single attribute designated as a hash key attribute;
Each of the items stored in the resizable table comprises a respective value of the hash key attribute,
Partitioning the resizable table includes dividing the items in the resizable table into two or more partitions depending on the hash of their respective hash key attribute values. ,
The storage medium according to appendix 20.

Appendix 26. Partitioning the resizable table includes dividing the resizable table into two or more partitions, and the two or more partitions on a different one of the plurality of computing nodes. The storage medium according to appendix 20, comprising storing each of them.

Addendum 27.
The primary key comprises an attribute designated as a hash key attribute and another attribute designated as a range key attribute;
Each of the items stored in the resizable table comprises a value of the hash key attribute and a value of the range key attribute,
The range key attribute value uniquely identifies a particular item among all items in the resizable table having the same hash key attribute value, and the item having the same hash key Are ordered according to their respective range key attribute values,
Partitioning the rescalable table may categorize items in the resizable table having the same hash key attribute value into two or more segments, depending on their respective range key attribute values. Including splitting,
The storage medium according to appendix 20.

Appendix 28.
A system comprising a plurality of computing nodes each comprising at least one processor and memory, wherein the plurality of computing nodes are configured to implement a data storage service;
In response to receiving a service request to create a table on behalf of a storage service client, the service request identifies an identifier of the table and a primary key to index into items stored in the table; The data storage service is configured to create a resizable table in a non-relational data store,
The resizable table is configured to store a plurality of items, each including a value of the primary key;
The scaleable table does not have a predetermined size limit,
Creating the resizable table includes initiating an asynchronous table creation workflow;
system.

Appendix 29
In response to receiving a service request describing one or more tables maintained by the data storage service, the data storage service is configured to return information about the one or more tables;
The information regarding the one or more tables includes information indicating whether the creation of the resizable table by the asynchronous table creation workflow is successful.
The system according to appendix 28.

Appendix 30 The data storage service is further responsive to receipt of one or more service requests to store, retrieve, modify, or delete items in the resizable table. The system of claim 28, wherein the system is configured to programmatically perform at least one of determination or partitioning.

Addendum 31.
In response to receiving one or more service requests that store a plurality of items in the resizable table, the data storage service includes:
Determining whether the plurality of items can be stored in a single section of the resizable table;
Responsive to determining that the plurality of items cannot be stored in a single partition of the resizable table, the resizable table is configured to be programmatically partitioned.
The system according to appendix 28.

Appendix 32. The data storage service may further be configured to programmatically partition the resizable table, items in the resizable table, items in a particular section of the resizable table, or the scale. In response to receiving an increasing number of requests targeting items stored on the same computing node as at least a subset of the items in the modifiable table, or of the resizable table Target items in, items in a particular section of the resizable table, or items stored on the same computing node as at least a subset of the items in the resizable table Appendix 28, configured to be performed in response to a decreasing number of requests System described.

Addendum 33.
The primary key comprises a single attribute designated as a hash key attribute and another attribute designated as a range key attribute;
Each of the items stored in the resizable table comprises a value of the hash key attribute and a value of the range key attribute,
The range key attribute value uniquely identifies a particular item among all items in the resizable table having the same hash key attribute value, and the item having the same hash key Are ordered according to their respective range key attribute values,
The data storage service is further configured to divide the items in the resizable table having the same hash key attribute value into two or more sections depending on their respective range key attribute values To be
The system according to appendix 28.

Appendix 34. Creating a resizable table is further
Collecting information reflecting a state of one or more of the plurality of computing nodes;
Depending on the collected information, determining one or more computing nodes that create the resizable table;
Creating a respective partition for storing at least a subset of the resizable table on each of the one or more computing nodes;
29. The system according to appendix 28, comprising:

Addendum 35.
In response to receiving a request to read one or more items from the resizable table, the request includes an indication of a preferred consistency model, and the data storage service is consistent with the preferred consistency model. Configured to return the one or more items at
The system according to appendix 28.
本明細書で説明される技法を採用するデータ記憶サービスの実装に好適であり得る、1つのコンピューティングノードが、図25で図示されている。コンピューティングノード2500は、そのようなデータ記憶サービスを実装するシステムの構成要素のうちのいずれかまたは全てを提供する機能性を含んでもよく、あるいはコンピューティングノード2500に類似する、またはそれとは異なる複数のコンピューティングノードは、異なる実施形態で、この機能性を集合的に提供してもよい。例えば、種々の実施形態では、1つ以上のコンピューティングノード2500は、任意の数の記憶サービスクライアント110、フロントエンドモジュール140、任意の数の自動管理インスタンス150、任意の数の記憶デバイス(記憶ノードインスタンス160等)、および/またはウェブサービスプラットフォーム130、自動管理クラスタ、またはウェブサービスプラットフォーム130と相互作用する外部リソース(単純ワークフロー構成要素170または外部記憶サービス180等)の任意の他の構成要素を実装してもよい。複数のコンピューティングノード2500を含む、いくつかの実施形態では、コンピューティングノード2500の全てが、同一または類似ハードウェア構成要素、ソフトウェア構成要素、および機能性を含んでもよい一方で、他の実施形態では、本明細書で説明される機能性を実装するように構成されるコンピューティングシステムを備える、コンピューティングノード2500は、多種多様のハードウェア構成要素、ソフトウェア構成要素、および機能性を含んでもよい。いくつかの実施形態では、データ記憶サービスを集合的に実装する複数のコンピューティングノード2500は、より大型の共有リソースシステムまたはグリッドコンピューティングシステムの構成要素であってもよい。   One computing node, which may be suitable for implementing a data storage service that employs the techniques described herein, is illustrated in FIG. The computing node 2500 may include functionality that provides any or all of the components of a system that implements such a data storage service, or a plurality that is similar to or different from the computing node 2500. Computing nodes may collectively provide this functionality in different embodiments. For example, in various embodiments, one or more computing nodes 2500 may include any number of storage service clients 110, front end modules 140, any number of automatic management instances 150, any number of storage devices (storage nodes). And / or any other component of an external resource (such as simple workflow component 170 or external storage service 180) that interacts with web service platform 130, automated management cluster, or web service platform 130 May be. In some embodiments, including multiple computing nodes 2500, all of the computing nodes 2500 may include the same or similar hardware components, software components, and functionality, while other embodiments A computing node 2500 comprising a computing system configured to implement the functionality described herein may include a wide variety of hardware components, software components, and functionality. . In some embodiments, multiple computing nodes 2500 that collectively implement a data storage service may be a component of a larger shared resource system or a grid computing system.
図示した実施形態では、コンピューティングノード2500は、入出力(I/O)インターフェース2530を介してシステムメモリ2520に連結される、1つ以上のプロセッサ2510を含んでもよい。コンピューティングノード2500はさらに、I/Oインターフェース2530に連結されるネットワークインターフェース2540と、1つ以上の入出力デバイス2550とを含む。上述のように、いくつかの実施形態では、所与のノードは、本明細書で説明されるもの等の、データ記憶サービスクライアントの代わりにテーブルの中で(例えば、非リレーショナルデータベースの中で)データを管理および維持する、システムの1つよりも多くの構成要素の機能性を実装してもよい。種々の実施形態では、コンピューティングノード2500は、1つのプロセッサ2510を含むユニプロセッサシステム、またはいくつかのプロセッサ2510(例えば、2、4、8、または別の好適な数)を含むマルチプロセッサシステムであってもよい。プロセッサ2510は、命令を実行することが可能である任意の好適なプロセッサであってもよい。例えば、種々の実施形態では、プロセッサ2510は、x86、PowerPC、SPARC、またはMIPS ISA等の種々の命令セットアーキテクチャ(ISA)のうちのいずれか、あるいは任意の他の好適なISAを実装する、汎用または組み込みプロセッサであってもよい。マルチプロセッサシステムでは、プロセッサ2510のそれぞれは、必ずではないが一般的に、同一のISAを実装してもよい。同様に、データ記憶サービスを集合的に実装するもの等の分散コンピューティングシステムでは、コンピューティングノードのそれぞれは、同一のISAを実装してもよく、あるいは個々のコンピューティングノードおよび/またはノードの複製グループは、異なるISAを実装してもよい。   In the illustrated embodiment, the computing node 2500 may include one or more processors 2510 that are coupled to the system memory 2520 via an input / output (I / O) interface 2530. Computing node 2500 further includes a network interface 2540 coupled to I / O interface 2530 and one or more input / output devices 2550. As described above, in some embodiments, a given node is in a table (eg, in a non-relational database) on behalf of a data storage service client, such as those described herein. The functionality of more than one component of the system that manages and maintains data may be implemented. In various embodiments, the computing node 2500 is a uniprocessor system that includes one processor 2510 or a multiprocessor system that includes several processors 2510 (eg, 2, 4, 8, or another suitable number). There may be. The processor 2510 may be any suitable processor that is capable of executing instructions. For example, in various embodiments, the processor 2510 is a general purpose implementation that implements any of a variety of instruction set architectures (ISAs) such as x86, PowerPC, SPARC, or MIPS ISA, or any other suitable ISA. Or it may be an embedded processor. In a multiprocessor system, each of the processors 2510 may generally, but not necessarily, implement the same ISA. Similarly, in distributed computing systems such as those that collectively implement data storage services, each of the computing nodes may implement the same ISA, or individual computing nodes and / or replicas of the nodes Groups may implement different ISAs.
いくつかの実施形態では、システムメモリ2520は、プロセッサ(複数可)2510によってアクセス可能なプログラム命令および/またはデータを記憶するように構成される、非一過性のコンピュータ可読記憶媒体を含んでもよい。種々の実施形態では、システムメモリ2520は、スタティックランダムアクセスメモリ(SRAM)、同期型ダイナミックRAM(SDRAM)、不揮発性/フラッシュタイプメモリ、または任意の他のタイプのメモリ等の任意の好適なメモリ技術を使用して実装されてもよい。図示した実施形態では、上記で説明されるもの等の所望の機能を実装するプログラム命令およびデータは、それぞれ、プログラム命令2525およびデータ記憶装置2535としてシステムメモリ2520内に記憶されて示されている。例えば、プログラム命令2525は、プロセッサ(複数可)2510上で実行されたときに、記憶サービスクライアント110、フロントエンドモジュール140(ユーザインターフェースを含み得る)、自動管理インスタンス150、記憶ノードインスタンス160、管理コンソール265、要求ルータ、ステージングホスト、1つ以上のメタデータテーブル、単純ワークフロー構成要素170、外部記憶サービス180、および/または本明細書で説明されるデータ記憶サービスを提供するシステムの任意の他の構成要素、モジュール、またはサブモジュールのうちのいずれかまたは全てを実装する、プログラム命令を含んでもよい。プログラム命令2525はまた、本明細書で説明されていないデータ記憶サービスを実装するシステムの追加の機能性を実装するように構成される、プログラム命令を含んでもよい。   In some embodiments, system memory 2520 may include a non-transitory computer readable storage medium configured to store program instructions and / or data accessible by processor (s) 2510. . In various embodiments, the system memory 2520 is any suitable memory technology, such as static random access memory (SRAM), synchronous dynamic RAM (SDRAM), non-volatile / flash type memory, or any other type of memory. May be implemented using: In the illustrated embodiment, program instructions and data for implementing desired functions such as those described above are shown stored in system memory 2520 as program instructions 2525 and data storage 2535, respectively. For example, program instructions 2525, when executed on processor (s) 2510, are storage service client 110, front end module 140 (which may include a user interface), auto management instance 150, storage node instance 160, management console. 265, request router, staging host, one or more metadata tables, simple workflow component 170, external storage service 180, and / or any other configuration of a system that provides the data storage service described herein. It may include program instructions that implement any or all of the elements, modules, or submodules. Program instructions 2525 may also include program instructions that are configured to implement additional functionality of a system that implements a data storage service not described herein.
データ記憶装置2535は、種々の実施形態では、そのクライアント/ユーザの代わりにデータ記憶サービスによって維持されるデータの集合、および/または本明細書で説明されるように、そのようなサービスを実装するコンピューティングシステムによって使用されるメタデータ(限定されないが、サービスのクライアント/ユーザの代わりに管理および維持されるテーブル、メタデータテーブル、ビジネスルール、区分マップ、ルーティングテーブル、インデックス、ネームスペースおよび/またはその区分、サービスレベル合意パラメータ値、加入者選好および/またはアカウント情報、性能データ、および/またはリソース使用データを含む)を含んでもよい。他の実施形態では、上記で説明される技法を採用するデータ記憶サービスを実装するための本明細書で説明されるようなプログラム命令および/またはデータが、受信され、送信され、または異なるタイプのコンピュータ可読媒体上で、あるいはシステムメモリ2520またはコンピューティングノード2500から分離した類似媒体上で記憶されてもよい。一般的に言えば、コンピュータ可読媒体は、磁気または光学媒体、例えば、I/Oインターフェース2530を介してコンピューティングノード2500に連結されたディスクまたはCD/DVD−ROM等の記憶媒体またはメモリ媒体を含んでもよい。コンピュータ可読記憶媒体上に記憶されたプログラム命令およびデータは、ネットワークインターフェース2540を介して実装され得るようなネットワークおよび/または無線リンク等の通信媒体を介して伝えられ得る、電気、電磁、またはデジタル信号等の伝送媒体または信号によって、プロセッサ2510aによる実行のためにコンピューティングノード2500に伝送されてもよい。   The data storage device 2535, in various embodiments, implements a collection of data maintained by a data storage service on behalf of its clients / users, and / or as described herein. Metadata used by the computing system (including but not limited to tables, metadata tables, business rules, partition maps, routing tables, indexes, namespaces and / or their tables managed and maintained on behalf of the client / user of the service Partition, service level agreement parameter values, subscriber preference and / or account information, performance data, and / or resource usage data). In other embodiments, program instructions and / or data as described herein for implementing a data storage service that employs the techniques described above are received, transmitted, or of different types. It may be stored on a computer-readable medium or on a similar medium separate from system memory 2520 or computing node 2500. Generally speaking, computer-readable media includes magnetic or optical media, for example, storage media or memory media such as a disk or CD / DVD-ROM coupled to computing node 2500 via I / O interface 2530. But you can. Program instructions and data stored on a computer-readable storage medium may be transmitted over a communication medium such as a network and / or wireless link such as may be implemented via network interface 2540, electrical, electromagnetic, or digital signal Or the like may be transmitted to computing node 2500 for execution by processor 2510a.
一実施形態では、I/Oインターフェース2530は、ネットワークインターフェース2540または入出力デバイス2550等の他の周辺インターフェースを含む、コンピューティングノードの中で、プロセッサ(複数可)2510、システムメモリ2520、および任意の周辺デバイスの間のI/Oトラフィックを協調させるように構成されてもよい。いくつかの実施形態では、I/Oインターフェース2530は、1つの構成要素(例えば、システムメモリ2520)からのデータ信号を、別の構成要素(例えば、プロセッサ2510)による使用のために好適な形式に変換するように、任意の必要なプロトコル、タイミング、または他のデータ変換を行ってもよい。いくつかの実施形態では、I/Oインターフェース2530は、例えば、ペリフェラルコンポーネントインターコネクト(Peripheral Component Interconnect;PCI)バス標準またはユニバーサルシリアルバス(Universal Serial Bus;USB)標準の変形型等の種々のタイプの周辺バスを通して取り付けられたデバイスのサポートを含んでもよい。いくつかの実施形態では、I/Oインターフェース2530の機能は、例えば、ノースブリッジおよびサウスブリッジ等の2つ以上の別個の構成要素に分割されてもよい。また、いくつかの実施形態では、システムメモリ2520へのインターフェース等のI/Oインターフェース2530の機能性のうちのいくつかまたは全てが、プロセッサ2510に直接組み込まれてもよい。   In one embodiment, I / O interface 2530 includes processor (s) 2510, system memory 2520, and any of the computing nodes, including network interface 2540 or other peripheral interfaces such as input / output device 2550. It may be configured to coordinate I / O traffic between peripheral devices. In some embodiments, the I / O interface 2530 converts a data signal from one component (eg, system memory 2520) into a form suitable for use by another component (eg, processor 2510). Any necessary protocol, timing, or other data conversion may be performed to convert. In some embodiments, the I / O interface 2530 may include various types of peripherals such as, for example, a peripheral component interconnect (PCI) bus standard or a universal serial bus (USB) standard variant. It may include support for devices attached through the bus. In some embodiments, the functionality of the I / O interface 2530 may be divided into two or more separate components, such as, for example, a North Bridge and a South Bridge. Also, in some embodiments, some or all of the functionality of the I / O interface 2530, such as an interface to the system memory 2520, may be incorporated directly into the processor 2510.
ネットワークインターフェース2540は、コンピューティングノード2500とネットワークに取り付けられた他のデバイス(他のコンピュータシステム、通信デバイス、入出力デバイス、または外部記憶デバイス等)との間で、または共有コンピューティングサービスを提供するシステム内の他のノードの間で、データが交換されることを可能にするように構成されてもよい。種々の実施形態では、ネットワークインターフェース2540は、任意の好適なタイプのイーサネット(登録商標)ネットワーク等の有線または無線一般データネットワークを介した、例えば、アナログ音声ネットワークまたはデジタルファイバ通信ネットワーク等の電気通信/電話ネットワークを介した、ファイバチャネルSAN等の記憶領域ネットワークを介した、または任意の他の好適なタイプのネットワークおよび/またはプロトコルを介した、通信をサポートしてもよい。   The network interface 2540 provides shared computing services between the computing node 2500 and other devices (such as other computer systems, communication devices, input / output devices, or external storage devices) attached to the network. It may be configured to allow data to be exchanged between other nodes in the system. In various embodiments, the network interface 2540 may be connected to any telecommunication / wireless general data network, such as an analog voice network or a digital fiber communication network, such as any suitable type of Ethernet network. Communication may be supported via a telephone network, via a storage area network such as a Fiber Channel SAN, or via any other suitable type of network and / or protocol.
入出力デバイス2550は、いくつかの実施形態では、1つ以上の表示端末、キーボード、キーパッド、タッチパッド、スキャンデバイス、音声または光学認識デバイス、あるいは1つ以上のコンピューティングノード2500によってデータを入力する、または読み出すために好適である任意の他のデバイスを含んでもよい。複数の入出力デバイス2550は、コンピューティングノード2500の中に存在してもよく、またはデータ記憶サービスを実装するように構成されるシステムの種々のコンピューティングノード上で分配されてもよい。いくつかの実施形態では、類似の入出力デバイスは、コンピューティングノード2500から分離していてもよく、ネットワークインターフェース2540上等で有線または無線接続を通してシステムの1つ以上のコンピューティングノードと相互作用してもよい。   Input / output device 2550, in some embodiments, inputs data by one or more display terminals, keyboard, keypad, touchpad, scan device, voice or optical recognition device, or one or more computing nodes 2500. Any other device suitable for performing or reading may be included. Multiple input / output devices 2550 may reside within computing node 2500 or may be distributed on various computing nodes of a system configured to implement data storage services. In some embodiments, similar input / output devices may be separate from the computing node 2500 and interact with one or more computing nodes of the system through a wired or wireless connection, such as over the network interface 2540. May be.
記憶サービスクライアント(例えば、ユーザ、加入者、および/またはクライアントアプリケーション)は、サービスに対する要求を提出するため(限定されないが、テーブルの中のアイテムを記憶する、読み出す、および/または更新する要求、あるいはテーブルを再区分する要求を含む)、および結果を受信するため等に、異なる実施形態において種々の方法で、本明細書で説明されるもの等のデータ記憶サービスと相互作用してもよい。例えば、サービスへの一部の加入者が、コンピューティングノード2500への物理的アクセスを有してもよく、該当する場合、情報を提供および/または受信するように、種々の入出力デバイス2550と相互作用してもよい。代替として、他のクライアント/ユーザは、ネットワークインターフェース2540を介して(例えば、インターネットおよび/またはワールドワイドウェブを介して)遠隔等で、システムにアクセスするためにクライアントコンピューティングシステムを使用してもよい。加えて、サービスを提供するシステムのコンピューティングノードのうちのいくつかまたは全ては、(例えば、ユーザ要求に応答して)1つ以上の入出力デバイス2550を介して、種々のフィードバックまたは他の一般タイプの情報をクライアント/ユーザに提供してもよい。   A storage service client (e.g., user, subscriber, and / or client application) may submit a request for service (including, but not limited to, a request to store, retrieve, and / or update items in a table, or In different embodiments may interact with a data storage service such as those described herein in various ways, including to request repartitioning of tables) and receiving results. For example, some subscribers to the service may have physical access to the computing node 2500 and, if applicable, various input / output devices 2550 to provide and / or receive information. May interact. Alternatively, other clients / users may use the client computing system to access the system remotely, such as via the network interface 2540 (eg, via the Internet and / or the World Wide Web). . In addition, some or all of the computing nodes of the system providing the service may receive various feedback or other general via one or more input / output devices 2550 (eg, in response to a user request). Types of information may be provided to the client / user.
当業者であれば、コンピューティングノード2500が例証的にすぎず、実施形態の範囲を限定することを目的としていないと理解するであろう。具体的には、コンピューティングシステムおよびデバイスは、コンピュータ、ネットワークデバイス、インターネットアプライアンス、PDA、無線電話、ポケットベル等を含む、指示された機能を果たすことができるハードウェアまたはソフトウェアの任意の組み合わせを含んでもよい。コンピューティングノード2500はまた、いくつかの実施形態では、図示されていない他のデバイスに接続されてもよい。加えて、図示した構成要素によって提供される機能性は、いくつかの実施形態では、より少ない構成要素に組み込まれ、または追加の構成要素の中で分配されてもよい。同様に、いくつかの実施形態では、図示した構成要素のうちのいくつかの機能性は、提供されなくてもよく、および/または他の追加の機能性が利用可能であり得る。   Those skilled in the art will appreciate that the computing node 2500 is merely exemplary and is not intended to limit the scope of the embodiments. Specifically, computing systems and devices include any combination of hardware or software capable of performing the indicated functions, including computers, network devices, Internet appliances, PDAs, wireless phones, pagers, etc. But you can. The computing node 2500 may also be connected to other devices not shown in some embodiments. In addition, the functionality provided by the illustrated components may be incorporated into fewer components or distributed among additional components in some embodiments. Similarly, in some embodiments, some functionality of the illustrated components may not be provided and / or other additional functionality may be available.
当業者であればまた、種々のアイテムが、使用されている間にメモリの中または記憶装置上に記憶されるものとして図示されているが、これらのアイテムまたはそれらの部分は、メモリ管理およびデータ完全性の目的でメモリと他の記憶デバイスとの間で転送されてもよいことも理解するであろう。代替として、他の実施形態では、ソフトウェア構成要素のうちのいくつかまたは全てが、別のデバイス上のメモリの中で実行し、コンピュータ間通信を介して、図示したコンピューティングシステムと通信してもよい。システム構成要素またはデータ構造のうちのいくつかまたは全てはまた、その種々の実施例が上記で説明される、適切なドライブによって読み取られる、コンピュータ可読記憶媒体または携帯用部品上に(例えば、命令または構造化データとして)記憶されてもよい。いくつかの実施形態では、コンピューティングノード2500から分離しているコンピュータ可読記憶媒体上に記憶された命令は、ネットワークおよび/または無線リンク等の通信媒体を介して伝えられる、電気、電磁、またはデジタル信号等の伝送媒体または信号を介して、コンピューティングノード2500に伝送されてもよい。種々の実施形態はさらに、コンピュータ可読記憶媒体上で、先述の説明に従って実装される、命令および/またはデータを受信、送信、または記憶することを含んでもよい。したがって、異なる実施形態が、他のコンピュータシステム構成を用いて実践されてもよい。   Those skilled in the art will also illustrate that the various items are illustrated as being stored in memory or on storage while in use, but these items or portions thereof are memory management and data It will also be appreciated that data may be transferred between the memory and other storage devices for integrity purposes. Alternatively, in other embodiments, some or all of the software components may execute in memory on another device and communicate with the illustrated computing system via computer-to-computer communication. Good. Some or all of the system components or data structures may also be on a computer readable storage medium or portable component (eg, instructions or readable) read by a suitable drive, various embodiments of which are described above. As structured data). In some embodiments, instructions stored on a computer-readable storage medium that is separate from computing node 2500 are transmitted via electrical, electromagnetic, or digital media such as networks and / or wireless links. The signal may be transmitted to the computing node 2500 via a transmission medium such as a signal or a signal. Various embodiments may further include receiving, transmitting, or storing instructions and / or data implemented in accordance with the foregoing description on a computer-readable storage medium. Accordingly, different embodiments may be practiced with other computer system configurations.
本明細書で説明されるいくつかの実施例は、非リレーショナルデータベースを含むシステムにおける種々の技法の適用を対象とする一方で、他の実施形態では、これらの技法は、異なる記憶パラダイムを使用して非リレーショナルデータ記憶部が実装される、システムで適用されてもよいことに留意されたい。   While some examples described herein are directed to the application of various techniques in systems that include non-relational databases, in other embodiments, these techniques use different storage paradigms. Note that non-relational data storage may be implemented in a system that is implemented.
当業者であれば、いくつかの実施形態では、上記で論議される方法によって提供される機能性は、より多くのソフトウェアモジュールまたはルーチンの間で分割されること、あるいはより少ないモジュールまたはルーチンに整理統合されること等の代替的な方法で提供されてもよいことを理解するであろう。同様に、いくつかの実施形態では、代わりに、他の図示した方法が、それぞれ、そのような機能性を欠いている、または含んでいるとき、あるいは提供される機能性の量が変更されるとき等に、図示した方法は、説明されるよりも多いまたは少ない機能性を提供してもよい。加えて、種々の動作が、特定の方式で(例えば、直列または並列で)、および/または特定の順序で行われるものとして図示されてもよい一方で、当業者であれば、他の実施形態では、動作が、他の順序で、および他の方式で行われてもよいことを理解するであろう。当業者であればまた、上記で論議されるデータ構造が、単一のデータ構造を複数のデータ構造に分割させることによって、または複数のデータ構造を単一のデータ構造に整理統合させることによって等、異なる方式で構造化されてもよいことも理解するであろう。同様に、いくつかの実施形態では、代わりに、他の図示したデータ構造が、それぞれ、そのような情報を欠いている、または含んでいるとき、あるいは記憶される情報の量またはタイプが変更されるとき等に、図示したデータ構造は、説明されるよりも多いまたは少ない情報を記憶してもよい。図で描写され、本明細書で説明される種々の方法は、方法の例証的実施形態を表す。本方法は、種々の実施形態では、ソフトウェアで、ハードウェアで、またはそれらの組み合わせで実装されてもよい。同様に、種々の実施形態では、任意の方法の順序が変更されてもよく、種々の要素が、追加され、並べ替えられ、組み合わせられ、省略され、修正される等してもよい。   One skilled in the art will recognize that in some embodiments, the functionality provided by the methods discussed above may be divided among more software modules or routines or organized into fewer modules or routines. It will be understood that it may be provided in alternative ways, such as being integrated. Similarly, in some embodiments, other illustrated methods may instead lack or include such functionality, respectively, or the amount of functionality provided may be altered. Sometimes, the illustrated method may provide more or less functionality than described. In addition, while various operations may be illustrated as being performed in a particular fashion (eg, in series or in parallel) and / or in a particular order, those of ordinary skill in the art will appreciate other embodiments. It will be appreciated that the operations may be performed in other orders and in other manners. Those skilled in the art can also consider the data structures discussed above by dividing a single data structure into multiple data structures, or by consolidating multiple data structures into a single data structure, etc. It will also be understood that it may be structured in different ways. Similarly, in some embodiments, other illustrated data structures instead lack or contain such information, respectively, or the amount or type of information stored is changed. As shown, the illustrated data structure may store more or less information than described. The various methods depicted in the figures and described herein represent exemplary embodiments of the methods. The method may be implemented in software, hardware, or combinations thereof in various embodiments. Similarly, in various embodiments, the order of any method may be changed, and various elements may be added, rearranged, combined, omitted, modified, etc.
先述の内容から、例証の目的で、具体的実施形態が本明細書で説明されているが、添付の請求項およびその中に記載される要素の精神および範囲から逸脱することなく、種々の修正が行われてもよいことが理解されるであろう。加えて、ある態様が、ある請求形態で以下に提示されるが、発明者らは、任意の利用可能な請求形態で種々の態様を考慮している。例えば、いくつかの態様のみが、現在、コンピュータ可読記憶媒体で具現化されるものとして記載されてもよいが、他の態様も同様にそのように具現化されてもよい。本開示の利益を有する当業者に明白となるように、種々の修正および変更が行われてもよい。全てのそのような修正および変更を包含し、したがって、上記の説明が、制限的な意味よりもむしろ例証的な意味で見なされることが意図される。   From the foregoing, for the purposes of illustration, specific embodiments have been described herein, but various modifications can be made without departing from the spirit and scope of the appended claims and the elements described therein. It will be appreciated that may be performed. In addition, although certain aspects are presented below in certain claim forms, the inventors contemplate various aspects in any available claim form. For example, only some aspects may currently be described as being embodied on a computer-readable storage medium, although other aspects may be so embodied as well. Various modifications and changes may be made as will be apparent to those skilled in the art having the benefit of this disclosure. It is intended to embrace all such modifications and changes and thus the above description is to be considered in an illustrative rather than restrictive sense.

Claims (15)

  1. コンピュータによって、
    要求が、テーブルの識別子、および前記テーブルの中に記憶されたアイテムにインデックス作成する一次キーを特定する、非リレーショナルデータ記憶部の中で前記テーブルを作成する要求を受信することと、
    前記受信に応答して、
    規模変更可能なテーブルが、それぞれが前記一次キーの値を含む、複数のアイテムを記憶するように構成され、前記規模変更可能なテーブルが、所定のサイズ制限を持たない、前記非リレーショナルデータ記憶部の中で前記規模変更可能なテーブルを作成することと、
    前記規模変更可能なテーブルにアクセスする1つ以上の要求の受信に応答して、あるいは非リレーショナルデータ記憶部を実装するシステムにおける異常の検出に応答して、前記規模変更可能なテーブルのサイズ決定または区分化のうちの少なくとも1つをプログラムで行うことと、
    を行うことを含む、方法。
    By computer
    Receiving a request to create the table in a non-relational data store that specifies an identifier of the table and a primary key to index the items stored in the table;
    In response to the reception,
    The non-relational data storage unit, wherein the resizable table is configured to store a plurality of items, each including the value of the primary key, and the resizable table does not have a predetermined size limit Creating the resizable table in
    Resizing the resizable table in response to receiving one or more requests to access the resizable table or in response to detecting an anomaly in a system implementing a non-relational data store Doing at least one of the segmentation programmatically;
    A method comprising:
  2. 前記規模変更可能なテーブルを作成することは、非同期テーブル作成ワークフローの実施を開始することを含み、
    前記方法はさらに、
    前記非リレーショナルデータ記憶部の中で維持された1つ以上のテーブルを記述する要求を受信することと、
    1つ以上のテーブルを記述する前記要求の受信に応答して、前記1つ以上のテーブルに関する情報が、前記非同期テーブル作成ワークフローによって前記規模変更可能なテーブルの作成が成功したかどうかを示す情報を含む、前記1つ以上のテーブルに関する前記情報を返すことと、
    を含む、請求項1に記載の方法。
    Creating the resizable table includes initiating an asynchronous table creation workflow;
    The method further comprises:
    Receiving a request describing one or more tables maintained in the non-relational data store;
    In response to receiving the request describing one or more tables, the information about the one or more tables includes information indicating whether the scaleable table creation by the asynchronous table creation workflow is successful. Including returning the information about the one or more tables;
    The method of claim 1 comprising:
  3. 前記規模変更可能なテーブルの中に複数のアイテムを記憶する1つ以上の要求を受信することと、
    前記1つ以上の要求の受信に応答して、
    前記複数のアイテムを、前記規模変更可能なテーブルの単一の区分の中に記憶することができるかどうかを判定することと、
    前記複数のアイテムを前記規模変更可能なテーブルの単一の区分の中に記憶することができないという判定に応答して、前記規模変更可能なテーブルをプログラムで区分することを行うことと、
    をさらに含む、請求項1に記載の方法。
    Receiving one or more requests to store a plurality of items in the resizable table;
    In response to receiving the one or more requests,
    Determining whether the plurality of items can be stored in a single section of the resizable table;
    In response to determining that the plurality of items cannot be stored in a single section of the resizable table, partitioning the resizable table programmatically;
    The method of claim 1, further comprising:
  4. 前記一次キーは、ハッシュキー属性として指定される単一の属性を備え、
    前記規模変更可能なテーブルの中に記憶された前記アイテムのそれぞれは、前記ハッシュキー属性のそれぞれの値を備え、
    前記規模変更可能なテーブルをプログラムで区分することは、それらのそれぞれのハッシュキー属性値のハッシュに依存して、前記規模変更可能なテーブルの中の前記アイテムを2つ以上の区分に分割することを含む、
    請求項1に記載の方法。
    The primary key comprises a single attribute designated as a hash key attribute;
    Each of the items stored in the resizable table comprises a respective value of the hash key attribute,
    Partitioning the resizable table programmatically divides the items in the resizable table into two or more partitions depending on the hash of their respective hash key attribute values. including,
    The method of claim 1.
  5. 前記一次キーは、ハッシュキー属性として指定される属性と、範囲キー属性として指定される別の属性とを備え、
    前記規模変更可能なテーブルの中に記憶された前記アイテムのそれぞれは、前記ハッシュキー属性のそれぞれの値と、前記範囲キー属性のそれぞれの値とを備え、
    前記範囲キー属性値は、同一のハッシュキー属性値を有する前記規模変更可能なテーブルの中の全てのアイテムの中から、特定のアイテムを一意的に識別し、前記同一のハッシュキーを有する前記アイテムは、それらのそれぞれの範囲キー属性値に従って順序付けられ、
    前記規模変更可能なテーブルをプログラムで区分することは、それらのそれぞれの範囲キー属性値に依存して、同一のハッシュキー属性値を有する前記規模変更可能なテーブルの中のアイテムを2つ以上の区分に分割することを含む、
    請求項1に記載の方法。
    The primary key comprises an attribute designated as a hash key attribute and another attribute designated as a range key attribute;
    Each of the items stored in the resizable table comprises a value of the hash key attribute and a value of the range key attribute,
    The range key attribute value uniquely identifies a particular item among all items in the resizable table having the same hash key attribute value, and the item having the same hash key Are ordered according to their respective range key attribute values,
    Partitioning the resizable table programmatically may depend on two or more items in the resizable table having the same hash key attribute value depending on their respective range key attribute values. Including dividing into segments,
    The method of claim 1.
  6. 前記規模変更可能なテーブルをプログラムで区分することは、前記規模変更可能なテーブルを2つ以上の区分に分割することと、複数のコンピューティングノードのうちの異なるものの上に、前記2つの区分のそれぞれを記憶することとを含む、請求項1に記載の方法。   Partitioning the resizable table programmatically includes dividing the resizable table into two or more partitions and over the different ones of the plurality of computing nodes. 2. The method of claim 1, comprising storing each.
  7. 前記規模変更可能なテーブルをプログラムで区分することは、区分の1つ以上の複製が要求を受け入れて処理し続けている間に、前記規模変更可能なテーブルの前記区分を移動させること、または分割することを含む、請求項1に記載の方法。   Partitioning the resizable table programmatically involves moving or partitioning the partition of the resizable table while one or more replicas of the partition continue to accept and process requests. The method of claim 1, comprising:
  8. 前記規模変更可能なテーブルをプログラムで区分することは、前記規模変更可能なテーブルの中のアイテム、前記規模変更可能なテーブルの特定の区分の中のアイテム、または前記規模変更可能なテーブルの中の前記アイテムの少なくともサブセットと同一のコンピューティングノード上に記憶されたアイテムを標的にする、増加する数の要求の受信に応答して、あるいは、前記規模変更可能なテーブルの中のアイテム、前記規模変更可能なテーブルの特定の区分の中のアイテム、または前記規模変更可能なテーブルの中の前記アイテムの少なくともサブセットと同一のコンピューティングノード上に記憶されたアイテムを標的にする、減少する数の要求の受信に応答して行われる、請求項1に記載の方法。   Partitioning the resizable table programmatically includes items in the resizable table, items in a particular section of the resizable table, or in the resizable table. In response to receiving an increasing number of requests targeting items stored on the same computing node as at least a subset of the items, or items in the resizable table, the resizing Of a decreasing number of requests targeting items in a particular partition of a possible table or items stored on the same computing node as at least a subset of the items in the resizable table The method of claim 1, wherein the method is performed in response to reception.
  9. テーブルを作成する前記要求はさらに、1つ以上のユーザ選好の指示を備え、前記1つ以上のユーザ選好は、好ましいサービス要求スループットレベル、または保証が要求されるサービス要求スループットレベルを備え、
    前記規模変更可能なテーブルのサイズ決定または区分化のうちの少なくとも1つをプログラムで行うことは、前記ユーザ選好のうちの1つ以上が満たされていないという検出に応答して行われる、
    請求項1に記載の方法。
    The request to create a table further comprises an indication of one or more user preferences, the one or more user preferences comprising a preferred service request throughput level or a service request throughput level for which a guarantee is required;
    Programmatically performing at least one of sizing or partitioning of the resizable table is performed in response to detecting that one or more of the user preferences are not satisfied,
    The method of claim 1.
  10. それぞれ、少なくとも1つのプロセッサと、メモリとを備える、複数のコンピューティングノードを備える、システムであって、前記複数のコンピューティングノードは、データ記憶サービスを実装するように構成され、
    記憶サービスクライアントの代わりにテーブルを作成するサービス要求の受信に応答して、前記サービス要求は、前記テーブルの識別子、および前記テーブルの中に記憶されたアイテムにインデックス作成する一次キーを特定し、前記データ記憶サービスは、非リレーショナルデータ記憶部の中で規模変更可能なテーブルを作成するように構成され、
    前記規模変更可能なテーブルは、それぞれが前記一次キーの値を含む、複数のアイテムを記憶するように構成され、
    前記規模変更可能なテーブルは、所定のサイズ制限を持たず、
    前記規模変更可能なテーブルを作成することは、非同期テーブル作成ワークフローの実施を開始することを含み、
    さらに、前記データ記憶サービスにおける異常の検出に応答して、前記規模変更可能なテーブルのサイズ決定または区分化のうちの少なくとも1つをプログラムで行う
    システム。
    A system comprising a plurality of computing nodes each comprising at least one processor and memory, wherein the plurality of computing nodes are configured to implement a data storage service;
    In response to receiving a service request to create a table on behalf of a storage service client, the service request identifies an identifier of the table and a primary key to index into items stored in the table; The data storage service is configured to create a resizable table in a non-relational data store,
    The resizable table is configured to store a plurality of items, each including a value of the primary key;
    The scaleable table does not have a predetermined size limit,
    To create the scale can change the table, look at including to start the implementation of asynchronous table creation workflow,
    Further, in response to detection of an abnormality in the data storage service, the program performs at least one of sizing or partitioning of the resizable table ,
    system.
  11. 前記データ記憶サービスはさらに、前記規模変更可能なテーブルの中のアイテムを記憶する、読み出す、修正する、または削除する1つ以上のサービス要求の受信に応答して、前記規模変更可能なテーブルのサイズ決定または区分化のうちの少なくとも1つをプログラムで行うように構成される、請求項10に記載のシステム。   The data storage service is further responsive to receipt of one or more service requests to store, retrieve, modify, or delete items in the resizable table. The system of claim 10, wherein the system is configured to programmatically perform at least one of determination or partitioning.
  12. 前記規模変更可能なテーブルの中に複数のアイテムを記憶する1つ以上のサービス要求の受信に応答して、前記データ記憶サービスは、
    前記複数のアイテムを、前記規模変更可能なテーブルの単一の区分の中に記憶することができるかどうかを判定し、
    前記複数のアイテムを前記規模変更可能なテーブルの単一の区分の中に記憶することができないという判定に応答して、前記規模変更可能なテーブルをプログラムで区分するように構成される、
    請求項10に記載のシステム。
    In response to receiving one or more service requests that store a plurality of items in the resizable table, the data storage service includes:
    Determining whether the plurality of items can be stored in a single section of the resizable table;
    Responsive to determining that the plurality of items cannot be stored in a single partition of the resizable table, the resizable table is configured to be programmatically partitioned.
    The system according to claim 10.
  13. 前記データ記憶サービスはさらに、前記規模変更可能なテーブルをプログラムで区分することが、前記規模変更可能なテーブルの中のアイテム、前記規模変更可能なテーブルの特定の区分の中のアイテム、または前記規模変更可能なテーブルの中の前記アイテムの少なくともサブセットと同一のコンピューティングノード上に記憶されたアイテムを標的にする、増加する数の要求の受信に応答して、あるいは、前記規模変更可能なテーブルの中のアイテム、前記規模変更可能なテーブルの特定の区分の中のアイテム、または前記規模変更可能なテーブルの中の前記アイテムの少なくともサブセットと同一のコンピューティングノード上に記憶されたアイテムを標的にする、減少する数の要求の受信に応答して行われるように、構成される、請求項10に記載のシステム。   The data storage service may further be configured to programmatically partition the resizable table, items in the resizable table, items in a particular section of the resizable table, or the scale. In response to receiving an increasing number of requests targeting items stored on the same computing node as at least a subset of the items in the modifiable table, or of the resizable table Target items in, items in a particular section of the resizable table, or items stored on the same computing node as at least a subset of the items in the resizable table Configured to be performed in response to receipt of a decreasing number of requests. The system according to claim 10.
  14. 前記一次キーは、ハッシュキー属性として指定される単一の属性と、範囲キー属性として指定される別の属性とを備え、
    前記規模変更可能なテーブルの中に記憶された前記アイテムのそれぞれは、前記ハッシュキー属性のそれぞれの値と、前記範囲キー属性のそれぞれの値とを備え、
    前記範囲キー属性値は、同一のハッシュキー属性値を有する前記規模変更可能なテーブルの中の全てのアイテムの中から、特定のアイテムを一意的に識別し、前記同一のハッシュキーを有する前記アイテムは、それらのそれぞれの範囲キー属性値に従って順序付けられ、
    前記データ記憶サービスはさらに、それらのそれぞれの範囲キー属性値に依存して、同一のハッシュキー属性値を有する前記規模変更可能なテーブルの中のアイテムを2つ以上の区分に分割するように構成される、
    請求項10に記載のシステム。
    The primary key comprises a single attribute designated as a hash key attribute and another attribute designated as a range key attribute;
    Each of the items stored in the resizable table comprises a value of the hash key attribute and a value of the range key attribute,
    The range key attribute value uniquely identifies a particular item among all items in the resizable table having the same hash key attribute value, and the item having the same hash key Are ordered according to their respective range key attribute values,
    The data storage service is further configured to divide the items in the resizable table having the same hash key attribute value into two or more sections depending on their respective range key attribute values To be
    The system according to claim 10.
  15. 規模変更可能なテーブルを作成することはさらに、
    前記複数のコンピューティングノードのうちの1つ以上の状態を反映する情報を収集することと、
    前記収集された情報に依存して、前記規模変更可能なテーブルを作成する1つ以上のコンピューティングノードを判定することと、
    前記1つ以上のコンピューティングノードのそれぞれの上に前記規模変更可能なテーブルの少なくともサブセットを記憶するためのそれぞれの区分を作成することと、
    を含む、請求項10に記載のシステム。
    Creating a resizable table is further
    Collecting information reflecting a state of one or more of the plurality of computing nodes;
    Depending on the collected information, determining one or more computing nodes that create the resizable table;
    Creating a respective partition for storing at least a subset of the resizable table on each of the one or more computing nodes;
    The system of claim 10, comprising:
JP2014518955A 2011-06-27 2012-06-27 System and method for implementing a scalable data storage service Active JP5798248B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US13/170,031 US8595267B2 (en) 2011-06-27 2011-06-27 System and method for implementing a scalable data storage service
US13/170,031 2011-06-27
PCT/US2012/044371 WO2013003443A2 (en) 2011-06-27 2012-06-27 System and method for implementing a scalable data storage service

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2015163040A Division JP2016027476A (en) 2011-06-27 2015-08-20 System and method for implementing scalable data storage service

Publications (2)

Publication Number Publication Date
JP2014525082A JP2014525082A (en) 2014-09-25
JP5798248B2 true JP5798248B2 (en) 2015-10-21

Family

ID=47362813

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2014518955A Active JP5798248B2 (en) 2011-06-27 2012-06-27 System and method for implementing a scalable data storage service
JP2015163040A Pending JP2016027476A (en) 2011-06-27 2015-08-20 System and method for implementing scalable data storage service
JP2017156531A Active JP6560308B2 (en) 2011-06-27 2017-08-14 System and method for implementing a data storage service
JP2019132958A Pending JP2019220195A (en) 2011-06-27 2019-07-18 System and method for implementing data storage service

Family Applications After (3)

Application Number Title Priority Date Filing Date
JP2015163040A Pending JP2016027476A (en) 2011-06-27 2015-08-20 System and method for implementing scalable data storage service
JP2017156531A Active JP6560308B2 (en) 2011-06-27 2017-08-14 System and method for implementing a data storage service
JP2019132958A Pending JP2019220195A (en) 2011-06-27 2019-07-18 System and method for implementing data storage service

Country Status (7)

Country Link
US (6) US8595267B2 (en)
EP (2) EP2724268B1 (en)
JP (4) JP5798248B2 (en)
CN (2) CN107247778A (en)
BR (1) BR112013033693A2 (en)
CA (2) CA2839121C (en)
WO (1) WO2013003443A2 (en)

Families Citing this family (195)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8732426B2 (en) 2010-09-15 2014-05-20 Pure Storage, Inc. Scheduling of reactive I/O operations in a storage environment
US8589655B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of I/O in an SSD environment
US8468318B2 (en) 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US9244769B2 (en) 2010-09-28 2016-01-26 Pure Storage, Inc. Offset protection data in a RAID array
US8832077B1 (en) 2011-05-04 2014-09-09 Google Inc. Selectively retrieving search results in accordance with different logical relationships
US8595267B2 (en) 2011-06-27 2013-11-26 Amazon Technologies, Inc. System and method for implementing a scalable data storage service
US9170779B2 (en) * 2011-07-19 2015-10-27 International Business Machines Corporation Managing an application development environment
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US9110933B1 (en) 2011-11-04 2015-08-18 Google Inc. Processing data triggers in an untrusted environment based on information stored in a trusted environment
US9148329B1 (en) * 2011-11-30 2015-09-29 Google Inc. Resource constraints for request processing
US8953453B1 (en) 2011-12-15 2015-02-10 Amazon Technologies, Inc. System and method for throttling service requests using work-based tokens
US8914497B1 (en) 2011-12-15 2014-12-16 Amazon Technologies, Inc. System and method for throttling service requests having non-uniform workloads
CN102566940B (en) * 2011-12-21 2014-11-05 华为技术有限公司 I/O (input/output) equalization treatment method and device
US8930312B1 (en) 2012-01-17 2015-01-06 Amazon Technologies, Inc. System and method for splitting a replicated data partition
US9116862B1 (en) 2012-01-17 2015-08-25 Amazon Technologies, Inc. System and method for data replication using a single master failover protocol
US9069827B1 (en) 2012-01-17 2015-06-30 Amazon Technologies, Inc. System and method for adjusting membership of a data replication group
US8843441B1 (en) 2012-01-17 2014-09-23 Amazon Technologies, Inc. System and method for maintaining a master replica for reads and writes in a data store
US8719225B1 (en) 2012-01-17 2014-05-06 Amazon Technologies, Inc. System and method for log conflict detection and resolution in a data store
US9489434B1 (en) 2012-01-17 2016-11-08 Amazon Technologies, Inc. System and method for replication log branching avoidance using post-failover rejoin
US8594623B2 (en) * 2012-01-25 2013-11-26 Telefonaktiebolaget L M Ericsson (Publ) Subscriber portfolio management system
US8719540B1 (en) 2012-03-15 2014-05-06 Pure Storage, Inc. Fractal layout of data blocks across multiple devices
US9235607B1 (en) 2012-03-29 2016-01-12 Google Inc. Specifying a predetermined degree of inconsistency for test data
US9229901B1 (en) * 2012-06-08 2016-01-05 Google Inc. Single-sided distributed storage system
US9185235B2 (en) * 2012-08-02 2015-11-10 Ab Initio Technology Llc Aggregating data in a mediation system
US11032259B1 (en) 2012-09-26 2021-06-08 Pure Storage, Inc. Data protection in a storage system
US10623386B1 (en) 2012-09-26 2020-04-14 Pure Storage, Inc. Secret sharing data protection in a storage system
US8745415B2 (en) 2012-09-26 2014-06-03 Pure Storage, Inc. Multi-drive cooperation to generate an encryption key
US9852220B1 (en) * 2012-10-08 2017-12-26 Amazon Technologies, Inc. Distributed workflow management system
US10908835B1 (en) 2013-01-10 2021-02-02 Pure Storage, Inc. Reversing deletion of a virtual machine
US9063967B2 (en) 2013-01-10 2015-06-23 Pure Storage, Inc. Performing copies in a storage system
US9015123B1 (en) * 2013-01-16 2015-04-21 Netapp, Inc. Methods and systems for identifying changed data in an expandable storage volume
US9612921B2 (en) * 2013-03-01 2017-04-04 Teradata Us, Inc. Method and system for load balancing a distributed database providing object-level management and recovery
US9953351B1 (en) 2013-03-13 2018-04-24 Amazon Technologies, Inc. Managing resource requests that exceed reserved resource capacity
US10817312B2 (en) * 2013-03-14 2020-10-27 Microsoft Technology Licensing, Llc Programming model for performant computing in document-oriented storage services
US9230040B2 (en) 2013-03-14 2016-01-05 Microsoft Technology Licensing, Llc Scalable, schemaless document query model
US9552296B2 (en) * 2013-03-15 2017-01-24 International Business Machines Corporation Verifying shared memory integrity
JP2014215914A (en) * 2013-04-26 2014-11-17 株式会社東芝 Terminal device, information processing method, and information processing program
US10924562B1 (en) * 2013-05-02 2021-02-16 Amazon Technologies, Inc. Real-time monitoring of IO load and latency
US9471657B1 (en) * 2013-05-20 2016-10-18 Amazon Technologies, Inc. Range query capacity allocation
US9489443B1 (en) 2013-05-24 2016-11-08 Amazon Technologies, Inc. Scheduling of splits and moves of database partitions
US9384227B1 (en) * 2013-06-04 2016-07-05 Amazon Technologies, Inc. Database system providing skew metrics across a key space
US9602426B2 (en) 2013-06-21 2017-03-21 Microsoft Technology Licensing, Llc Dynamic allocation of resources while considering resource reservations
US9385956B2 (en) 2013-06-25 2016-07-05 Amazon Technologies, Inc. Compound token buckets for burst-mode admission control
US9471393B2 (en) 2013-06-25 2016-10-18 Amazon Technologies, Inc. Burst-mode admission control using token buckets
US10764185B2 (en) * 2013-06-25 2020-09-01 Amazon Technologies, Inc. Token-based policies burst-mode operations
US9553821B2 (en) 2013-06-25 2017-01-24 Amazon Technologies, Inc. Equitable distribution of excess shared-resource throughput capacity
US9218221B2 (en) 2013-06-25 2015-12-22 Amazon Technologies, Inc. Token sharing mechanisms for burst-mode operations
CN104283906B (en) * 2013-07-02 2018-06-19 华为技术有限公司 Distributed memory system, clustered node and its section management method
WO2015015727A1 (en) * 2013-07-30 2015-02-05 日本電気株式会社 Storage device, data access method, and program recording medium
US10263770B2 (en) 2013-11-06 2019-04-16 Pure Storage, Inc. Data protection in a storage system using external secrets
US10365858B2 (en) 2013-11-06 2019-07-30 Pure Storage, Inc. Thin provisioning in a storage device
CN103593236B (en) 2013-11-14 2017-02-22 华为技术有限公司 Computer equipment, method and device for scheduling service process
US20150142733A1 (en) * 2013-11-18 2015-05-21 Ori Software Development Ltd. System and method for efficient management of big data in a database using streaming tables
US10592475B1 (en) 2013-12-27 2020-03-17 Amazon Technologies, Inc. Consistent data storage in distributed computing systems
CN104751235A (en) * 2013-12-27 2015-07-01 伊姆西公司 Method and device for data mining
CN104750599A (en) * 2013-12-30 2015-07-01 鸿富锦精密工业(武汉)有限公司 Use reservation system and use reservation method
US9633074B1 (en) * 2014-01-03 2017-04-25 Amazon Technologies, Inc. Querying data set tables in a non-transactional database
US9208086B1 (en) 2014-01-09 2015-12-08 Pure Storage, Inc. Using frequency domain to prioritize storage of metadata in a cache
US10055440B2 (en) * 2014-02-24 2018-08-21 Sap Se Database table re-partitioning using trigger-based capture and replay
US10108649B2 (en) 2014-02-25 2018-10-23 Internatonal Business Machines Corporation Early exit from table scans of loosely ordered and/or grouped relations using nearly ordered maps
US10250673B1 (en) 2014-03-14 2019-04-02 Amazon Technologies, Inc. Storage workload management using redirected messages
US10656864B2 (en) 2014-03-20 2020-05-19 Pure Storage, Inc. Data replication within a flash storage array
US9971801B2 (en) * 2014-03-26 2018-05-15 Interject Data Systems, Inc. Grid cell data requests
US9274710B1 (en) 2014-03-31 2016-03-01 Amazon Technologies, Inc. Offset-based congestion control in storage systems
WO2015157340A1 (en) * 2014-04-07 2015-10-15 Aine Jr Harry Eugene An ultra-low latency platform as a service system for large scale media data and workflows
US9330104B2 (en) * 2014-04-30 2016-05-03 International Business Machines Corporation Indexing and searching heterogenous data entities
US10409920B1 (en) * 2014-05-23 2019-09-10 EMC IP Holding Company LLC Data services for tiered memory
US9779268B1 (en) 2014-06-03 2017-10-03 Pure Storage, Inc. Utilizing a non-repeating identifier to encrypt data
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9218407B1 (en) 2014-06-25 2015-12-22 Pure Storage, Inc. Replication and intermediate read-write state for mediums
US10496556B1 (en) 2014-06-25 2019-12-03 Pure Storage, Inc. Dynamic data protection within a flash storage system
US10296469B1 (en) 2014-07-24 2019-05-21 Pure Storage, Inc. Access control in a flash storage system
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9864761B1 (en) 2014-08-08 2018-01-09 Pure Storage, Inc. Read optimization operations in a storage system
CN104199881B (en) * 2014-08-21 2018-07-06 广州华多网络科技有限公司 Data-base cluster, data query method, method of data synchronization and device
US10430079B2 (en) 2014-09-08 2019-10-01 Pure Storage, Inc. Adjusting storage capacity in a computing system
US10164841B2 (en) 2014-10-02 2018-12-25 Pure Storage, Inc. Cloud assist for storage systems
US10430282B2 (en) 2014-10-07 2019-10-01 Pure Storage, Inc. Optimizing replication by distinguishing user and system write activity
US9489132B2 (en) 2014-10-07 2016-11-08 Pure Storage, Inc. Utilizing unmapped and unknown states in a replicated storage system
CN104407987B (en) * 2014-10-30 2018-10-23 曙光信息产业股份有限公司 A kind of classification storage method
US20160147837A1 (en) * 2014-11-21 2016-05-26 Red Hat, Inc. Multisource semantic partitioning
US9727485B1 (en) 2014-11-24 2017-08-08 Pure Storage, Inc. Metadata rewrite and flatten optimization
US9965360B2 (en) 2014-11-25 2018-05-08 Sap Se RowID-based data synchronization for asynchronous table replication
US9773007B1 (en) 2014-12-01 2017-09-26 Pure Storage, Inc. Performance improvements in a storage system
US9552248B2 (en) 2014-12-11 2017-01-24 Pure Storage, Inc. Cloud alert to replica
US9588842B1 (en) 2014-12-11 2017-03-07 Pure Storage, Inc. Drive rebuild
US9864769B2 (en) 2014-12-12 2018-01-09 Pure Storage, Inc. Storing data utilizing repeating pattern detection
US10545987B2 (en) 2014-12-19 2020-01-28 Pure Storage, Inc. Replication to the cloud
US10296354B1 (en) 2015-01-21 2019-05-21 Pure Storage, Inc. Optimized boot operations within a flash storage array
US10599621B1 (en) 2015-02-02 2020-03-24 Amazon Technologies, Inc. Distributed processing framework file system fast on-demand storage listing
US9710165B1 (en) 2015-02-18 2017-07-18 Pure Storage, Inc. Identifying volume candidates for space reclamation
US9843536B2 (en) * 2015-02-27 2017-12-12 Netapp, Inc. Techniques for dynamically allocating resources in a storage cluster system
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9860317B1 (en) 2015-04-30 2018-01-02 Amazon Technologies, Inc. Throughput throttling for distributed file storage services with varying connection characteristics
US10410155B2 (en) 2015-05-01 2019-09-10 Microsoft Technology Licensing, Llc Automatic demand-driven resource scaling for relational database-as-a-service
US10310740B2 (en) 2015-06-23 2019-06-04 Pure Storage, Inc. Aligning memory access operations to a geometry of a storage device
US9547441B1 (en) 2015-06-23 2017-01-17 Pure Storage, Inc. Exposing a geometry of a storage device
US20160378819A1 (en) * 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Transactional Database Layer Above a Distributed Key/Value Store
CN106445677A (en) * 2015-08-06 2017-02-22 阿里巴巴集团控股有限公司 Load balancing method and device
US10721328B2 (en) * 2015-08-26 2020-07-21 International Business Machines Corporation Offering application program interfaces (APIs) for sale in cloud marketplace
US10146814B1 (en) * 2015-09-18 2018-12-04 Amazon Technologies, Inc. Recommending provisioned throughput capacity for generating a secondary index for an online table
US9898614B1 (en) * 2015-09-18 2018-02-20 Amazon Technologies, Inc. Implicit prioritization to rate-limit secondary index creation for an online table
US10747739B1 (en) * 2015-09-18 2020-08-18 Amazon Technologies, Inc. Implicit checkpoint for generating a secondary index of a table
US10013449B1 (en) 2015-09-18 2018-07-03 Amazon Technologies, Inc. Validating and non-validating secondary indexes for a table in a non-relational data store
US10666574B2 (en) * 2015-09-28 2020-05-26 Amazon Technologies, Inc. Distributed stream-based database triggers
CN105491101B (en) * 2015-11-17 2018-09-21 华为技术有限公司 The treating method and apparatus of data
CN105867942B (en) * 2016-04-19 2019-08-27 深圳Tcl数字技术有限公司 Key assignments extended method and system
US10452297B1 (en) 2016-05-02 2019-10-22 Pure Storage, Inc. Generating and optimizing summary index levels in a deduplication storage system
US10404798B2 (en) 2016-05-16 2019-09-03 Carbonite, Inc. Systems and methods for third-party policy-based file distribution in an aggregation of cloud storage services
US10264072B2 (en) * 2016-05-16 2019-04-16 Carbonite, Inc. Systems and methods for processing-based file distribution in an aggregation of cloud storage services
US10116629B2 (en) 2016-05-16 2018-10-30 Carbonite, Inc. Systems and methods for obfuscation of data via an aggregation of cloud storage services
US10356158B2 (en) 2016-05-16 2019-07-16 Carbonite, Inc. Systems and methods for aggregation of cloud storage
US20200028894A1 (en) 2016-05-26 2020-01-23 Nutanix, Inc. Rebalancing storage i/o workloads by storage controller selection and redirection
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
CN109791594B (en) * 2016-08-12 2020-10-27 Altr解决方案公司 Method and readable medium for performing write and store operations on a relational database
US10936559B1 (en) * 2016-09-28 2021-03-02 Amazon Technologies, Inc. Strongly-consistent secondary index for a distributed data set
US10191662B2 (en) 2016-10-04 2019-01-29 Pure Storage, Inc. Dynamic allocation of segments in a flash storage system
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10162523B2 (en) 2016-10-04 2018-12-25 Pure Storage, Inc. Migrating data between volumes using virtual copy operation
US10545861B2 (en) 2016-10-04 2020-01-28 Pure Storage, Inc. Distributed integrated high-speed solid-state non-volatile random-access memory
US10185505B1 (en) 2016-10-28 2019-01-22 Pure Storage, Inc. Reading a portion of data to replicate a volume based on sequence numbers
US10359942B2 (en) 2016-10-31 2019-07-23 Pure Storage, Inc. Deduplication aware scalable content placement
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10452290B2 (en) 2016-12-19 2019-10-22 Pure Storage, Inc. Block consolidation in a direct-mapped flash storage system
US10719495B2 (en) 2017-02-09 2020-07-21 Micron Technology, Inc. Stream selection for multi-stream storage devices
US10725988B2 (en) * 2017-02-09 2020-07-28 Micron Technology, Inc. KVS tree
US10706105B2 (en) 2017-02-09 2020-07-07 Micron Technology, Inc. Merge tree garbage metrics
US10706106B2 (en) 2017-02-09 2020-07-07 Micron Technology, Inc. Merge tree modifications for maintenance operations
US11030169B1 (en) * 2017-03-07 2021-06-08 Amazon Technologies, Inc. Data re-sharding
US10691657B2 (en) 2017-03-21 2020-06-23 Intermetro Communications, Inc. System and method for managing a database having a size limit
JP6707797B2 (en) * 2017-03-29 2020-06-10 株式会社日立製作所 Database management system and database management method
KR102069691B1 (en) * 2017-04-19 2020-01-23 한국전자통신연구원 Apparatus and method for managing metadata
US11030155B2 (en) 2017-04-26 2021-06-08 Samsung Electronics Co., Ltd. Key value file system
US11030177B1 (en) * 2017-05-04 2021-06-08 Amazon Technologies, Inc. Selectively scanning portions of a multidimensional index for processing queries
CN107423358B (en) * 2017-06-13 2020-08-07 阿里巴巴集团控股有限公司 Data storage and calling method and device
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10977262B2 (en) * 2017-08-02 2021-04-13 Sap Se Data export job engine
US10817203B1 (en) 2017-08-29 2020-10-27 Amazon Technologies, Inc. Client-configurable data tiering service
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10776202B1 (en) 2017-09-22 2020-09-15 Pure Storage, Inc. Drive, blade, or data shard decommission via RAID geometry shrinkage
US10789211B1 (en) 2017-10-04 2020-09-29 Pure Storage, Inc. Feature-based deduplication
US10977221B2 (en) * 2017-10-20 2021-04-13 Hewlett Packard Enterprise Development Lp Encoding of data formatted in human-readable text according to schema into binary
US10740315B2 (en) 2017-10-26 2020-08-11 Sap Se Transitioning between system sharing types in multi-tenancy database systems
US10452646B2 (en) 2017-10-26 2019-10-22 Sap Se Deploying changes in a multi-tenancy database system
US10733168B2 (en) 2017-10-26 2020-08-04 Sap Se Deploying changes to key patterns in multi-tenancy database systems
US10740318B2 (en) * 2017-10-26 2020-08-11 Sap Se Key pattern management in multi-tenancy database systems
US10621167B2 (en) 2017-10-26 2020-04-14 Sap Se Data separation and write redirection in multi-tenancy database systems
US10657276B2 (en) 2017-10-26 2020-05-19 Sap Se System sharing types in multi-tenancy database systems
US10713277B2 (en) 2017-10-26 2020-07-14 Sap Se Patching content across shared and tenant containers in multi-tenancy database systems
US10482080B2 (en) 2017-10-26 2019-11-19 Sap Se Exchanging shared containers and adapting tenants in multi-tenancy database systems
CN107679238B (en) * 2017-10-27 2020-10-09 杭州迪普科技股份有限公司 Method and device for creating new object
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
WO2019089057A1 (en) * 2017-11-06 2019-05-09 Vast Data Ltd. Scalable storage system
US20190141128A1 (en) * 2017-11-06 2019-05-09 Vast Data Ltd. Scalable storage system
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10929396B1 (en) * 2017-11-20 2021-02-23 Amazon Technologies, Inc. Multi-type attribute index for a document database
US10893000B2 (en) 2017-11-21 2021-01-12 International Business Machines Corporation Diagonal scaling of resource allocations and application instances in a distributed computing environment
US10812407B2 (en) * 2017-11-21 2020-10-20 International Business Machines Corporation Automatic diagonal scaling of workloads in a distributed computing environment
US10733015B2 (en) 2017-11-21 2020-08-04 International Business Machines Corporation Prioritizing applications for diagonal scaling in a distributed computing environment
US10887250B2 (en) 2017-11-21 2021-01-05 International Business Machines Corporation Reducing resource allocations and application instances in diagonal scaling in a distributed computing environment
US10721179B2 (en) 2017-11-21 2020-07-21 International Business Machines Corporation Adaptive resource allocation operations based on historical data in a distributed computing environment
US10635501B2 (en) 2017-11-21 2020-04-28 International Business Machines Corporation Adaptive scaling of workloads in a distributed computing environment
CN110019212B (en) * 2017-11-29 2021-06-18 杭州海康威视数字技术股份有限公司 Data processing method and device and database server
US10579597B1 (en) 2018-01-09 2020-03-03 Amazon Technologies, Inc. Data-tiering service with multiple cold tier quality of service levels
US10970395B1 (en) 2018-01-18 2021-04-06 Pure Storage, Inc Security threat monitoring for a storage system
US11010233B1 (en) 2018-01-18 2021-05-18 Pure Storage, Inc Hardware-based system monitoring
US10754832B2 (en) * 2018-01-26 2020-08-25 Nicira, Inc. Efficient physical key-value scheme for persisting virtual database data
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US10855767B1 (en) * 2018-03-05 2020-12-01 Amazon Technologies, Inc. Distribution of batch data to sharded readers
US11003693B2 (en) * 2018-04-05 2021-05-11 Sap Se Grouping tables with existing tables in a distributed database
US11010363B2 (en) 2018-04-05 2021-05-18 Sap Se Complementing existing tables while grouping tables in a distributed database
US10678433B1 (en) 2018-04-27 2020-06-09 Pure Storage, Inc. Resource-preserving system upgrade
US10970270B2 (en) 2018-05-07 2021-04-06 Microsoft Technology Licensing, Llc Unified data organization for multi-model distributed databases
CN108769137A (en) * 2018-05-08 2018-11-06 北京初志科技有限公司 Distributed structure/architecture data storing and reading method and device based on multigroup framework
CN110515536B (en) * 2018-05-22 2020-10-27 杭州海康威视数字技术股份有限公司 Data storage system
US10678436B1 (en) 2018-05-29 2020-06-09 Pure Storage, Inc. Using a PID controller to opportunistically compress more data during garbage collection
US10915551B2 (en) 2018-06-04 2021-02-09 Sap Se Change management for shared objects in multi-tenancy systems
US10776046B1 (en) 2018-06-08 2020-09-15 Pure Storage, Inc. Optimized non-uniform memory access
CN109145052A (en) * 2018-07-12 2019-01-04 北京炎黄盈动科技发展有限责任公司 Data partition storage method, equipment, system, storage medium and electronic equipment
KR102177489B1 (en) * 2018-08-17 2020-11-11 주식회사 마크베이스 Method and device of searching index for sensor tag data
CN109407975B (en) * 2018-09-19 2020-08-25 华为技术有限公司 Data writing method, computing node and distributed storage system
US10915546B2 (en) 2018-10-10 2021-02-09 Micron Technology, Inc. Counter-based compaction of key-value store tree data block
US10846216B2 (en) 2018-10-25 2020-11-24 Pure Storage, Inc. Scalable garbage collection
US10922142B2 (en) 2018-10-31 2021-02-16 Nutanix, Inc. Multi-stage IOPS allocation
CN109298949A (en) * 2018-12-04 2019-02-01 国网辽宁省电力有限公司大连供电公司 A kind of resource scheduling system of distributed file system
US10852978B2 (en) 2018-12-14 2020-12-01 Micron Technology, Inc. Key-value store using journaling with selective data storage format
US11048755B2 (en) 2018-12-14 2021-06-29 Micron Technology, Inc. Key-value store tree with selective use of key portion
US10936661B2 (en) 2018-12-26 2021-03-02 Micron Technology, Inc. Data tree with order-based node traversal
CN110008173A (en) * 2019-03-07 2019-07-12 深圳市买买提信息科技有限公司 A kind of method and device of data storage
US10990480B1 (en) 2019-04-05 2021-04-27 Pure Storage, Inc. Performance of RAID rebuild operations by a storage group controller of a storage system
US10997206B2 (en) * 2019-04-08 2021-05-04 Sap Se Subscription-based change data capture mechanism using database triggers
US10929046B2 (en) 2019-07-09 2021-02-23 Pure Storage, Inc. Identifying and relocating hot data to a cache determined with read velocity based on a threshold stored at a storage device
CN110753056A (en) * 2019-10-25 2020-02-04 高秀芬 Non-interactive encryption access control method

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4905138A (en) * 1985-10-17 1990-02-27 Westinghouse Electric Corp. Meta-interpreter
US5555409A (en) * 1990-12-04 1996-09-10 Applied Technical Sysytem, Inc. Data management systems and methods including creation of composite views of data
US5627979A (en) * 1994-07-18 1997-05-06 International Business Machines Corporation System and method for providing a graphical user interface for mapping and accessing objects in data stores
US6061515A (en) * 1994-07-18 2000-05-09 International Business Machines Corporation System and method for providing a high level language for mapping and accessing objects in data stores
US5819251A (en) * 1996-02-06 1998-10-06 Oracle Corporation System and apparatus for storage retrieval and analysis of relational and non-relational data
CA2295479C (en) * 1997-07-15 2003-12-30 Pocket Soft, Inc. System for finding differences between two computer files and updating the computer files
US6442560B1 (en) * 1999-06-22 2002-08-27 Microsoft Corporation Record for multidimensional databases
JP2001331332A (en) * 2000-05-22 2001-11-30 Nippon Telegr & Teleph Corp <Ntt> Method and device for reserving resource of application program, resource quantity estimation device, and computer system
US6721749B1 (en) * 2000-07-06 2004-04-13 Microsoft Corporation Populating a data warehouse using a pipeline approach
JP4292693B2 (en) * 2000-07-07 2009-07-08 株式会社日立製作所 Computer resource dividing apparatus and resource dividing method
EP1312007A4 (en) * 2000-07-17 2008-01-02 Galactic Computing Corp Bvi Ib Method and system for providing dynamic hosted service management
US20020126659A1 (en) * 2001-03-07 2002-09-12 Ling-Zhong Liu Unified software architecture for switch connection management
JP2002342269A (en) * 2001-05-14 2002-11-29 Hitachi Ltd Method for optimizing number of resource management table, system conducting the same and processing program
US6963913B2 (en) * 2001-06-11 2005-11-08 Bluefire Security Technologies, Inc. Packet filtering system and methods
US7117225B2 (en) * 2001-08-13 2006-10-03 Jasmin Cosic Universal data management interface
JP3879471B2 (en) * 2001-10-10 2007-02-14 株式会社日立製作所 Computer resource allocation method
US7185317B2 (en) * 2002-02-14 2007-02-27 Hubbard & Wells Logical data modeling and integrated application framework
CA2425297A1 (en) * 2002-04-15 2003-10-15 Exchange Synergism Ltd. Method, system and apparatus for measuring and analyzing business volume
US6920460B1 (en) * 2002-05-29 2005-07-19 Oracle International Corporation Systems and methods for managing partitioned indexes that are created and maintained by user-defined indexing schemes
US7480912B2 (en) 2003-05-29 2009-01-20 International Business Machines Corporation Method for policy-based, autonomically allocated storage
JP2004362449A (en) * 2003-06-06 2004-12-24 Mitsubishi Electric Corp Service providing device, service coordinator device, service providing method, service coordinating method and program, as well as computer readable recording medium having the program recorded thereon
US7289990B2 (en) * 2003-06-26 2007-10-30 International Business Machines Corporation Method and apparatus for reducing index sizes and increasing performance of non-relational databases
US7516115B2 (en) * 2003-08-20 2009-04-07 International Business Machines Corporation Method and system for optimizing performance in non-relational databases
AT317145T (en) * 2003-09-09 2006-02-15 Sap Ag Method and computer system for reducing the period of performance of a computer program for calculating a quantity of material required
US7457806B2 (en) * 2003-12-18 2008-11-25 International Business Machines Corporation Accessing a non-relational store with a container-managed persistence bean via a web service function
US20050192962A1 (en) * 2004-02-26 2005-09-01 Patricia Furrer Apparatus, system, method for enabling web-applications to access enterprise managed data
US7779039B2 (en) 2004-04-02 2010-08-17 Salesforce.Com, Inc. Custom entities and fields in a multi-tenant database system
KR100611578B1 (en) * 2004-11-23 2006-08-10 한국전자통신연구원 A resource allocation device for providing the differentiated service, and a method thereof
JP2006293981A (en) * 2005-03-18 2006-10-26 Hitachi Ltd Database storing method, and database storing system
US8325905B2 (en) * 2005-07-29 2012-12-04 Verizon Patent And Licensing Inc. Routing calls in a network
JP5050854B2 (en) * 2005-09-20 2012-10-17 日本電気株式会社 Resource amount calculation system, method and program
JP2007086951A (en) * 2005-09-21 2007-04-05 Hitachi Software Eng Co Ltd File division processing method and file division program
US8554758B1 (en) * 2005-12-29 2013-10-08 Amazon Technologies, Inc. Method and apparatus for monitoring and maintaining health in a searchable data service
US7716180B2 (en) 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
US7778972B1 (en) * 2005-12-29 2010-08-17 Amazon Technologies, Inc. Dynamic object replication within a distributed storage system
US7801912B2 (en) 2005-12-29 2010-09-21 Amazon Technologies, Inc. Method and apparatus for a searchable data service
US8589249B2 (en) * 2006-02-28 2013-11-19 Esnipe, Inc. Dynamic load adjustment for online auction bidding
US7725495B2 (en) 2006-04-11 2010-05-25 Microsoft Corporation Implementing referential integrity in a database hosting service
JP2006302307A (en) * 2006-06-08 2006-11-02 Hitachi Ltd Storage device management method
US20080275790A1 (en) * 2007-05-03 2008-11-06 Tom Campbell Bid groups for online auctions
US20080311946A1 (en) * 2007-06-13 2008-12-18 Motorola, Inc. System and method for dynamically providing control plane capacity
US7779045B2 (en) * 2007-09-27 2010-08-17 Microsoft Corporation Lazy updates to indexes in a database
US8505073B2 (en) 2007-12-31 2013-08-06 United States Cellular Corporation Service utilization control manager
JP5203733B2 (en) * 2008-02-01 2013-06-05 株式会社東芝 Coordinator server, data allocation method and program
US20090198654A1 (en) 2008-02-05 2009-08-06 Microsoft Corporation Detecting relevant content blocks in text
US20090282414A1 (en) * 2008-05-07 2009-11-12 Branda Steven J Prioritized Resource Access Management
US9996572B2 (en) * 2008-10-24 2018-06-12 Microsoft Technology Licensing, Llc Partition management in a partitioned, scalable, and available structured storage
JP2010205209A (en) * 2009-03-06 2010-09-16 Hitachi Ltd Management computer, computer system, and physical resource allocating method
US20100250746A1 (en) * 2009-03-30 2010-09-30 Hitachi, Ltd. Information technology source migration
US8725487B2 (en) 2009-08-07 2014-05-13 Sas Institute, Inc. Techniques to automatically generate simulated information
US8055615B2 (en) 2009-08-25 2011-11-08 Yahoo! Inc. Method for efficient storage node replacement
US8074107B2 (en) * 2009-10-26 2011-12-06 Amazon Technologies, Inc. Failover and recovery for replicated data instances
CN102053975A (en) * 2009-10-30 2011-05-11 国际商业机器公司 Database system and cross-database query optimization method
US9824108B2 (en) * 2010-04-19 2017-11-21 Salesforce.Com, Inc. Methods and systems for performing transparent object migration across storage tiers
US9886483B1 (en) * 2010-04-29 2018-02-06 Quest Software Inc. System for providing structured query language access to non-relational data stores
US10452629B2 (en) * 2010-07-13 2019-10-22 International Business Machines Corporation Automatic maintenance of a set of indexes with different currency characteristics in a database management system
US8694400B1 (en) * 2010-09-14 2014-04-08 Amazon Technologies, Inc. Managing operational throughput for shared resources
US20130036034A1 (en) * 2011-06-09 2013-02-07 Social Financial, Inc. Method and System for Distributed Network Accounting
US8595267B2 (en) 2011-06-27 2013-11-26 Amazon Technologies, Inc. System and method for implementing a scalable data storage service
US8589450B2 (en) * 2011-12-28 2013-11-19 Business Objects Software Limited Mapping non-relational database objects into a relational database model

Also Published As

Publication number Publication date
JP2019220195A (en) 2019-12-26
CA3053376C (en) 2021-04-06
CN104067216B (en) 2017-06-20
CA3053376A1 (en) 2013-01-03
US9432459B2 (en) 2016-08-30
JP2016027476A (en) 2016-02-18
US10776395B2 (en) 2020-09-15
US9754009B2 (en) 2017-09-05
US8595267B2 (en) 2013-11-26
US20170364574A1 (en) 2017-12-21
US20150112999A1 (en) 2015-04-23
CA2839121A1 (en) 2013-01-03
US20140082028A1 (en) 2014-03-20
JP6560308B2 (en) 2019-08-14
CN104067216A (en) 2014-09-24
US20160378845A1 (en) 2016-12-29
BR112013033693A2 (en) 2017-01-24
EP2724268A4 (en) 2015-10-28
EP2724268A2 (en) 2014-04-30
JP2017199439A (en) 2017-11-02
JP2014525082A (en) 2014-09-25
US20120330954A1 (en) 2012-12-27
CA2839121C (en) 2019-10-22
WO2013003443A3 (en) 2014-05-08
CN107247778A (en) 2017-10-13
EP2724268B1 (en) 2019-01-09
US20210103604A1 (en) 2021-04-08
US8918435B2 (en) 2014-12-23
EP3495944A1 (en) 2019-06-12
WO2013003443A2 (en) 2013-01-03

Similar Documents

Publication Publication Date Title
JP6560308B2 (en) System and method for implementing a data storage service
US10387402B2 (en) System and method for conditionally updating an item with attribute granularity
US8819027B1 (en) System and method for partitioning and indexing table data using a composite primary key
US9372911B2 (en) System and method for performing replica copying using a physical copy mechanism
US20200341657A1 (en) System and method for performing live partitioning in a data store
US9460185B2 (en) Storage device selection for database partition replicas
US9489443B1 (en) Scheduling of splits and moves of database partitions
US10712964B2 (en) Pre-forking replicas for efficient scaling of a distributed data storage system
US20210200446A1 (en) System and method for providing a committed throughput level in a data store
Dory Study and Comparison of Elastic Cloud Databases: Myth or Reality?
Zhao et al. On the Spectrum of Web Scale Data Management

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150127

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150427

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: 20150721

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150820

R150 Certificate of patent or registration of utility model

Ref document number: 5798248

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250