JP6584388B2 - Prioritizing I / O to database workload - Google Patents

Prioritizing I / O to database workload Download PDF

Info

Publication number
JP6584388B2
JP6584388B2 JP2016514144A JP2016514144A JP6584388B2 JP 6584388 B2 JP6584388 B2 JP 6584388B2 JP 2016514144 A JP2016514144 A JP 2016514144A JP 2016514144 A JP2016514144 A JP 2016514144A JP 6584388 B2 JP6584388 B2 JP 6584388B2
Authority
JP
Japan
Prior art keywords
capacity
token
bucket
request
token bucket
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
JP2016514144A
Other languages
Japanese (ja)
Other versions
JP2016528578A (en
Inventor
クレイグ ヤナーチェク デイヴィッド
クレイグ ヤナーチェク デイヴィッド
パトリック スウィフト ビョーン
パトリック スウィフト ビョーン
シャオ ウェイ
シャオ ウェイ
ムニスワミー−レディ キラン−クマール
ムニスワミー−レディ キラン−クマール
マスカレニャス フィリペ ミゲル
マスカレニャス フィリペ ミゲル
ルー イージュン
ルー イージュン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
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
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2016528578A publication Critical patent/JP2016528578A/en
Application granted granted Critical
Publication of JP6584388B2 publication Critical patent/JP6584388B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/24Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)

Description

関連出願の相互参照
本出願は、2013年5月17日に出願された米国特許出願第13,897,232号の利益を主張し、その開示は参照によりその全体が本明細書に組み込まれる。
This application claims the benefit of US Patent Application No. 13,897,232, filed May 17, 2013, the disclosure of which is incorporated herein by reference in its entirety.

データベース管理システム(「DBMS」)は、DBMSをデータセンターのサーバーでホストし、DBMSをサービスとして法人、大学、政府機関、および他の種類の顧客等の種々の事業体に提供する、第三者プロバイダにより運営され得る。DBMSをホストし、そのサービスを種々の事業体に提供するために、プロバイダは典型的には、かなりのリソースをハードウェア、ソフトウェア、およびインフラストラクチャ内に維持する。加えて、プロバイダは、電力、保守経費、および技術者の給料等のDBMSの運営に関連する種々の継続的な諸経費を課され得る。したがって、種々の事業体に応答性に優れるサービスを提供するために、プロバイダは、そのデータセンターに設置されたハードウェアおよび他のリソースの容量および利用度を最大化することを試み得る。   A database management system ("DBMS") is a third party that hosts the DBMS on a data center server and provides the DBMS as a service to various entities such as corporations, universities, government agencies, and other types of customers. Can be operated by a provider. In order to host a DBMS and provide its services to various entities, providers typically maintain significant resources in hardware, software, and infrastructure. In addition, the provider may be charged various ongoing overheads related to the operation of the DBMS, such as power, maintenance costs, and technician salaries. Thus, in order to provide responsive services to various business entities, providers may attempt to maximize the capacity and utilization of hardware and other resources installed in their data centers.

本明細書中に提供される図面は、例となる実施形態を例示するためのもので、本開示の範囲を限定するようには意図されていない。   The drawings provided herein are for the purpose of illustrating example embodiments and are not intended to limit the scope of the disclosure.

ウェブサービスを通してエンドユーザに公開され、トークン割り当ておよび消費メカニズムの使用により容量消費を制限するデータベース管理システムを示すブロック図である。1 is a block diagram illustrating a database management system that is exposed to end users through a web service and limits capacity consumption through the use of token allocation and consumption mechanisms. FIG. トークン割り当ておよび消費メカニズムを用いたプロビジョニングされた容量の実施を示すフローチャートである。FIG. 6 is a flow chart illustrating provisioned capacity implementation using token allocation and consumption mechanisms. トークンのトークンバケットへの割り当ておよびトークンバケットからの複数の要求種類のトークン消費を示す図である。It is a figure which shows allocation to the token bucket of a token, and token consumption of several request types from a token bucket. 要求の種類に従って分類される複数のトークンバケットへのトークンの割り当て、および対応する要求種類の処理に基づくバケットからのトークンの引き出しを示す図である。FIG. 4 is a diagram illustrating token allocation to a plurality of token buckets classified according to request type and withdrawal of a token from the bucket based on processing of a corresponding request type. 要求種類の複数の要求クラスへの割り振り、ならびにクラスの、いずれのトークンバケットが承諾を決定するかおよびいずれのバケットからトークンが引き出されるかを制御し得る承諾ポリシーとの関連付けを示す図である。FIG. 6 shows the allocation of request types to multiple request classes and the association of the class with an acceptance policy that can control which token buckets determine acceptance and from which bucket tokens are drawn. 要求の分類に基づいて承諾ポリシーを取得かつ適用するための実施形態を示すフローチャートである。6 is a flowchart illustrating an embodiment for obtaining and applying an acceptance policy based on a classification of requests. 要求種類の複数の要求クラスへの割り振り、ならびにクラスの、要求の承諾および階層的配置のトークンバケットからのトークンの引き出しを調整する承諾ポリシーとの関連付けを示す図である。FIG. 5 shows the allocation of request types to multiple request classes and the association of the class with an acceptance policy that coordinates request acceptance and token withdrawal from a hierarchically arranged token bucket. 階層的配置のトークンバケット中の親バケットからのトークンの差し引きを示す図である。It is a figure which shows the subtraction of the token from the parent bucket in the token bucket of hierarchical arrangement | positioning. 階層的配置のトークンバケット中の子バケットからのトークンバケットの差し引きを示す図である。It is a figure which shows the subtraction of the token bucket from the child bucket in the token bucket of hierarchical arrangement | positioning. 親バケットから、その親に利用可能であるよりも多いトークンの差し引きを示す図である。FIG. 6 illustrates a deduction of more tokens from a parent bucket than are available to that parent. 子バケットから、子バケットまたは親バケットのいずれかに利用可能であるよりも多いトークンの差し引きを示す図である。FIG. 6 illustrates a deduction of more tokens from a child bucket than is available to either the child bucket or the parent bucket. 同等の優先度の2つ以上のクラスが親バケットを共有する階層的配置のトークンバケットを示す図である。It is a figure which shows the token bucket of the hierarchical arrangement | positioning in which two or more classes of equal priority share a parent bucket. 要求クラス、トークンバケット、および承諾ポリシーに関する顧客提供情報を取得するためのユーザインターフェースの図示実施例を示す図である。FIG. 6 illustrates an example embodiment of a user interface for obtaining customer provided information regarding request classes, token buckets, and acceptance policies. 階層的トークンバケットモデルを利用する手法に適合された、要求クラス、トークンバケット、および承諾ポリシーに関する顧客提供情報を取得するためのユーザインターフェースの図示実施例を示す図である。FIG. 4 illustrates an example embodiment of a user interface for obtaining customer-provided information regarding request classes, token buckets, and acceptance policies, adapted to an approach that utilizes a hierarchical token bucket model. 新たなテーブルの顧客の定義と連携して容量割り当ておよび承諾ポリシー情報を受信し、ならびにその情報を用いてトークンバケットを作成し、承諾ポリシーを区分毎に適用するためのステップを示すフローチャートである。FIG. 10 is a flowchart showing steps for receiving capacity allocation and consent policy information in conjunction with a customer definition in a new table, creating a token bucket using the information, and applying a consent policy for each category. 本開示の態様が実施され得るコンピューティング環境の実施形態を示すブロック図である。FIG. 11 is a block diagram illustrating an embodiment of a computing environment in which aspects of the present disclosure may be implemented.

上述のように、プロバイダは、DBMSをデータセンターでホストし、DBMSへのアクセスをサービスとして種々の事業体に対して提供し得る。このことに関して、DBMSは、ウェブサービス、ウェブアプリケーション、遠隔手続き呼び出し等を通して、公開され得る。これらのメカニズムおよび他は、本明細書ではサービスと呼ばれ得る。いくつかの実施形態では、DBMSは、サービスのうちの1つ以上を公開する統合フロントエンドを、事業体のエンドユーザまたは顧客に提供し得る。サービスを通して、エンドユーザは、サービスに対するアプリケーションプログラミングインターフェース(「API」)呼び出しを利用して、DBMSで遂行される種々の動作および問合せを含む要求を行い得る。要求は、例えば、顧客に代わってのAPIの呼び出し、ならびに顧客に代わってのDBMSでの動作の呼び出しを含み得る。   As described above, a provider can host a DBMS in a data center and provide access to the DBMS as a service to various entities. In this regard, the DBMS can be published through web services, web applications, remote procedure calls, and the like. These mechanisms and others may be referred to herein as services. In some embodiments, a DBMS may provide an integrated front end that exposes one or more of the services to an end user or customer of an entity. Through the service, end users may make requests that include various operations and queries performed by the DBMS using application programming interface ("API") calls to the service. The request may include, for example, an API call on behalf of the customer, as well as an action call on the DBMS on behalf of the customer.

プロバイダはまた、この容量の使用の見返りに顧客から報酬を要求し得る。しかし、この努力の収益性は、そのために消費された容量に比例して金額を支払う顧客に依存し得る。容量消費の制限が顧客に課され、スロットリング、キューイング等の種々の技法により実施され得る。使用が顧客にプロビジョニングされた量を超過すると、顧客に代わってのサービスに対する要求は、拒絶されるまたは一時停止される場合がある。このことは、種々の状況で顧客にとって不都合であり得る。例えば、そのサービスは、電子商取引ウェブサイトまたは類似のアプリケーションの構成要素となり得、その場合当該サービスに対する要求が拒絶された場合には機能しなくなる場合がある。しかし、サービスに対する全ての要求が、顧客にとって必ずしも同等に重要であるとは限らない場合がある。電子商取引でのショッピングカートの内容の表示または顧客の注文の処理等の種々の要求は、重要度は高い場合があるが、その他についてはそうでない場合がある。例えば、比較的重要度の低いある特定の種類の要求としては、保守タスク、報告の生成、データ掘り起こし等が含まれ得る。これらのタスクはまた、図らずも比較的大きい容量部分を消費し、そのため顧客のプロビジョニングされた容量を超過したときには、停止、ブラックアウト期間、または遅延を生じやすい。   The provider may also request rewards from customers in return for using this capacity. However, the profitability of this effort may depend on the customer paying an amount in proportion to the capacity consumed for it. Capacity consumption limits are imposed on the customer and can be implemented by various techniques such as throttling, queuing and the like. If usage exceeds the amount provisioned to the customer, the request for service on behalf of the customer may be rejected or suspended. This can be inconvenient for the customer in various situations. For example, the service may be a component of an electronic commerce website or similar application, in which case it may fail if a request for the service is denied. However, not every request for service is necessarily as important to the customer. Various requests, such as displaying the contents of a shopping cart in electronic commerce or processing customer orders, may be high in importance but may not be otherwise. For example, certain types of requests that are relatively insignificant may include maintenance tasks, report generation, data digging, and the like. These tasks also consume a relatively large portion of capacity, which is prone to outages, blackout periods, or delays when the customer's provisioned capacity is exceeded.

エンドユーザは、動作の識別子および1つ以上のパラメータを含めて要求を送信することにより、DBMS上に動作を呼び出し得る。任意の数の動作が識別され得、データの読み出しまたは書き込み等の操作、データでの問合せの遂行、ならびにテーブルの作成および削除等の種々のデータ定義およびスキーマ関連の命令を含み得る。要求と共に含まれ得るパラメータは、テキスト値、列挙値、整数等の、任意の種類であり得る。特定の組み合わせのパラメータは、呼び出されている動作の種類に基づいて異なることになる。   An end user may invoke an action on the DBMS by sending a request including the action identifier and one or more parameters. Any number of operations may be identified and may include various data definition and schema related instructions such as operations such as reading or writing data, performing queries on the data, and creating and deleting tables. The parameters that can be included with the request can be of any type, such as text values, enumerated values, integers, etc. The particular combination of parameters will vary based on the type of action being invoked.

DBMSは、編成された収集データを維持するためのソフトウェアおよびハードウェアシステムである。DBMSでは、データは典型的には、キー値と追加のデータとの間の関連付けにより編成される。関連付けの性質は、収集データ中に存在する実世界の関係に基づき得るか、または任意であり得る。データ定義、問合せ、更新、および管理を含めて、種々の動作がDBMSにより遂行され得る。いくつかのDBMSは、構造化問合せ言語(「SQL」)等の、問合せ言語を用いてデータベースとのやりとりを規定し、他は、put()およびget()等の動作を含むAPIを使用する。データベースとのやりとりはまた、ハイパーテキストマークアップ言語(「HTML」)および拡張マークアップ言語(「XML」)等の、種々のプロトコルまたは標準に基づき得る。DBMSは、データを、ソリッドステートドライブ等の1つ以上の記憶デバイスに記憶するように作用する記憶エンジン等の、種々の構築要素を含み得る。   A DBMS is a software and hardware system for maintaining organized collection data. In a DBMS, data is typically organized by an association between key values and additional data. The nature of the association may be based on real-world relationships that exist in the collected data, or may be arbitrary. Various operations may be performed by the DBMS, including data definition, query, update, and management. Some DBMSs use a query language, such as Structured Query Language ("SQL"), to specify interactions with the database, others use APIs that include operations such as put () and get (). . Interaction with the database may also be based on various protocols or standards, such as Hypertext Markup Language (“HTML”) and Extensible Markup Language (“XML”). A DBMS may include various building elements such as a storage engine that operates to store data in one or more storage devices such as solid state drives.

プロバイダは、任意の数のDBMSをそのデータセンター内に提供し得る。DBMSは、任意の数のコンピューティングノード上で動作し、種々の記憶デバイスに関連付けられ、様々なネットワーク設備および接続形態を用いて接続され得る。しかも、関連型データベース、オブジェクト指向データベース、無構造化問合せ言語(「NoSQL」)データベース等を含めて、種々のDBMSが提供され得る。   A provider may provide any number of DBMSs in its data center. A DBMS runs on any number of computing nodes, can be associated with various storage devices, and can be connected using various network facilities and topologies. Moreover, various DBMSs can be provided, including relational databases, object-oriented databases, unstructured query language (“NoSQL”) databases, and the like.

上述のように、容量消費の制限が、顧客に課され得る。実施形態では、顧客は、設定された容量消費のレベルを有し得る。顧客の容量消費のレベルは、種々の推定および測定技法により制限され得る。要求の処理に関与し得る様々なコンピューティングリソースに起因して、容量消費は決定するのが困難であり得る。しかし、種々の測定可能量が、容量消費の合理的代理として機能し得る。種々の実施形態では、クライアントアプリケーションに送信されまたはそれから受信されるデータ量等の量が、特定の要求を処理することにより消費される容量を推定するために使用され得る。例えば、問合せ要求が、問合せに特定された制約に従う行を推定するために、データベーステーブルを走査し得る。返される行の数は、容量消費の代理であり得る。例えば、単一行のデータが返されれば、問合せは範囲が制限されており、したがって多数行でデータの返された問合せよりもより少ない容量しか消費しなかった可能性が高い。例となる実施形態のより詳細な事項を、図面と関連して以下に説明する。   As mentioned above, capacity consumption limits can be imposed on customers. In an embodiment, a customer may have a set level of capacity consumption. The level of customer capacity consumption can be limited by various estimation and measurement techniques. Due to the various computing resources that can be involved in processing the request, capacity consumption can be difficult to determine. However, various measurable quantities can serve as a reasonable surrogate for capacity consumption. In various embodiments, an amount, such as the amount of data sent to or received from a client application, can be used to estimate the capacity consumed by processing a particular request. For example, a query request may scan a database table to infer rows that conform to the constraints specified in the query. The number of rows returned can be a proxy for capacity consumption. For example, if a single row of data is returned, the query is limited in scope, so it is likely that it consumed less capacity than a query that returned multiple rows of data. More details of example embodiments are described below in connection with the drawings.

上述のように、例示の実施形態では、プロバイダは、1つ以上のDBMSをデータセンター内に提供し、ウェブサービスを介して種々のDBMSへのアクセスを提供する。図1は、プロビジョニングされたウェブサービスおよびデータベースをデータセンター内でホストするための環境を示す。エンドユーザ側のアプリケーション102は、通信ネットワーク103、ゲートウェイ104、およびルータ106によりデータセンター100内の要素に接続され得る。当業者であれば、本ネットワーク構成が本開示の実施形態に組み込まれ得る多数の可能な構成のうちの1つであることを認識するであろう。   As described above, in the exemplary embodiment, the provider provides one or more DBMSs in the data center and provides access to the various DBMSs via web services. FIG. 1 illustrates an environment for hosting provisioned web services and databases in a data center. End-user-side application 102 may be connected to elements in data center 100 by communication network 103, gateway 104, and router 106. Those skilled in the art will recognize that this network configuration is one of many possible configurations that can be incorporated into embodiments of the present disclosure.

ウェブサービス110は、データベース116の動作に関連する諸機能を提供する種々のAPIを提供し得る。いくつかの場合では、APIは、より複雑なデータベースインターフェースまたはプロトコル上に構築される軽量ラッパーとして機能し得る。例えば、図示のAPI111は、リプレゼンテーショナルステートトランスファ(「REST」)原理に従うインターフェースの使用により、データベース116の問合せ機能へのアクセスを提供し得る。エンドユーザ側のアプリケーション102は、そこで、比較的単純なREST意味規則を用いて、API111を呼び出して、データベース116の技術的詳細についての理解を要することなく、キー値データベースを問合せ得る。   Web service 110 may provide various APIs that provide functions related to the operation of database 116. In some cases, the API may function as a lightweight wrapper built on a more complex database interface or protocol. For example, the illustrated API 111 may provide access to the query function of the database 116 through the use of an interface that follows the representational state transfer (“REST”) principle. The end-user application 102 can then call the API 111 using a relatively simple REST semantic rule to query the key value database without requiring an understanding of the technical details of the database 116.

ウェブサービス110およびデータベース116は、総括的にコンピューティングノードと呼び得る、1つ以上のコンピュータ、仮想マシンまたは他の形態のコンピューティングサービス等の、種々のプラットフォーム上で動作し得る。これらのノードの動作、ならびに関連する記憶デバイス、ネットワークインフラストラクチャ等は、種々の経費を伴う。これらの経費には、ハードウェアおよびソフトウェアの取得、保守、電力、要員等に関連するものが含まれる。経費には、一顧客によるリソースの消費が他人のサービスの利用を妨げるときに生じる機会経費等の要因も含み得る。   Web service 110 and database 116 may operate on various platforms, such as one or more computers, virtual machines or other forms of computing services, which may be collectively referred to as computing nodes. The operation of these nodes, as well as the associated storage devices, network infrastructure, etc. involve various expenses. These expenses include those related to hardware and software acquisition, maintenance, power, personnel, etc. Expenses can also include factors such as opportunity expenses that arise when the consumption of resources by one customer prevents others from using the service.

顧客に代わってウェブサービス110およびデータベース116により遂行される動作は、所与のコンピューティングノード上の容量の量の消費と相関し得る。この相関は、ホスト側サービスプロバイダがサービスを提供することにより生じる経費を計算するのを可能にし得る。例えば、所与の顧客がコンピューティングノードの終日に亘る容量の100パーセントを利用するウェブサービスを呼び出す場合、サービスを提供する経費は、24時間の期間に割り当てられるコンピューティングノードに対する取得、保守および動作の経費の合計であり得る。   The operations performed by the web service 110 and the database 116 on behalf of the customer can correlate with the consumption of the amount of capacity on a given computing node. This correlation may allow the hosting service provider to calculate the costs incurred by providing the service. For example, if a given customer calls a web service that utilizes 100 percent of the capacity of the compute node throughout the day, the cost of providing the service is acquired, maintained and operated on the compute node allocated over a 24-hour period. Can be the sum of the expenses.

したがって、容量の消費は、図1に示す実施形態等の種々の手段により制限され得る。承諾ポリシー108は、要求が処理されるべきか否かの決定を含む。大まかにいえば、承諾ポリシー108の目的は、顧客に代わって遂行される要求が、プロビジョニングされた量の容量を超過するのを許可されないことを確実にし得る。例えば、顧客は、コンピューティングノードの容量の25パーセントをプロビジョニングされ得る。承諾ポリシー108は、そこで、その顧客の容量平均消費量を25パーセント以下に制限するように作用する。いくつかの実施形態では、使用のピークが限定期間に当該量を上回るのを許可され得る。   Thus, capacity consumption can be limited by various means such as the embodiment shown in FIG. The acceptance policy 108 includes a determination of whether the request should be processed. Broadly speaking, the purpose of the acceptance policy 108 may ensure that requests fulfilled on behalf of the customer are not allowed to exceed the provisioned amount of capacity. For example, a customer may be provisioned with 25 percent of the capacity of a computing node. The acceptance policy 108 then acts to limit the customer's capacity average consumption to 25 percent or less. In some embodiments, the peak usage can be allowed to exceed that amount for a limited period of time.

顧客の容量が使われ過ぎたとき、承諾ポリシー108は入来要求を拒絶し得る。要求の性質に応じて、このことは、顧客にとって重要な結果を招き得る。例えば、顧客は、要求をデータベース116に向けて、エンドユーザのショッピングカートのコンテンツを取得するショッピングウェブサイトを運営し得る。要求が拒絶されると、販売完了ではなくエラーメッセージの結果となり得る。他方、いくつかの種類の要求は、重大な結果を生じることなく見合わされる。可能性がある例として、保守タスク、レポートの生成等が含まれる。したがって、承諾ポリシー108は、承諾または拒絶の判断をするとき、関連した要求の種類を考慮するように実施され得る。   When the customer's capacity is overused, the consent policy 108 may reject the incoming request. Depending on the nature of the request, this can have important consequences for the customer. For example, a customer may operate a shopping website that directs requests to the database 116 to retrieve the contents of the end user's shopping cart. If the request is rejected, it can result in an error message rather than a sale completion. On the other hand, several types of demands are met without significant consequences. Possible examples include maintenance tasks, report generation, etc. Accordingly, the acceptance policy 108 can be implemented to take into account the type of associated request when making an acceptance or rejection decision.

実施形態は、容量消費を制限するためにトークンバケットモデルを使用し得る。トークンバケットは、概念上トークンの収集として考えることができ、トークンの各々はバケットの所有者が認可を受けて遂行する作業の単位を表す。トークンは、例えば、サービスのレベルに基づき得る蓄積速度でバケットに追加され得る。作業が遂行されると、遂行された作業量に相当する数のトークンがバケットから引き出される。トークンが得られない場合は、作業は遂行されない。この手法を用いて、遂行され得る作業量が、時間経過とともにトークンがバケットに追加される率により制限される。   Embodiments may use a token bucket model to limit capacity consumption. A token bucket can be thought of conceptually as a collection of tokens, each representing a unit of work performed by the bucket owner with authorization. Tokens can be added to the bucket at an accumulation rate that can be based, for example, on the level of service. When work is performed, a number of tokens corresponding to the amount of work performed are withdrawn from the bucket. If no token is obtained, the work is not performed. Using this approach, the amount of work that can be performed is limited by the rate at which tokens are added to the bucket over time.

容量の短期の過剰使用を防止するためには、バケットに追加されるトークンの最大数に制限を課すことができる。当該制限を超えて追加されるいかなるトークンも廃棄され得る。   To prevent short-term overuse of capacity, a limit can be imposed on the maximum number of tokens added to the bucket. Any token added beyond that limit can be discarded.

データベースの動作に関連して、トークンは、データベースの動作の遂行に関連するする経費の単位を表すとみなし得る。例えば、データベース116で動作を行うための要求の経費は、その動作が実行されたときに返送されるデータのサイズに対応し得る。トークンで測られた場合の、動作を遂行する経費は、当該データのサイズをトークン値当たりのサイズで除算することにより決定され得る。   In connection with database operations, a token may be considered to represent a unit of expense associated with performing database operations. For example, the cost of a request to perform an operation on database 116 may correspond to the size of data returned when the operation is performed. The cost of performing an action when measured in tokens can be determined by dividing the size of the data by the size per token value.

要求された動作は、少なくとも1トークンでの経費とみなされ得るが、全体経費は動作が実際に遂行された後まで分からない場合がある。一実施形態では、多くの可能な実施形態の中で、少なくとも1トークンが利用可能であるとき、要求が承諾され得る。この要求は、次いで処理され、要求の総経費が1つ以上の測定量に基づいて決定され得る。   The requested action may be considered an expense with at least one token, but the overall expense may not be known until after the action is actually performed. In one embodiment, among many possible embodiments, the request may be granted when at least one token is available. This request can then be processed and the total cost of the request can be determined based on one or more measurements.

図1で、トークンは、トークンバケット112等の仮想容器内に蓄積し得る。トークンバケットは、トークンにより表される許可容量消費量の単位と、顧客またはサービス等の事業体との間の関連付けを表すものとみなし得る。例えば、顧客がデータベース116上でテーブルを作成するとき、トークンバケット112がこのテーブル上で行われる全ての動作に関連付けられ得る。他の実施形態では、トークンバケットをテーブル区分、顧客、コンピューティングノード等に関連付け得る。   In FIG. 1, tokens may be stored in a virtual container such as token bucket 112. A token bucket may be considered to represent an association between a unit of allowed capacity consumption represented by a token and an entity such as a customer or service. For example, when a customer creates a table on the database 116, the token bucket 112 can be associated with all operations performed on this table. In other embodiments, token buckets may be associated with table partitions, customers, computing nodes, etc.

トークン蓄積ポリシー114は、トークンバケット112内へのトークンの追加を調整し得る。実施形態では、蓄積ポリシー114は、追加率および最大トークン容量を含む。例えば、ポリシーは、所与のバケットがトークンを毎秒20の率で蓄積すべきであるが、百を超えたトークンの蓄積が許可されるべきではないことを示し得る。   The token accumulation policy 114 may coordinate the addition of tokens into the token bucket 112. In an embodiment, the accumulation policy 114 includes an add rate and a maximum token capacity. For example, a policy may indicate that a given bucket should accumulate tokens at a rate of 20 per second, but no more than one hundred tokens should be allowed to accumulate.

トークンおよびトークンバケットは、種々の構造により表され得る。実施形態では、承諾ポリシー108、トークンバケット112およびトークン蓄積ポリシー114は、ソフトウェアライブラリ、実行可能なプログラム等の、機能性モジュールにより実現される。モジュールは、現在のトークン数、最大トークン数、蓄積速度および前回のトークン追加時間を記録することにより、トークンおよびトークンの蓄積を表し得る。要求を承諾または拒絶するか否かを決定するとき、モジュールは先ず、蓄積速度、トークンが追加された最後の時間、および現在の時間に基づいて現在のトークンの数を更新し得る。例えば、トークンバケットに対応するデータ構造を調べて容量が利用可能であるかを決定するとき、蓄積された新たなトークンの数は、蓄積速度を前回の更新から経過した時間量で乗算することにより、利用可能なトークンの計数に決定され得る。この値は、現在利用可能なトークンの計数に加算され得るが、バケットに許可された最大トークン数を超過することは許可され得ない。定期的に呼び出されるルーチンに基づくもの等の、トークンバケットを維持するための他の技法もまた可能である。   Tokens and token buckets can be represented by various structures. In the embodiment, the acceptance policy 108, the token bucket 112, and the token accumulation policy 114 are implemented by functionality modules such as a software library and an executable program. The module may represent token and token accumulation by recording the current token count, maximum token count, accumulation rate, and previous token addition time. When deciding whether to accept or reject a request, the module may first update the current token number based on the accumulation rate, the last time the token was added, and the current time. For example, when examining the data structure corresponding to a token bucket to determine if capacity is available, the number of new tokens accumulated is multiplied by the amount of time elapsed since the previous update. , A count of available tokens can be determined. This value can be added to the count of currently available tokens, but cannot exceed the maximum number of tokens allowed for the bucket. Other techniques for maintaining token buckets are also possible, such as those based on routinely called routines.

図2は、承諾およびトークン蓄積ポリシー適用の実施形態を示す。動作200で開始すると共に動作216で終了する動作の順序として示すが、当業者であれば図示された動作は実施形態を示すように意図されたものであって、図示の動作の少なくとも一部を改変、省略、再順序付け、または並列に遂行させるようにしてもよいことを認識するであろう。   FIG. 2 shows an embodiment of acceptance and token accumulation policy application. Although illustrated as an order of operations that begin at operation 200 and end at operation 216, those skilled in the art will appreciate that the illustrated operations are intended to illustrate embodiments, and that at least some of the illustrated operations may It will be appreciated that modification, omission, reordering, or execution in parallel may be performed.

動作202で、サービスを遂行する要求が受信される。例として、要求はデータベースの問合せを含み得る。データベースの問合せの経費は、おそらくはエンドユーザに返されるデータのバイト数により測られる、問合せを行うことにより返送されるデータの量に基づいて決定され得る。   At act 202, a request to perform a service is received. As an example, the request may include a database query. The cost of querying the database can be determined based on the amount of data returned by making the query, possibly measured by the number of bytes of data returned to the end user.

動作204は、利用可能なトークンの計数の更新を示す。実施形態では、利用可能なトークンの数は、前回の更新の時間、トークン蓄積速度、および現在の時間に基づいて調節され得る。利用可能なトークンの最大数もまた制限され得る。要求が承諾されると、現在のトークンの数からトークンが差し引かれる。しかし、種々の実施形態では現在のトークン計数が零を下回るのを許可するので、差し引きにトークンを利用し得ない場合もあり得る。動作206は、差し引きにトークンを利用可能であるかの決定を示す。いくつかの実施形態では、1トークンが要求を承諾するのに十分であるとみなされ得るが、他では、要求の処理により消費されるトークンの数、即ち容量、を推定するように試み得る。本明細書に用いる場合、十分なトークンまたは十分な容量という用語は、1トークン、固定数のトークン、要求を処理することにより利用されることになる容量の推定に基づくトークンの数等を指し得る。不十分なトークンしか利用し得ない場合、要求は動作208に示すように拒絶される。クライアントのアプリケーションおよび/または提供するサービスの顧客は、拒絶を通知され得る。   Act 204 illustrates updating the count of available tokens. In an embodiment, the number of available tokens may be adjusted based on the time of the last update, the token accumulation rate, and the current time. The maximum number of available tokens can also be limited. If the request is accepted, the token is deducted from the current number of tokens. However, in various embodiments, the current token count is allowed to fall below zero, so tokens may not be available for deduction. Act 206 shows a determination of whether a token is available for deduction. In some embodiments, one token may be considered sufficient to accept the request, while others may attempt to estimate the number of tokens consumed by processing the request, i.e., capacity. As used herein, the term sufficient token or sufficient capacity may refer to one token, a fixed number of tokens, the number of tokens based on an estimate of capacity to be utilized by processing the request, etc. . If insufficient tokens are available, the request is rejected as shown at operation 208. Client applications and / or customers of the services they provide may be notified of the rejection.

動作210は、少なくとも1トークンが利用可能であるとき、要求を承諾することを示す。動作212により示すように、利用可能なトークンの計数が1だけ差し引かれ、要求が処理され得る。要求が一旦処理されたら、利用可能なトークンの数は、動作214により示すように、要求を遂行する実際の経費に基づいて、更に下方に調節され得る。種々の実施形態では、返送されたデータの量、CPUの利用、メモリの消費、ネットワーク帯域幅の消費、等の測定基準に基づいて測定され得る。   Act 210 indicates accepting the request when at least one token is available. As indicated by operation 212, the count of available tokens may be deducted by 1, and the request may be processed. Once the request has been processed, the number of available tokens can be adjusted further downward based on the actual cost of fulfilling the request, as indicated by operation 214. In various embodiments, it may be measured based on metrics such as the amount of data returned, CPU utilization, memory consumption, network bandwidth consumption, and the like.

図2により示される実施形態は、バケット中の現在のトークンの計数が零を下回るのを可能にする。負のトークン残高は、トークンバケットに応じた要求の承諾がされ得ないブラックアウト期間に対応し得る。ブラックアウト期間の長さは、現在の負のトークン計数およびトークン蓄積速度に依存し得る。例えば、トークン蓄積速度が10毎秒で、利用可能なトークンの数が−100である場合、ブラックアウト期間の長さは10秒であり得る。   The embodiment illustrated by FIG. 2 allows the current token count in the bucket to fall below zero. A negative token balance may correspond to a blackout period during which a request according to the token bucket cannot be accepted. The length of the blackout period may depend on the current negative token count and token accumulation rate. For example, if the token accumulation rate is 10 per second and the number of available tokens is −100, the length of the blackout period may be 10 seconds.

保守、報告、要約等を含むもの等の、特定の種類の要求は、集約的で高経費として扱われるデータであり得る。したがって、これらの種類の要求は、長いブラックアウト期間を生じるかもしれず、その時には経費は低いが重要性が高いものを含めて、いかなる要求も作動し得ない。図3Aは、この種類の状況の例を示す。テーブル、区分、コンピューティングノード等の、特定の事業体に割り当てられた総プロビジョニングされた容量は、トークン流入308により表され得、その率でトークンバケット302にトークンが追加される。例えば、長期の保守タスク306は、比較的大量のトークン流出310を生じるデータ集約型タスクであり得る。タスクが作動される度に、トークンバケット302中の利用可能なトークンの数が負数に低減してブラックアウト期間が結果的に生じるような場合もあり得る。他方、問合せ要求304は、データ流出をほとんど要さず、比較的少量のトークン流出312を生じ得る。しかし、先に実行された保守タスクがブラックアウト期間を生じたかもしれず、問合せ要求は、それらが低経費であるにも拘わらず拒絶され得る。そのような状況を回避するのが好都合である。   Certain types of requests, such as those involving maintenance, reporting, summarization, etc., can be data that is intensive and treated as expensive. Thus, these types of requests may result in long blackout periods, at which time no requests can operate, including those that are low in cost but high in importance. FIG. 3A shows an example of this type of situation. The total provisioned capacity assigned to a particular entity, such as a table, partition, computing node, etc., can be represented by token inflow 308, and tokens are added to token bucket 302 at that rate. For example, the long-term maintenance task 306 may be a data intensive task that results in a relatively large amount of token outflow 310. It may happen that each time a task is activated, the number of available tokens in the token bucket 302 is reduced to a negative number resulting in a blackout period. On the other hand, the query request 304 requires little data spill and can result in a relatively small amount of token spill 312. However, previously performed maintenance tasks may have resulted in a blackout period and query requests can be rejected even though they are low cost. It is convenient to avoid such a situation.

図3Bは、プロビジョニングされた容量の2つの別個のトークンバケット314および316への割り振りを示す。トークン流入は、トークン流入308aおよびトークン流入308bにより示されるように、等しく割り振られる。長期の保守タスクおよび問合せを遂行する経費は一定のままであり、したがってトークン流出率310および312は不変である。本配置は、問合せ要求が、長期の保守タスクを実行することにより阻止されるのを防止する。しかし、保守タスクは求められることはほとんどない場合がある。そうであれば、長期のタスクに予蓄された容量の多くが浪費となり得る。   FIG. 3B shows the allocation of provisioned capacity to two separate token buckets 314 and 316. Token inflows are allocated equally, as indicated by token inflow 308a and token inflow 308b. The cost of performing long-term maintenance tasks and queries remains constant, so token outflow rates 310 and 312 are unchanged. This arrangement prevents query requests from being blocked by performing long-term maintenance tasks. However, maintenance tasks are rarely required. If so, much of the capacity pre-stored in long-term tasks can be wasted.

要求の承諾は、1つより多いバケットに基づいて、1つより多いバケットから差し引かれ得るトークンに対して、決定され得る。例えば、実施形態では、要求の種類を、高、中および低の優先度に割り振り得る。高優先度の要求は任意のバケットから、中の要求は3つのバケットのうちの2つから、低優先度の要求はただ1つのバケットから引き出され得る。同様の種類の要求の範疇は、クラスとして表現され得る。これらのクラスは、承諾ポリシーに関連付けられ得る。承諾ポリシーは、要求を承諾すべきか否かを決定するためにいずれのトークンバケットが使用されるべきであるかの表示、およびトークン要求の総経費が一旦既知になったときトークンを引き出すための技法または手法を含み得る。   Request acceptance may be determined for tokens that may be deducted from more than one bucket based on more than one bucket. For example, in embodiments, request types may be assigned high, medium and low priority. High priority requests can be pulled from any bucket, medium requests can be pulled from two of the three buckets, and low priority requests can be pulled from just one bucket. Similar categories of requirements can be expressed as classes. These classes can be associated with an acceptance policy. An acceptance policy is an indication of which token bucket should be used to determine whether a request should be accepted, and a technique for withdrawing tokens once the total cost of the token request is known Or it may include techniques.

図4は、要求クラスおよび承諾ポリシーに基づいて容量を割り当てるための実施形態を示す。入来要求は、クラス「A」要求400、クラス「B」要求402、およびクラス「C」要求404等の、要求クラスに属するようにされ得る。承諾ポリシーが、このように適用されて、要求を承諾または拒絶する際にいずれのバケットを介入させるか、およびこれらのバケットからどのようにトークンを差し引くかを決定し得る。   FIG. 4 illustrates an embodiment for allocating capacity based on request class and acceptance policy. Incoming requests may be made to belong to a request class, such as class “A” request 400, class “B” request 402, and class “C” request 404. An acceptance policy can be applied in this way to determine which buckets to intervene in accepting or rejecting a request and how to deduct tokens from these buckets.

各要求クラスは、承諾ポリシーに関連付けられ得る。承諾ポリシーは、トークンの使用に関する種々の論理上および手続き上のメカニズムを含む。承諾ポリシーの一態様では、要求を承諾して処理するべきか否かの決定を含む。図4を例に用いれば、ポリシー406は、少なくとも1つのトークンがバケット「Y」414で利用可能であれば、クラス「A」要求400は承諾されるべきであることを特定し得る。第2のポリシー408は、トークンがバケット「X」412またはバケット「Y」414のいずれかに存在すれば、クラス「B」要求は承諾されるべきであることを特定し得る。クラス「C」要求404に対する第3のポリシー410は、バケット「X」412のみに基づいて要求が承諾されるべきことを示し得る。これらの例は説明的なもので、他の多くの組み合わせも可能である。   Each request class may be associated with an acceptance policy. The acceptance policy includes various logical and procedural mechanisms for token usage. One aspect of the acceptance policy includes determining whether to accept and process the request. Using FIG. 4 as an example, policy 406 may specify that class “A” request 400 should be granted if at least one token is available in bucket “Y” 414. The second policy 408 may specify that the class “B” request should be granted if the token is in either bucket “X” 412 or bucket “Y” 414. A third policy 410 for class “C” request 404 may indicate that the request should be granted based only on bucket “X” 412. These examples are illustrative and many other combinations are possible.

実施形態では、要求は、可変のまたは事前定義されたトークン閾値に基づいて承諾され得る。一実施例は、消費され得るトークンの予測数と等しい数のトークンをバケットが有するときのみ、要求を承諾することを含む。別の実施例は、最小数のトークンを設定するために以前の経費の移動平均を使用することを含む。多数の追加の実施形態が可能である。   In an embodiment, the request may be granted based on a variable or predefined token threshold. One embodiment includes granting the request only when the bucket has a number of tokens equal to the expected number of tokens that can be consumed. Another example includes using a moving average of previous expenses to set a minimum number of tokens. Numerous additional embodiments are possible.

承諾ポリシーはまた、いかにしてトークンが差し引かれるかの決定を含む。要求が先ず承諾されると、1以上のトークンが、承諾の基になったバケットから差し引かれ得る。しかし、要求の総経費は、要求が少なくとも部分的に処理されるまでは知られ得ない場合がある。したがって、要求が承諾された後のある時点で、第2のトークンの差し引きが起こり得る。ポリシーは、1つ以上のバケットを差し引きの対象として特定し、またバケット間の割り振りを特定し得る。   The acceptance policy also includes a determination of how the token is deducted. If the request is first granted, one or more tokens may be deducted from the bucket on which the grant was based. However, the total cost of the request may not be known until the request is at least partially processed. Thus, at some point after the request has been granted, a second token deduction may occur. A policy may identify one or more buckets to be deducted and may specify an allocation between buckets.

実施形態では、トークンは、承諾が決定された同一のバケットから引き出され得る。例えば、要求が図4に示すバケット「X」412中のトークンの存在に基づいて承諾された場合、全トークン経費もまたバケット「X」412から差し引かれ得る。本手法を採用する1つの理由は、さもなければ、負数の利用可能なトークンを有するバケットが更に落ち込む可能性があり、そのバケットのみに専ら依存する要求に対するブラックアウト期間を引き延ばすことになることである。   In an embodiment, the token may be withdrawn from the same bucket for which acceptance has been determined. For example, if the request is granted based on the presence of a token in bucket “X” 412 shown in FIG. 4, the total token cost may also be deducted from bucket “X” 412. One reason for adopting this approach is that otherwise a bucket with a negative available token could fall further, extending the blackout period for requests that depend solely on that bucket. is there.

別の実施形態は、承諾を決定するのに用いられたバケットから先ず差し引きし、次いで1つ以上の後続のバケットから差し引く。例えば、要求がバケット「X」412中の利用可能なトークンに基づいて許可されたら、一旦決定された総経費の一部分がバケット「X」412から差し引かれ得、一部分がバケット「Y」414から差し引かれ得る。第1のバケット412から差し引かれる量は、利用可能なトークン計数が零等の閾値を下回るのを防止するように決定され得る。残余は、一連のバケット中の第2のバケットまたは最後のバケットから差し引かれ得、そのバケットの利用可能なトークン計数を零未満にせしめ得る。したがって、図4で、クラス「B」要求402を処理するためにこの手法を使用することは、バケット「Y」414に対して利用可能なトークン計数を負にならしめ得る。しかし、バケット「X」412に対する計数は、クラス「B」要求402により負にはならないであろう。本手法は、さもなければクラス「B」要求402を処理することにより引き起こされ得るクラス「C」要求404に対するブラックアウト期間を防止し得るので、好都合である。   Another embodiment first deducts from the bucket used to determine acceptance and then subtracts from one or more subsequent buckets. For example, once the request is granted based on the available tokens in bucket “X” 412, a portion of the total cost once determined can be subtracted from bucket “X” 412 and a portion can be subtracted from bucket “Y” 414. Can be. The amount deducted from the first bucket 412 may be determined to prevent the available token count from falling below a threshold such as zero. The remainder may be subtracted from the second bucket or the last bucket in the series of buckets, causing the available token count for that bucket to be less than zero. Accordingly, using this approach to process class “B” request 402 in FIG. 4 may cause the token count available for bucket “Y” 414 to be negative. However, the count for bucket “X” 412 will not be negative due to class “B” request 402. This approach is advantageous because it may prevent blackout periods for class “C” requests 404 that may otherwise be caused by processing class “B” requests 402.

図5は、承諾ポリシーを取得かつ適用するための実施形態を示す。動作500で開始して動作516で終了する動作の順序として示すが、当業者であれば図示された動作は例示であるように意図されたものであって、図示の動作の少なくとも一部を改変、省略、再順序付け、または並列に遂行させるようにしてもよいことを認識するであろう。   FIG. 5 illustrates an embodiment for obtaining and applying an acceptance policy. Although shown as an order of operations starting at operation 500 and ending at operation 516, those skilled in the art will appreciate that the illustrated operations are intended to be exemplary and modify at least some of the illustrated operations. It will be appreciated that they may be omitted, reordered, or performed in parallel.

承諾ポリシーを適用するためのプロセスは、動作502により示すように、要求の受信を含み得る。要求が属するクラスが、次いで決定され得る。これは種々の手段を介して行われる。実施形態では、要求の呼び出しに関連付けられたAPIは、クラスを識別する1つ以上のパラメータを可能とし得る。一実施例は、要求が対応するクラスを指定するテキストパラメータを含む。しかし、数値を使用して要求クラスを識別することは、種々の性能を考慮すると、好都合である。   The process for applying the acceptance policy may include receiving a request, as indicated by operation 502. The class to which the request belongs can then be determined. This can be done through various means. In an embodiment, the API associated with the request invocation may allow one or more parameters that identify the class. One embodiment includes a text parameter that specifies the class to which the request corresponds. However, using numerical values to identify the request class is advantageous when considering various performances.

いくつかの実施形態では、要求はそれらの種類に基づいて分類され得る。例えば、書き込み要求は、読み出し要求とは別個に分類され得る。他の実施形態では、要求を分析して、それらの潜在的経費を決定し、また同様の経費レベルの要求を同一のクラスに割り当てる。   In some embodiments, requests can be classified based on their type. For example, write requests can be classified separately from read requests. In other embodiments, the requests are analyzed to determine their potential expenses, and similar expense level requests are assigned to the same class.

要求のクラスは、要求パラメータに特定されたものに加えてまたはそれらに代えて、諸要因に基づき得る。例えば、所与の顧客、識別子、またはセキュリティの役割が、要求クラスに関連付けられ得る。顧客または役割は、要求が呼び出された状況から利用可能であり得、または要求中のパラメータとして特定され得る。他の可能性のある要因には、要求のソースのインターネットプロトコルアドレス、呼び出されている特定のAPI等が含まれる。加えて、構成または他のメカニズムが、分類ルールを定義付けるために使用され得る。例えば、顧客、ウェブサービス、APIまたは他の実体に関連付けられた構成が、要求に関連付けられ得る。おそらくは構成に特定される、種々のデフォルトルール、もまた適用し得る。デフォルト値は、他の分類ルールが適用可能でないとき、適用可能である。実施形態は、デフォルト値が覆されるのを可能にする。実施形態はまた、特定のデフォルト値を、それらが覆され得ないように、固定値とすることを可能にする。   The class of requirements may be based on factors in addition to or instead of those specified in the request parameters. For example, a given customer, identifier, or security role can be associated with a request class. The customer or role may be available from the situation in which the request is invoked or may be specified as a parameter in the request. Other possible factors include the internet protocol address of the source of the request, the particular API being called, etc. In addition, configurations or other mechanisms can be used to define classification rules. For example, a configuration associated with a customer, web service, API or other entity may be associated with the request. Various default rules, possibly specific to the configuration, may also apply. Default values are applicable when no other classification rule is applicable. Embodiments allow default values to be overridden. Embodiments also allow certain default values to be fixed values so that they cannot be overridden.

要求クラスが一旦決定されたら、動作504により示すように、対応する承諾ポリシーが受信、取得、またはさもなければアプリケーション用に準備され得る。これには、トークンを引き出し得るバケットのリスト等の、承諾ポリシーを記述したレコードへのアクセスを含む。レコードは、例えば、データベースに記憶され、符号リソース、構成ファイル等に埋め込まれ得る。いくつかの実施形態では、バケットを表す構造は、ポリシーの記述の一部であり得、換言すれば、バケットおよびポリシー定義は一体化構造を含み得る。いくつかの実施形態は、このステップを省略して、本明細書に説明された種々の技法を遂行する命令中の適合する実行パスを選択することにより適用され得る。   Once the request class is determined, a corresponding acceptance policy can be received, obtained, or otherwise prepared for the application, as indicated by operation 504. This includes access to records describing acceptance policies, such as a list of buckets from which tokens can be drawn. Records can be stored, for example, in a database and embedded in code resources, configuration files, etc. In some embodiments, the structure representing the bucket may be part of the policy description, in other words, the bucket and policy definition may include a unified structure. Some embodiments may be applied by omitting this step and selecting a suitable execution path in the instructions that perform the various techniques described herein.

要求は、動作506により承諾または拒絶され得る。承諾ポリシーは、利用可能なトークンに対してチェックされることになる1つ以上のバケットを記述し得る。いくつかの実施形態では、複数のトークンまたは少なくとも閾値レベルを上回っているトークンについての基準承諾を要し得る。いくつかの実施形態では、トークン計数が負のとき、要求が許可されることを可能にし得、ポリシー記述には、下回る要求を承諾しない閾値の負値を示し得る。   The request may be accepted or rejected by operation 506. The acceptance policy may describe one or more buckets that will be checked against available tokens. In some embodiments, criteria compliance may be required for multiple tokens or at least tokens above a threshold level. In some embodiments, when the token count is negative, the request may be allowed to be allowed, and the policy description may indicate a negative threshold value that does not accept the lower request.

動作506はまた、少なくとも1トークンを差し引くことを含む。差し引かれるトークン数は、要求が承諾されるべきか否かを決定するために使用されたトークン量と同一であり得る。このように、同一のトークンまたはトークンの組に基づいて別の要求が承諾されることになることはない。実施形態ではまた、同一のトークンまたはトークンの組に基づいて複数の要求が承諾されるのを防止するために、バケットへのアクセスを同期化させ得る。   Act 506 also includes subtracting at least one token. The number of tokens deducted may be the same as the amount of tokens used to determine whether the request should be granted. Thus, no other request will be granted based on the same token or set of tokens. Embodiments may also synchronize access to the buckets to prevent multiple requests from being granted based on the same token or set of tokens.

承諾された後、要求は、動作508により示されるように処理され得る。要求の総経費は、要求の処理に少なくとも基づいて決定され得る。種々の実施形態では、サービスのクライアントに返されたデータのサイズを、使用し得る。例えば、要求がデータベースの問合せである場合、トークン経費は、問合せ実行後にクライアントに返されたデータの全サイズから導かれ得る。他の実施形態では、要求が経費決定の基礎として処理および使用される間、種々の性能測定基準を収集し得る。   Once granted, the request may be processed as indicated by operation 508. The total cost of the request can be determined based at least on the processing of the request. In various embodiments, the size of the data returned to the service client may be used. For example, if the request is a database query, the token cost can be derived from the total size of data returned to the client after the query is executed. In other embodiments, various performance metrics may be collected while the request is processed and used as a basis for expense determination.

種々の実施形態では、要求が一旦遂行されると、動作の経費を差し引き得る。このステップは、動作514により示すように、承諾ポリシーに従って遂行され得る。承諾ポリシーには、複数のバケットの間に分配する等の、トークン経費の差し引きや、または承諾が決定されるのに用いられたバケットからの経費の差し引きに対する種々の手法を記述し得る。種々の他のポリシーが採用され得る   In various embodiments, once the request has been fulfilled, operational costs may be deducted. This step may be performed according to a consent policy, as indicated by operation 514. The acceptance policy may describe various techniques for deducting token expenses, such as distributing among multiple buckets, or deducting expenses from the bucket used to determine the acceptance. Various other policies can be employed

いくつかの実施形態では、トークンバケットは階層的関係を有し得る。この手法は、優先順位付け方式を要求クラスとトークンバケットとの間の1対1のマッピングで規定するのを可能にするので、選択された承諾ポリシーの好都合な管理を可能にする。階層的トークンバケットは、トークンバケット間で親子の関係を、それぞれの最大トークン容量と共に特定することにより、好都合に規定され得る。図6Aは、階層的トークンバケットの例を用いた実施形態を示す。2つのトークンバケットが示されている。バケット「X」608は、「Y」610の親バケットであり、30トークンの最大容量を有する。バケット「Y」610は、親「X」608の子であり、5トークンの最大容量を有する。トークンは、バケット間で階層様式で共有され、子バケットはその親のトークンにアクセスすることができる。したがって、トークンバケット608および610の両方が最大容量であるとき、それらの間で共有される30トークンが存在する。   In some embodiments, token buckets may have a hierarchical relationship. This approach allows for convenient management of selected acceptance policies, since it allows a prioritization scheme to be defined with a one-to-one mapping between request classes and token buckets. Hierarchical token buckets can be conveniently defined by specifying a parent-child relationship between token buckets along with their respective maximum token capacities. FIG. 6A illustrates an embodiment using an example of a hierarchical token bucket. Two token buckets are shown. Bucket “X” 608 is the parent bucket of “Y” 610 and has a maximum capacity of 30 tokens. Bucket “Y” 610 is a child of parent “X” 608 and has a maximum capacity of 5 tokens. Tokens are shared in a hierarchical fashion between buckets, and child buckets can access their parent tokens. Thus, when both token buckets 608 and 610 are at maximum capacity, there are 30 tokens shared between them.

図6Aでは、クラス「A」要求600は、クラス「A」ポリシー604の適用に基づいてバケット「Y」610に関連付けられる。同様に、クラス「B」要求は、クラスBポリシー606に基づいてバケット「X」608に関連付けられる。承諾ポリシーは、要求クラスとバケットとの間の1対1のマッピングを含み得、これは、要求を承諾するべきか否か、およびいずれのトークンバケット、またはバケット、からトークンを差し引くかの決定に使用され得る。承諾ポリシーはまた、要求の承諾に必要な利用可能なトークンの最小数等の、追加の要素を含み得る。非階層的手法に関して本明細書に説明する種々の方法および技法が、階層的手法にも適用され得る。   In FIG. 6A, class “A” request 600 is associated with bucket “Y” 610 based on the application of class “A” policy 604. Similarly, class “B” requests are associated with bucket “X” 608 based on class B policy 606. The acceptance policy may include a one-to-one mapping between the request class and the bucket, which determines whether the request should be accepted and which token bucket, or bucket, the token is deducted from. Can be used. The acceptance policy may also include additional elements such as the minimum number of available tokens required to accept the request. Various methods and techniques described herein with respect to non-hierarchical approaches may also be applied to hierarchical approaches.

要求は、要求クラスに対してマッピングされたトークンバケット中の少なくとも1つのトークンの利用可能性に基づいて承諾され得る。例えば、クラス「A」要求600は、バケット「Y」610が利用可能なトークンを有するとき、承諾され得る。同様に、クラス「B」要求602は、バケット「X」608が利用可能なトークンを有するとき、承諾され得る。いくつかの実施形態は、例えば、要求の処理の推定経費に基づいて、1より多いトークンが利用可能であることを要し得る。   The request may be granted based on the availability of at least one token in the token bucket mapped to the request class. For example, class “A” request 600 may be granted when bucket “Y” 610 has an available token. Similarly, class “B” request 602 may be granted when bucket “X” 608 has an available token. Some embodiments may require that more than one token be available, eg, based on the estimated cost of processing the request.

承諾に要されるトークン(単数または複数)は、要求が処理のために承諾されたとき、差し引かれ得る。実施形態では、要求を承諾するとき、1を差し引かれ得る。残存経費は、一旦既知になれば、承諾を決定するのに用いられた同一のバケットから差し引かれ得る。   The token (s) required for acceptance can be deducted when the request is granted for processing. In an embodiment, 1 may be subtracted when accepting the request. Once the remaining cost is known, it can be deducted from the same bucket used to determine acceptance.

図6Bは、バケット「X」608から2トークンを減じる動作650を示す図である。バケット「X」608および「Y」610の差し引き前の状態が、図中要素651により示され、差し引き後の状態が要素652により示されている。トークンがバケット「X」608から差し引かれた結果、28のトークン計数となっている。「Y」610に利用可能なトークンは、不変である。   FIG. 6B is a diagram illustrating operation 650 of subtracting two tokens from bucket “X” 608. The state before the subtraction of the buckets “X” 608 and “Y” 610 is indicated by an element 651 in the drawing, and the state after the subtraction is indicated by an element 652. As a result of the token being subtracted from bucket “X” 608, there are 28 token counts. The token available for “Y” 610 is unchanged.

図6Cで、動作660は、バケット「Y」610から2トークンを差し引くことを示す。差し引き前の状態は、図中要素661で示されている。差し引き後の状態は、要素662により示すように、両バケット「X」608および「Y」610に利用可能なトークンが2だけ差し引かれていることを示す。この手法は、利用可能なトークンを2つのバケット間で階様式で共有することを反映する。要求が子バケット中の利用可能なトークンに基づいて承諾または処理されるとき、トークンは子バケットおよびその親の各々から差し引かれ得る。加えて、種々の実施形態では、要求が承諾されるためには、トークンは両方の子バケット中およびその親の各々中で利用可能でなければならない。図6Cで、バケット「Y」610およびその親バケット「X」608の両方が少なくとも1トークンを有するので、要求は、差し引き前の状態661に基づいて承諾され得る。他方、実施形態では、子バケット中に不十分なトークンしか存在しない場合であっても、要求を処理するためにバケット「X」608等の、親バケットを承諾する。   In FIG. 6C, operation 660 shows subtracting two tokens from bucket “Y” 610. The state before subtraction is indicated by an element 661 in the figure. The state after deduction indicates that two tokens have been deducted in both buckets “X” 608 and “Y” 610, as indicated by element 662. This approach reflects sharing available tokens between two buckets in a floor style. When a request is granted or processed based on the available tokens in the child bucket, the token can be deducted from each of the child bucket and its parent. In addition, in various embodiments, a token must be available in both child buckets and each of its parents in order for the request to be granted. In FIG. 6C, since both bucket “Y” 610 and its parent bucket “X” 608 have at least one token, the request may be granted based on state 661 prior to deduction. On the other hand, embodiments grant a parent bucket, such as bucket “X” 608, to process the request even if there are insufficient tokens in the child bucket.

図6D中の動作670は、利用可能な数より多い大量のトークンをバケット「X」608から減じることを示す。差し引き前は、要素671により示すように、トークンバケット「X」608は、それに利用可能な30トークンを有する。35トークンを差し引いた後は、差し引き後状態672により示すように、その総数がマイナス5に減じられている。図6Dは、バケット「Y」610を、差し引き後にそれに利用可能な5トークンを有しているものとして示す。承諾がバケット「Y」610に依存する要求に対して、実施形態は、少なくとも1トークンが親バケット「X」608中に存在することを要し得る。したがって、これらの実施形態では、両バケット「X」608およびバケット「Y」610に利用可能なトークンの数が零を上回るまで、バケット「Y」610に依存する要求は承諾されることはないであろう。しかし、実施形態では、トークンがその親から差し引かれたときに、子バケット中のトークンの数を減少させない場合がある。実施形態では、少なくとも1トークンが子バケットの親の各々中に存在するのを依然要し得る。しかし、子のトークン計数が負になるのを防止することは、子バケットに関連付けられたサービスに対するブラックアウト期間を防止するのに役立ち得る。   Operation 670 in FIG. 6D shows subtracting a larger number of tokens from bucket “X” 608 than is available. Before deduction, as indicated by element 671, token bucket “X” 608 has 30 tokens available to it. After subtracting 35 tokens, the total number is reduced to minus 5, as indicated by post-subtraction state 672. FIG. 6D shows bucket “Y” 610 as having 5 tokens available to it after deduction. For requests where consent depends on bucket “Y” 610, an embodiment may require that at least one token be present in parent bucket “X” 608. Thus, in these embodiments, requests that depend on bucket “Y” 610 are not granted until the number of tokens available for both bucket “X” 608 and bucket “Y” 610 exceeds zero. I will. However, embodiments may not reduce the number of tokens in a child bucket when a token is deducted from its parent. In embodiments, it may still require at least one token to be present in each of the child bucket's parents. However, preventing a child's token count from going negative can help prevent blackout periods for services associated with the child bucket.

諸要因によりブラックアウト期間の長さを決定させる要因には、子バケットおよびその親中のトークン計数が負である程度、および子および親バケットの再充填率が含まれる。例えば、図6Dで、バケット「Y」610に依存する要求は、少なくとも1トークンがバケット「X」608およびバケット「Y」610中両方に利用可能になるまでは、承諾され得ない。バケット「X」608がトークンで再充填される率は、したがって、バケット「Y」610に依存する要求で見られるブラックアウト期間の長さに影響を及ぼし得る。しかし、バケット「X」608は、バケット「Y」610に割り当てられるものより比例的に高い蓄積速度を割り当てられ得る。   Factors that determine the length of the blackout period due to various factors include the degree to which the token count in the child bucket and its parent is negative, and the refill rate of the child and parent bucket. For example, in FIG. 6D, a request that depends on bucket “Y” 610 may not be granted until at least one token is available in both bucket “X” 608 and bucket “Y” 610. The rate at which bucket “X” 608 is refilled with tokens may thus affect the length of the blackout period seen in requests that depend on bucket “Y” 610. However, bucket “X” 608 may be assigned a proportionally higher accumulation rate than that assigned to bucket “Y” 610.

図6Eは、バケット「Y」610から、それに利用可能であるより多いトークンを差し引く動作680を示す。差し引き前は、バケット「Y」610は、要素681に図の一部分として示すように、それに利用可能な5トークンを有する。35トークンを差し引いた後は、バケット「Y」610は、それに利用可能なマイナス30トークンを有し、一方バケット「X」608は、マイナス5トークンのままである。この状態は、要素682で示され、承諾が基いとする子バケット「Y」610から、およびその親バケット「X」608からの差し引きを反映する。   FIG. 6E illustrates an operation 680 of subtracting more tokens from the bucket “Y” 610 than are available to it. Prior to subtraction, bucket “Y” 610 has 5 tokens available to it, as shown in element 681 as part of the figure. After subtracting 35 tokens, bucket “Y” 610 has minus 30 tokens available to it, while bucket “X” 608 remains minus 5 tokens. This state is indicated by element 682 and reflects the subtraction from the child bucket “Y” 610 on which the consent is based and from its parent bucket “X” 608.

階層的トークンバケットの実施形態は、種々の技法、アルゴリズム、データ構造等を採用することができる。実施形態では、親トークンバケットに利用可能なトークンの数を追跡するために記録が使用され得る。その子に利用可能なトークン数は、その後、ルールの組、アルゴリズム等に基づいて決定され得る。例えば、子トークンバケットに利用可能なトークン数は、親トークンバケットに利用可能なトークン数、および子トークンバケットが蓄積可能なトークンの最大数に基づいて決定され得る。   Hierarchical token bucket embodiments may employ various techniques, algorithms, data structures, and the like. In an embodiment, a record may be used to track the number of tokens available in the parent token bucket. The number of tokens available to that child can then be determined based on a set of rules, algorithms, etc. For example, the number of tokens available for the child token bucket may be determined based on the number of tokens available for the parent token bucket and the maximum number of tokens that the child token bucket can store.

トークンバケットの階層構造は、新たなトークンをグループとして蓄積し得る。図6Aに示すトークンバケットを基準点として用いると、トークン蓄積速度は、バケット「X」608および「Y」610を含む階層構造に関連付けられ得る。トークンを階層構造に追加したとき、両バケット「X」608および「Y」610に利用可能なトークン数は、それらのそれぞれの最大値まで増加し得る。   The token bucket hierarchy may store new tokens as a group. Using the token bucket shown in FIG. 6A as a reference point, the token accumulation rate may be associated with a hierarchical structure that includes buckets “X” 608 and “Y” 610. When tokens are added to the hierarchical structure, the number of tokens available for both buckets “X” 608 and “Y” 610 may increase to their respective maximum values.

図6Fは、2つ以上の要求クラスが同等の優先度を有するバケットを共有する場合のトークンバケットの階層的配置を示す。クラス「A」要求6000はバケット「X」6010に向けられ、クラス「B」要求6002はバケット「Y」6012に向けられ得る。親バケット「P」6008は、100の総容量を有し得、80トークン毎秒の割り当てを受信するバケット「X」6010および20トークン毎秒の割り当てを受信するバケット「Y」6012に対応する。バケットの最大容量は、それらのそれぞれのトークン割り当て率と同一であり得る。   FIG. 6F shows a hierarchical arrangement of token buckets when two or more request classes share buckets with equal priority. Class “A” request 6000 may be directed to bucket “X” 6010 and class “B” request 6002 may be directed to bucket “Y” 6012. Parent bucket “P” 6008 may have a total capacity of 100, corresponding to bucket “X” 6010 receiving an allocation of 80 tokens per second and bucket “Y” 6012 receiving an allocation of 20 tokens per second. The maximum capacity of the buckets may be the same as their respective token allocation rate.

承諾ポリシーは、子バケットが同等の優先度を共有する図6Fに示す配置に対して定義付けられ得る。承諾ポリシーは、以下のように進行し得る。クラス「A」要求6000に対応する要求の着信時に、バケット「Y」6012は、トークンの利用可能性について参照され得る。少なくとも1トークンが利用可能であれば、要求は承諾され得る。バケット「Y」6012および親バケット「P」での利用可能なトークンの計数は、承諾時におよび再度要求の処理時に、各々減少され得る。バケット「Y」6012に不十分なトークンしか利用可能でない場合、親バケット「P」6008に少なくとも1トークンが存在すれば、要求は承諾され得る。トークンは、承諾時におよび再度要求の処理時に、親バケット「P」6008から差し引かれ得る。クラス「B」要求6002は、クラス「B」ポリシー6006をクラス「A」ポリシー6004と同様の仕方で定義付けるクラスにより同様に処理され得、トークン割り当て率の差異に対して調節される。   An acceptance policy may be defined for the arrangement shown in FIG. 6F where child buckets share equal priority. The acceptance policy can proceed as follows. Upon arrival of a request corresponding to class “A” request 6000, bucket “Y” 6012 may be referenced for token availability. The request can be granted if at least one token is available. The count of available tokens in bucket “Y” 6012 and parent bucket “P” may be decremented upon acceptance and again upon request processing, respectively. If insufficient tokens are available in bucket “Y” 6012, the request may be granted if there is at least one token in parent bucket “P” 6008. The token may be deducted from the parent bucket “P” 6008 upon acceptance and upon processing of the request again. Class “B” request 6002 may be similarly processed by a class defining class “B” policy 6006 in a manner similar to class “A” policy 6004 and is adjusted for differences in token allocation rates.

この手法は、結果として、それらのプロビジョニングされた容量にアクセスする各クラスからの要求を含むが、兄弟バケットがそれにプロビジョニングされた容量を十分に利用していなければ、追加の容量を利用し得る。例えば、クラス「A」要求6000のみが発せられた場合、最大100トークン毎秒がそれらを処理するために利用可能となる。作業負荷が混合され、クラス「A」要求6000が10トークン毎秒を消費するとすれば、クラス「B」要求6002は、最大で90トークン毎秒を消費可能になる。   This approach results in a request from each class to access those provisioned capacities, but additional capacities can be utilized if the sibling bucket is not fully utilizing the provisioned capacities. For example, if only class “A” requests 6000 are issued, a maximum of 100 tokens per second will be available to process them. If the workload is mixed and the class “A” request 6000 consumes 10 tokens per second, the class “B” request 6002 can consume a maximum of 90 tokens per second.

承諾ポリシーの態様は、提供するプロバイダの顧客により定義付けられ得る。定義は、サービスプロバイダにより提供されるユーザインターフェースとの顧客のやりとりにより遂行され得る。例えば、ウェブページが、ユーザが、クラスおよびトークンが差し引かれ得るそれぞれのバケットを定義付けることを可能にし得る。ユーザはまた、各クラスの要求に対する最小トークン量等の、種々の追加のパラメータを設定し得る。   Aspects of the acceptance policy can be defined by the provider's customers. The definition can be accomplished by customer interaction with a user interface provided by the service provider. For example, a web page may allow a user to define each bucket from which classes and tokens can be deducted. The user may also set various additional parameters, such as a minimum token amount for each class of request.

種々の実施形態では、入力/出力優先順位を調整するポリシーを管理するための手段を提供し得るが、これには、例えば、要求クラス、トークンバケット、承諾ポリシー等の定義付けが含まれ得る。図7Aで、ユーザインターフェース700は、ホストされたデータベーステーブルの作成中にユーザに提示されるユーザインターフェースページの順序の一部を含み得る。先行ステップ701のユーザインターフェース部品は、提供されたデータベーステーブルを定義付けるためのユーザインターフェースウィザードの以前の箇所にナビゲートするためのボタン、ハイパーリンク、または類似の要素を表し得る。テーブル作成702のユーザインターフェース要素は、ユーザがパラメータをテーブル作成プロセスに供給し終えたことおよびテーブルを作成すべきことを表示し得る。図示のユーザインターフェース要素は、そのようなインターフェースを提供する手法の一般例であることを意図するもので、本開示の範囲を限定するように解するべきではない。   Various embodiments may provide a means for managing policies that adjust input / output priorities, which may include, for example, defining request classes, token buckets, acceptance policies, and the like. In FIG. 7A, the user interface 700 may include a portion of the order of user interface pages presented to the user during creation of the hosted database table. The user interface part of the preceding step 701 may represent a button, hyperlink, or similar element for navigating to a previous part of the user interface wizard for defining the provided database table. The user interface element of table creation 702 may indicate that the user has provided parameters to the table creation process and that the table should be created. The illustrated user interface elements are intended to be general examples of techniques for providing such an interface and should not be construed to limit the scope of the present disclosure.

ユーザインターフェース700は、1つ以上のポリシー定義704a、704b、および704cを含み得るが、これらは、要求クラスとトークンを引き出し得る1つ以上のバケットとの間の関係を示すパラメータ、および可能性として承諾ポリシーの他の種々の要素を供給するために使用され得る。例えば、ポリシー定義要素704aは、クラス表示706a、一次バケット表示708aおよび二次バケット表示710aを含み得る。クラス表示706aは、クラスを記述する種々のパラメータを含み得、これにはクラス名称および1つ以上の要求の種類が含まれ得る。いくつかの実施形態では、要求クラスおよび要求の種類は提供するサービスプロバイダにより事前定義される。クラス表示706b、一次バケット表示708b、および二次バケット表示710bを含むポリシー定義704b、およびクラス表示706c、一次バケット表示708cおよび二次バケット表示710cを含むポリシー定義704c等の、多数の追加のクラス表示が、ユーザインターフェース700に提示され得る。   User interface 700 may include one or more policy definitions 704a, 704b, and 704c, which are parameters that indicate the relationship between the request class and one or more buckets from which tokens may be retrieved, and possibly It can be used to supply various other elements of the acceptance policy. For example, policy definition element 704a may include a class display 706a, a primary bucket display 708a, and a secondary bucket display 710a. The class display 706a may include various parameters describing the class, which may include a class name and one or more request types. In some embodiments, request classes and request types are predefined by the providing service provider. A number of additional class displays, such as a policy definition 704b that includes a class display 706b, a primary bucket display 708b, and a secondary bucket display 710b, and a policy definition 704c that includes a class display 706c, a primary bucket display 708c, and a secondary bucket display 710c. May be presented on the user interface 700.

一次バケット要素708aおよび二次バケット要素710aは、承諾ポリシーの一部を含むトークンバケットを、それらのそれぞれの優先度と共に示す。例えば、708aで示されるトークンバケットは、クラス表示706aにより特定されたクラスに該当する要求に対する承諾判断の適用に際して最初に参照されるであろう。二次トークンバケット710aにより特定されたトークンバケットは、2番目に参照されるであろう。ポリシー定義704a、704b、および704cは同一のトークンバケット、またはトークンバケットの重複する組を指し得る。   Primary bucket element 708a and secondary bucket element 710a indicate token buckets that include a portion of the acceptance policy, along with their respective priorities. For example, the token bucket indicated by 708a will be first referenced in applying an admission decision for a request corresponding to the class identified by the class indication 706a. The token bucket identified by secondary token bucket 710a will be referenced second. Policy definitions 704a, 704b, and 704c may refer to the same token bucket, or overlapping sets of token buckets.

図7Bは、階層状トークンバケットを採用した承諾ポリシーを定義付けるユーザインターフェースの図示実施形態である。ユーザインターフェース750は、プロセス中の他のステップにナビゲートし、かつプロセスを完了すべきことを表示するための先行ステップ751およびテーブル作成752のユーザインターフェース要素を採用するテーブル定義プロセスの一部を含み得る。   FIG. 7B is an illustrative embodiment of a user interface for defining an acceptance policy employing a hierarchical token bucket. User interface 750 includes a portion of a table definition process that employs user interface elements of preceding step 751 and table creation 752 to navigate to other steps in the process and indicate that the process should be completed. obtain.

ユーザインターフェース750は、1つ以上のポリシー定義754a、754b、および754cを含み得、これらは、顧客が承諾ポリシーおよび階層的トークンバケットを作成するためのパラメータを供給するのを可能にする。例えば、ポリシー定義754aは、トークンバケットの名称を示すバケット名756aのユーザインターフェース要素を含み得る。いくつかの実施形態では、これは、事前定義されたバケット名称を含むドロップボックスまたは他のユーザインターフェース要素であり得る。要求クラス760aは、コンボボックス、リストボックスまたは他のユーザインターフェース要素を含み得、これらは、要求クラスを、バケット名称756aにより示されたバケットに割り当てるのを可能にする。子トークンバケット758aのユーザインターフェース要素は、図6Aに示すバケット「Y」610等の、1つ以上の子トークンバケットを特定するために使用され得る。これは、1つ以上の子トークンバケットを選択するのを可能にする、リストボックスまたは他のユーザインターフェース要素であり得る。いくつかの実施形態では、親トークンバケットは、1つ以上の子トークンバケットに代えて特定され得る。ユーザインターフェース750は、多数の追加のポリシー定義が定義付けられるのを可能にする。例えば、ユーザインターフェース750はまた、バケット名756b、要求クラス760b、および子バケット758bを含むポリシー定義754b、ならびにバケット名756c、要求クラス760c、および子バケット758cを含むポリシー定義754cを定義付けまたは編集するためのユーザインターフェース要素を含み得る。   The user interface 750 may include one or more policy definitions 754a, 754b, and 754c that allow a customer to provide parameters for creating acceptance policies and hierarchical token buckets. For example, the policy definition 754a may include a user interface element with a bucket name 756a that indicates the name of the token bucket. In some embodiments, this may be a drop box or other user interface element that includes a predefined bucket name. Request class 760a may include a combo box, list box, or other user interface element that allows a request class to be assigned to the bucket indicated by bucket name 756a. The user interface element of child token bucket 758a may be used to identify one or more child token buckets, such as bucket “Y” 610 shown in FIG. 6A. This can be a list box or other user interface element that allows one or more child token buckets to be selected. In some embodiments, a parent token bucket may be specified in place of one or more child token buckets. User interface 750 allows a number of additional policy definitions to be defined. For example, the user interface 750 also defines or edits a policy definition 754b that includes a bucket name 756b, a request class 760b, and a child bucket 758b, and a policy definition 754c that includes the bucket name 756c, the request class 760c, and a child bucket 758c. User interface elements may be included.

図7Aおよび図7Bは、両図共、図7A中の一次バケット708aおよび図7B中のバケット名756a等の、トークンバケットを特定するためのユーザインターフェース要素を提供するように示されている。しかし、ユーザインターフェース700および750は、トークンバケットおよび対応する要求クラスを直接または間接的に特定するための代替表現を使用し得る。例えば、ユーザインターフェース700は、要求クラスに関連付けられ得る高、中または低優先度の選択を提示し得る。バケット間の関係は、ユーザにより選択された優先度レベルから推定され得る。同様の手法を、ユーザインターフェース750に採用し得る。   FIGS. 7A and 7B are both shown to provide user interface elements for identifying a token bucket, such as primary bucket 708a in FIG. 7A and bucket name 756a in FIG. 7B. However, user interfaces 700 and 750 may use alternative representations for directly or indirectly identifying token buckets and corresponding request classes. For example, the user interface 700 may present a high, medium or low priority selection that may be associated with a request class. The relationship between buckets can be estimated from the priority level selected by the user. A similar approach may be employed for the user interface 750.

実施形態では、図7Aおよび7Bに示したものと同様のユーザインターフェースを採用し得、顧客が、要求クラス、バケット、バケット間の関係等を引き続き編集するのを可能にする。一例では、テーブルの定義の変更を含む。顧客は、例えば、追加の列を加えることにより、データベーステーブルの定義に対して種々の修正を行い得る。修正されたテーブルは、異なる使用パターンに関連付けられ得る。したがって、顧客はまた、テーブルに割り当てられた容量、承諾ポリシー、バケットの数等の変更を特定し得る。関連する情報を供給するために、種々のユーザインターフェース要素またはAPIを使用し得る。   In an embodiment, a user interface similar to that shown in FIGS. 7A and 7B may be employed, allowing the customer to continue to edit request classes, buckets, relationships between buckets, etc. One example involves changing the definition of a table. The customer may make various modifications to the database table definition, for example, by adding additional columns. The modified table can be associated with different usage patterns. Thus, the customer may also specify changes in capacity, acceptance policy, number of buckets, etc. assigned to the table. Various user interface elements or APIs may be used to provide relevant information.

図7Aおよび7Bに示した例示のユーザインターフェースは、シッククライアント、n階層または他のアーキテクチャを含む、様々な技術を使用して実現され得る。実施形態では、ホスト側プロバイダのデータセンター内で動作するウェブサーバーは、ハイパーテキストマークアップ言語(「HTML」)フォームを顧客のブラウザに供する。フォームの提出時には、ホスト側プロバイダのデータセンター内のウェブサービスAPIは、顧客により供給された情報の受信および処理を行う。   The example user interface shown in FIGS. 7A and 7B may be implemented using a variety of technologies, including thick clients, n-tiers, or other architectures. In an embodiment, a web server operating within the hosting provider's data center serves a hypertext markup language (“HTML”) form to the customer's browser. Upon form submission, the web service API in the hosting provider's data center receives and processes information supplied by the customer.

図8は、関連付けられたトークンバケットおよび承諾ポリシーでデータベーステーブルを作成するためのプロセスを示すフローチャートである。動作800で開始し、動作814で終了する動作の順序として示すが、図示の動作の少なくとも一部を改変、省略、再順序付け、または並列に遂行させるようにしてもよいことが当業者により認識されるであろう。例えば、動作802〜808により示された情報は、ホスト側プロバイダデータセンターで同時に受信され得る。   FIG. 8 is a flowchart illustrating a process for creating a database table with associated token buckets and acceptance policies. Although shown as an order of operations starting at operation 800 and ending at operation 814, those skilled in the art will recognize that at least some of the illustrated operations may be modified, omitted, reordered, or performed in parallel. It will be. For example, the information indicated by operations 802-808 may be received simultaneously at the host provider data center.

動作802は、テーブル定義を示す情報の受信を示す。本開示の実施形態は、テーブル毎、または定義付けられテーブルが1つより多い区分を含む場合には区分毎に容量を割り当て得る。区分は、テーブルの細区分を含み得、その各々は1つ以上のコンピューティングノード上で動作するDBMSにより維持され得る。容量がテーブル毎または区分毎に割り当てられ得るため、承諾ポリシーおよびトークンバケットは、同様に定義付けられ得る。   Act 802 shows receipt of information indicating a table definition. Embodiments of the present disclosure may allocate capacity per table, or per partition if the defined table includes more than one partition. A partition can include sub-partitions of a table, each of which can be maintained by a DBMS running on one or more computing nodes. Since capacity can be allocated per table or per partition, acceptance policies and token buckets can be similarly defined.

動作804は、1つ以上の要求クラスを示す情報の受信を示す。これらのクラスは、例えば、図7Aおよび7Bに示すもの等のユーザインターフェースを介して、ユーザにより定義付けられ得る。他の実施形態では、ホストするプロバイダは、要求クラスを事前定義し得る。実施形態では、要求クラスは「高」、「中」、および「低」のように、ラベル付けされる。   Act 804 illustrates receiving information indicating one or more request classes. These classes may be defined by the user via a user interface such as that shown in FIGS. 7A and 7B, for example. In other embodiments, the hosting provider may predefine the request class. In an embodiment, the request classes are labeled as “high”, “medium”, and “low”.

動作806は、作成されるべきバケットを示す情報の受信を示す。いくつかの実施形態では、情報にはバケットのリスティングまたは計数を含み得、他では、情報が推定され得る。例えば、要求クラスとトークンバケットとの間の1対1の対応関係が推定され得る。実施形態では、3つのトークンバケットを形成して、「高」、「中」、および「低」要求クラスに対応させ得る。   Act 806 indicates receipt of information indicating the bucket to be created. In some embodiments, the information may include a bucket listing or count, and in others, the information may be estimated. For example, a one-to-one correspondence between request classes and token buckets can be estimated. In an embodiment, three token buckets may be formed to correspond to the “high”, “medium”, and “low” request classes.

動作808では、1つ以上の承諾ポリシーを示す情報が受信され得る。この情報は、要求クラスとバケットとの間のマッピングを含み得、承諾を決定するためにバケットを参照する順番、トークンを減じる方法等を示す情報を含み得る。情報は、動作802〜806により参照された他の情報と組み合わされ得る。その情報のある特定の側面は、推定的に決定され、または動作802〜806で受信される情報の他の側面を推定するために使用され得る。例えば、いくつかの実施形態では、バケットを参照するポリシー記述は、参照したバケットが作成されるべきことを推定するために使用され得る。   At act 808, information indicative of one or more acceptance policies may be received. This information may include a mapping between request classes and buckets, and may include information indicating the order in which the buckets are referenced to determine acceptance, how to reduce tokens, and so forth. The information may be combined with other information referenced by operations 802-806. Certain aspects of the information may be determined a priori or used to estimate other aspects of the information received at operations 802-806. For example, in some embodiments, a policy description that references a bucket may be used to infer that the referenced bucket is to be created.

動作810では、区分化方式が決定され得る。提供されるテーブルまたは他のサービスは、複数のコンピューティングノードの間で割り振られ得る。したがって、実施形態では、いくつのおよびいずれのコンピューティングノードが関与するか、ならびにテーブルにより維持されるデータの割り振りの仕方の決定等のテーブルを区分ことの他の側面を決定し得る。テーブルを含まないサービスに対して、これは、それぞれの区分により取り扱われる作業負荷の割り振りの仕方の決定を含み得る。   In operation 810, a partitioning scheme may be determined. A provided table or other service may be allocated among multiple computing nodes. Thus, embodiments may determine other aspects of partitioning the table, such as determining how many and which computing nodes are involved and how to allocate the data maintained by the table. For services that do not include a table, this may include determining how to allocate the workload handled by each partition.

区分化方式に基づいて、容量が種々の区分またはコンピューティングノードに割り当てられ得る。顧客当たりの容量は、例えば、区分間で同等に割り振られるか、または区分またはコンピューティングノードが取り扱う予期される作業負荷の量に基づいて割り振られ得る。例えば、第1の区分がテーブルの作業負荷の4分の3を扱うと予期される場合、それには容量の4分の3が割り当てられ得る。   Based on the partitioning scheme, capacity may be assigned to various partitions or computing nodes. Capacity per customer may be allocated equally between partitions, for example, or based on the amount of expected workload handled by a partition or computing node. For example, if the first partition is expected to handle three quarters of the table workload, it may be assigned three quarters of capacity.

区分への顧客当たりの容量の割り当ては、トークンの全生成量のある割合の区分への割り当てを含み得る。例えば、顧客のサービス階層に少なくとも部分的に基づいて、顧客が所与のトークン量毎秒を割り当てられるべきことが、決定され得る。先の実施例を続けると、その容量の4分の3が、一つの区分またはコンピューティングノードに割り当てられ、残余の4分の1が別の区分に割り当てられ得る。これは、動作810により示されている。   The allocation of capacity per customer to a segment may include an allocation to a segment of a percentage of the total production of tokens. For example, based at least in part on the customer's service tier, it may be determined that the customer should be assigned a given token amount per second. Continuing the previous example, three quarters of that capacity can be allocated to one partition or computing node and the remaining one quarter can be allocated to another partition. This is indicated by operation 810.

区分に割り当てられた顧客当たりの容量は、動作812により示すように、その区分に作成されるトークンバケットに細割り当てられ得る。先の実施例を続けると、総容量の4分の3が毎秒75トークンの率のトークン生成に対応するとすれば、毎秒75トークンの計数が、その区分またはコンピューティングノードに関連付けられたトークンバケットに割り当てられ得る。その区分に対して3つのトークンバケットが存在するとすれば、各々には毎秒25トークンが割り当てられ得る。   The capacity per customer assigned to a partition may be finely allocated to the token bucket created for that partition, as indicated by operation 812. Continuing with the previous example, assuming that three-quarters of the total capacity corresponds to a token generation rate of 75 tokens per second, a count of 75 tokens per second is added to the token bucket associated with that partition or computing node. Can be assigned. If there are three token buckets for that partition, each may be allocated 25 tokens per second.

一旦決定されると、バケット当たりのトークン割り当て率は、トークンバケットを作成、初期化またはあるいは表現するために使用され得る。種々の実施形態では、バケットの作成は、最大トークン容量、現在の容量、トークン割り当て率、および前回の追加時間を含むレコード等の、種々のデータ構造の初期化を含み得る。多数の他の実施形態も可能である。例えば、いくつかの実施形態では、論理的に定義付けられたバケットとメモリに記憶されたデータ構造との間の1対1の対応関係は存在しない場合がある。   Once determined, the token allocation rate per bucket can be used to create, initialize, or represent a token bucket. In various embodiments, bucket creation may include initialization of various data structures, such as records including maximum token capacity, current capacity, token allocation rate, and previous addition time. Many other embodiments are possible. For example, in some embodiments, there may not be a one-to-one correspondence between logically defined buckets and data structures stored in memory.

図8に示す動作はまた、更新を可能にするように適合される。例えば、動作802は、現存のテーブルの定義の変更を示す情報の受信を含み得る。加えて、要求クラス、バケットの定義および関係、承諾ポリシー、区分化方式等に関する情報は、それらの初期の定義に続いて受信され得、対応する事業体および関係がそれに応じて更新される。   The operations shown in FIG. 8 are also adapted to allow updates. For example, operation 802 may include receiving information indicating a change in the definition of an existing table. In addition, information regarding request classes, bucket definitions and relationships, acceptance policies, partitioning schemes, etc. may be received following their initial definitions, and corresponding entities and relationships are updated accordingly.

図9は、本発明の態様が実施され得る分散コンピューティング環境の例を示す図である。種々のユーザ900aは、任意の種類のコンピューティングデバイス902a上で動作する種々のクライアントアプリケーションとやりとり可能であり、データセンター920内で種々のコンピューティングノード910a、910b、および910c上で実行されるプロセスと通信ネットワーク904を介して通信を行う。あるいは、クライアントアプリケーション902bは、ユーザの介入が無くても通信を行い得る。通信ネットワーク904は、インターネット、有線および無線のローカルエリアネットワーク、光ファイバネットワーク、衛星通信等を含む、任意の組み合わせの通信技術を含み得る。任意の数のネットワークプロトコルを採用し得る。   FIG. 9 is an illustration of an example distributed computing environment in which aspects of the invention may be implemented. Various users 900a can interact with various client applications running on any type of computing device 902a and are executed on various computing nodes 910a, 910b, and 910c within the data center 920. And the communication network 904. Alternatively, the client application 902b can communicate without user intervention. Communication network 904 may include any combination of communication technologies, including the Internet, wired and wireless local area networks, fiber optic networks, satellite communications, and the like. Any number of network protocols may be employed.

データセンター920内で動作するコンピューティングノード910a、910b、および910c上で実行されるプロセスとの通信は、ゲートウェイ906およびルータ908を介して提供され得る。多数の他のネットワーク構成もまた、採用し得る。図9には明示的に示していないが、種々の認証メカニズム、ウェブサービス層、ビジネスオブジェクトまたは他の中間層を提供して、コンピューティングノード910a、910b、および910c上で実行されるプロセスとの通信をとりなし得る。これらの中間層のいくつかは、それら自体、コンピューティングノードのうちの1つ以上で実行されるプロセスを含み得る。コンピューティングノード910a、910b、および910c、ならびにその上で実行されるプロセスはまた、ルータ908を介して互いに通信を行い得る。あるいは、別個の通信経路を採用し得る。いくつかの実施形態では、データセンター920は、追加のデータセンターと通信を行うように構成され得、コンピューティングノードおよびその上で実行されるプロセスが他のデータセンター内で動作するコンピューティングノードおよびプロセスと通信を行い得るようにする。   Communication with processes running on the computing nodes 910a, 910b, and 910c operating within the data center 920 may be provided via a gateway 906 and a router 908. A number of other network configurations may also be employed. Although not explicitly shown in FIG. 9, it provides various authentication mechanisms, web service layers, business objects or other middle tiers to communicate with processes executed on computing nodes 910a, 910b, and 910c. Can communicate. Some of these middle tiers may themselves include processes that run on one or more of the computing nodes. The computing nodes 910a, 910b, and 910c and the processes executed thereon may also communicate with each other via the router 908. Alternatively, a separate communication path can be employed. In some embodiments, the data center 920 may be configured to communicate with additional data centers, and computing nodes and computing nodes on which the processes executed thereon operate in other data centers and Enable communication with the process.

コンピューティングノード910aは、1つ以上のプロセッサ916、1つ以上のメモリ918、および1つ以上の記憶デバイス914を備える物理的ハードウェア上に存在するように示されている。コンピューティングノード910aでのプロセスは、オペレーティングシステムと連携して実行され得るか、またはそれに代えて、プロセッサ916、メモリ918または記憶デバイス914等の、物理的リソースと直接とやりとりをするベアメタルプロセスとして実行され得る。   The computing node 910a is shown to reside on physical hardware that includes one or more processors 916, one or more memories 918, and one or more storage devices 914. The process at the compute node 910a can be run in conjunction with an operating system or alternatively as a bare metal process that interacts directly with physical resources, such as a processor 916, memory 918 or storage device 914. Can be done.

コンピューティングノード910b、および910cは、物理的プロセッサ、メモリおよび記憶デバイス等の、種々の物理的リソースへの共有アクセスを提供し得る仮想マシンホスト912上で動作するように示されている。任意の数の仮想化メカニズムを採用して、コンピューティングノードを提供し得る。   Computing nodes 910b and 910c are shown to run on a virtual machine host 912 that may provide shared access to various physical resources, such as physical processors, memory and storage devices. Any number of virtualization mechanisms may be employed to provide computing nodes.

図9に示す種々のコンピューティングノードは、ウェブサービス、データベース管理システム、ビジネスオブジェクト、監視および診断施設等を提供するように構成され得る。コンピューティングノードは、パーソナルコンピュータ、サーバー、クラスタ化されたコンピューティングデバイス等の、種々の種類のコンピューティングリソースを指し得る。ハードウェア形態中に実現されたとき、コンピューティングノードは概して、コンピュータ可読命令を記憶するように構成された1つ以上のメモリ、および指示を読み出してそれを実行するように構成された1つ以上のプロセッサに関連付けられる。ハードウェアに基づくコンピューティングノードはまた、1つ以上の記憶デバイス、ネットワークインターフェース、通信バス、ユーザインターフェースデバイス等を備え得る。コンピューティングノードはまた、ハイパーバイザーでまたはそれ無しに実装される仮想マシン等の、仮想化コンピューティングリソース、仮想化ベアメタル環境等を包含する。作製された仮想化に基づくコンピューティングノードは、ハードウェアリソースへの仮想化アクセス、ならびに非仮想化アクセスを有する。コンピューティングノードは、オペレーティングシステム、ならびに1つ以上のアプリケーションプログラムを実行するように構成され得る。いくつかの実施形態では、コンピューティングノードはまた、ベアメタルアプリケーションプログラムを含み得る。   The various computing nodes shown in FIG. 9 may be configured to provide web services, database management systems, business objects, monitoring and diagnostic facilities, and the like. A computing node may refer to various types of computing resources such as personal computers, servers, clustered computing devices, and the like. When implemented in a hardware form, a computing node generally has one or more memories configured to store computer readable instructions, and one or more configured to read instructions and execute them. Associated with the processor. A hardware-based computing node may also include one or more storage devices, network interfaces, communication buses, user interface devices, and the like. Computing nodes also include virtualized computing resources, virtualized bare metal environments, etc., such as virtual machines implemented with or without a hypervisor. The created virtualization-based computing node has virtualized access to hardware resources as well as non-virtualized access. A computing node may be configured to execute an operating system as well as one or more application programs. In some embodiments, the computing node may also include a bare metal application program.

これまでの部分で記載したプロセス、方法、およびアルゴリズムの各々は、1つ以上のコンピュータまたはコンピュータプロセッサにより実行される符号モジュールによって具現化され、かつそれにより完全または部分的に自動化され得る。符号モジュールは、ハードドライブ、ソリッドステートメモリ、光ディスク、および/または同様のもの等の、任意の種類の非一時的コンピュータ可読媒体またはコンピュータ記憶デバイスに記憶される。プロセスおよびアルゴリズムは、特定用途向け回路構成に部分的または全体的に実現され得る。開示したプロセスおよびプロセスステップの結果は、例えば、揮発性または非揮発性の記憶装置等の任意の種類の非一時的コンピュータ記憶装置に、永続的にまたはそれ以外で、記憶され得る。   Each of the processes, methods, and algorithms described in the previous sections can be embodied by a code module executed by one or more computers or computer processors and thereby be fully or partially automated. The code module is stored on any type of non-transitory computer readable medium or computer storage device, such as a hard drive, solid state memory, optical disk, and / or the like. The processes and algorithms may be implemented in part or in whole for application specific circuitry. The results of the disclosed processes and process steps may be stored permanently or otherwise in any type of non-transitory computer storage device, such as, for example, volatile or non-volatile storage device.

以上記載を行った種々の特徴およびプロセスは、互いに独立に使用され得るか、または種々の方法で組み合わされ得る。全ての可能な組み合わせおよび部分組み合わせが、本開示の範囲内に収まるように意図される。加えて、ある特定の方法またはプロセスブロックが、一部の実現形態では省略され得る。本明細書に記載する方法およびプロセスはまた、何らかの特定の順序にも限定されず、それに関連するブロックまたは状態は、適切な他の順序で遂行され得る。例えば、記載したブロックまたは状態は、具体的に開示した以外の順番で遂行され得、または複数のブロックまたは状態は、単一のブロックまたは状態に組み合わされ得る。例示のブロックまたは状態は、順次に、並行して、または何らかの他の様式で遂行され得る。ブロックまたは状態は、開示した例示的施形態に追加されるかまたはそれらから除去され得る。本明細書に記載する例示のシステムまたは構成要素は、記載したものとは異なって構成され得る。例えば、要素を開示した例となる実施形態に追加し、それから除去し、またはそれに対して再配置され得る。   The various features and processes described above can be used independently of each other or can be combined in various ways. All possible combinations and subcombinations are intended to be within the scope of this disclosure. In addition, certain methods or process blocks may be omitted in some implementations. The methods and processes described herein are also not limited to any particular order, and the blocks or states associated therewith can be performed in any other suitable order. For example, the described blocks or states may be performed in an order other than those specifically disclosed, or multiple blocks or states may be combined into a single block or state. The illustrated blocks or states may be performed sequentially, in parallel, or in some other manner. Blocks or states may be added to or removed from the disclosed exemplary embodiments. The example systems or components described herein may be configured differently than those described. For example, elements may be added to, removed from, or rearranged relative to the disclosed exemplary embodiments.

種々の要素が、使用される間に、メモリまたは記憶装置に記憶させるように示されること、これらの要素またはそれらの部分がメモリ管理およびデータ完全性の目的でメモリと他の記憶デバイスとの間で転送され得ることが、また認識されるであろう。あるいは、他の実施形態では、ソフトウェアモジュールおよび/またはシステムのいくつかまたは全部が、別のデバイスのメモリで実行され、コンピュータ間通信を介して図示のコンピューティングシステムと通信し得る。更に、いくつかの実施形態では、システムおよび/またはモジュールのいくつかまたは全部は、1つ以上の特定用途向け集積回路(ASIC)、標準集積回路、コントローラ(例えば、適合した指示により実行され、マイクロコントローラおよび/または埋込マイクロコントローラを含む)、フィールドプログラマブルゲートアレー(FPGA)、複合プログラマブル論理デバイス(CPLD)等、を限定されずに含む、少なくとも部分的にファームウェアおよび/またはハードウェア内に等、他の方法で実現または提供され得る。モジュール、システムおよびデータ構造のいくつかまたは全部はまた、適合した接続を介して適合したドライブにより読み出され得るハードディスク、メモリ、ネットワーク、または携帯型媒体物品等の、コンピュータ可読媒体に(例えば、ソフトウェア指示または構造化データとして)記憶され得る。システム、モジュール、およびデータ構造はまた、無線に基づく媒体および有線/ケーブルに基づく媒体を含む、種々のコンピュータ可読伝送媒体で生成データ信号(例えば、搬送波の一部もしくは他のアナログまたはデジタル伝播信号として)送信され、種々の形態(例えば、単一または多重アナログ信号として、または複数の個別デジタルパケットまたはフレームとして)を取り得る。そのようなコンピュータプログラム製品は、他の実施形態で他の形態も取り得る。したがって、本発明は、他のコンピュータシステム構成で実施してもよい。   Various elements are shown to be stored in a memory or storage device while in use, and these elements or portions thereof are between memory and other storage devices for memory management and data integrity purposes. It will also be appreciated that can be forwarded on. Alternatively, in other embodiments, some or all of the software modules and / or systems may execute in the memory of another device and communicate with the illustrated computing system via computer-to-computer communication. Further, in some embodiments, some or all of the systems and / or modules may be implemented with one or more application specific integrated circuits (ASICs), standard integrated circuits, controllers (eg, Controller and / or embedded microcontroller), field programmable gate array (FPGA), complex programmable logic device (CPLD), etc., including but not limited to, at least partially in firmware and / or hardware, etc. It can be realized or provided in other ways. Some or all of the modules, systems, and data structures may also be on a computer-readable medium (eg, software, such as a hard disk, memory, network, or portable media article that can be read by a suitable drive via a suitable connection. Can be stored (as instructions or structured data). The systems, modules, and data structures can also be generated data signals (eg, as part of a carrier wave or other analog or digital propagation signal) on various computer readable transmission media, including wireless based media and wired / cable based media. ) And may take various forms (eg, as single or multiple analog signals, or as multiple individual digital packets or frames). Such a computer program product may take other forms in other embodiments. Accordingly, the present invention may be implemented with other computer system configurations.

以上の事項は、以下の付記に鑑みて更に理解され得る。
1.データベース管理システムの容量消費を優先順位付けするためのシステムであって、
データベース管理システムを動作させるように構成された1つ以上のコンピューティングノードと、
コンピュータ可読命令を上に記憶した1つ以上のメモリであって、実行時に、システムに少なくとも
要求クラスを示す情報を含み、かつ顧客に代わって遂行される動作をデータベース管理システム上で遂行させる要求を受信させ、
複数のトークンバケットを備える1つ以上のデータ構造から、関連付けられた第1の容量表示を有する第1のトークンバケットを要求クラスに少なくとも部分的に基づいて選択させ、
第1の容量表示が顧客に代わって動作を遂行するための容量を示すことを決定させ、
動作を遂行させ、かつ
動作を遂行することにより利用された容量に少なくとも部分的に基づいて第1の容量表示を更新させる、
コンピュータ可読命令を上に記憶した1つ以上のメモリと、
を備えるシステム。
2.コンピューティングデバイスによる実行時に、システムに少なくとも、
要求クラスと第1のトークンバケットとの関連付けを示す情報を受信させる、
コンピュータ可読命令を上に記憶した1つ以上のメモリを更に備える、付記1に記載のシステム。
3.コンピューティングデバイスによる実行時に、システムに少なくとも、
動作を遂行することにより利用された容量に少なくとも部分的に基づいて、複数のトークンバケットのうちの第2のトークンバケットに関連付けられた第2の容量表示を更新させる、
コンピュータ可読命令を上に記憶した1つ以上のメモリを備える、付記1に記載のシステム。
4.コンピューティングデバイスによる実行時に、システムに少なくとも、
複数のトークンバケットのうちの第2のトークンバケットに関連付けられた第2の容量表示が、顧客に代わって動作を遂行するための容量の不足を示すことを決定させる、
コンピュータ可読命令を上に記憶した1つ以上のメモリを更に備える、付記1に記載のシステム。
5.容量消費を優先順位付けするためのコンピュータ実装方法であって、
顧客に代わって遂行される動作を1つ以上のコンピューティングノード上で遂行させる要求であって、要求クラスを示す情報を含む要求、を受信することと、
複数のデータ構造から第1の容量表示を含む第1のデータ構造を、要求クラスに少なくとも部分的に基づいて、選択することと、
第1の容量表示が、顧客に代わって動作を遂行するための1つ以上のコンピューティングノードの容量を示すことを決定することと、
動作を遂行することと、
動作を遂行するのに利用された容量に少なくとも部分的に基づいて第1の容量表示を更新することと、
を含む、方法。
6.動作は、ウェブサービス、ウェブサイト、およびデータベース管理システムのうちの1つ以上で遂行される、付記5に記載の方法。
7.要求クラスを示す情報は、パラメータを含む、付記5に記載の方法。
8.要求クラスを示す情報は、構成値を含む、付記5に記載の方法。
9.顧客識別子、セキュリティ役割、およびアプリケーションプログラミングインターフェースのうちの1つ以上を更に備える、付記5に記載の方法。
10.要求クラスと第1の容量表示との間のマッピングを示す情報を受信すること、
を更に含む、付記5に記載の方法。
11.複数のデータ構造からの第2の容量表示が、顧客に代わって動作を遂行するための容量の不足を示すことを決定すること、
を更に含む、付記5に記載の方法。
12.動作を遂行するのに利用された容量に少なくとも部分的に基づいて複数のデータ構造からの第2の容量表示を更新すること、
を更に含む、付記5に記載の方法。
13.第1の容量表示および複数のデータ構造からの1つ以上の追加の容量表示は、1つ以上のメモリ場所を、顧客に代わって動作を遂行するための容量を示す複数のデータ構造中に、共有する、 付記5に記載の方法。
14.第1の容量表示は、1つ以上のコンピューティングノードの総容量のサブセットに対応する、付記5に記載の方法。
15.第1の容量表示は、顧客に代わって動作を遂行するのに利用可能な容量単位の計数を含む、付記5に記載の方法。
16.計数は、割り当てられた容量の蓄積速度に少なくとも部分的に基づいて増大される、付記15に記載の方法。
17.非一時的コンピュータ可読記憶媒体であって、コンピューティングデバイスよる実行時に、コンピューティングデバイスに少なくとも、
動作を1つ以上のコンピューティングノード上で遂行させる要求であって、要求クラスを示す情報を含む要求、を受信させ、
複数のデータ構造から第1の容量表示を含む第1のデータ構造を、要求クラスに少なくとも部分的に基づいて、選択させ、
第1の容量表示が処理のための動作を許可するのに十分な容量を示すことを決定させ
動作を遂行させ、かつ
第1の容量表示を、動作を遂行するために利用された容量に少なくとも部分的に基づいて更新させる、
命令を上に記憶した非一時的コンピュータ可読記憶媒体。
18.要求クラスを示す情報は、パラメータを含む、付記17に記載のコンピュータ可読記憶媒体。
19.コンピューティングデバイスによる実行時に、システムに少なくとも、
複数のデータ構造のうちの第2のデータ構造が、動作を遂行するための容量の不足を示すことを決定させる、
更なる命令を上に記憶した、付記17に記載のコンピュータ可読記憶媒体。
20.コンピューティングデバイスによる実行時に、システムに少なくとも、
第1の容量表示が動作を遂行するための容量の不足を示すとき複数のデータ構造からの第2の容量表示を更新させる、
更なる命令を上に記憶し、更新は、動作を遂行するために利用した容量に少なくとも部分的に基づく、付記17に記載のコンピュータ可読記憶媒体。
21.第1の容量表示は、動作を遂行するために利用可能な容量の単位の計数を含む、付記17に記載のコンピュータ可読記憶媒体。
22.計数は、割り当てられた容量の蓄積速度に少なくとも部分的に基づいて増大される、付記21に記載のコンピュータ可読記憶媒体。
23.容量消費を優先順位付けするためのシステムであって、
1つ以上のコンピューティングノードと、
コンピュータ可読命令を上に記憶した1つ以上のメモリであって、コンピューティングデバイスによる実行時に、システムに少なくとも、
1つ以上の要求クラスを示す情報を受信させ、
1つ以上の要求クラスと第1の容量表示を備えた1つ以上のデータ構造との間のマッピングを示す情報を受信させ、
1つ以上のコンピューティングノード上で動作を遂行するための総容量のサブセットを、第1の容量表示に割り当てさせ、かつ
第1の容量表示が動作を1つ以上のコンピューティングノード上で遂行するために利用可能な容量を示すことを決定したとき動作を遂行させる、
コンピュータ可読命令を上に記憶した1つ以上のメモリと、
を備える、システム。
24.コンピュータ可読命令を上に記憶した1つ以上のメモリであって、コンピューティングデバイスによる実行時に、システムに少なくとも、
顧客に代わってデータベーステーブルを作成するための指示を示す情報を受信させる
コンピュータ可読命令を上に記憶した1つ以上のメモリを更に備える、付記23に記載のシステム。
25.コンピュータ可読命令を上に記憶した1つ以上のメモリであって、コンピューティングデバイスによる実行時に、システムに少なくとも、
データベーステーブルを修正するための指示を示す情報を受信させ、かつ
データベーステーブルに割り当てられた容量を修正するための指示を示す情報を受信させる、
コンピュータ可読命令を上に記憶した1つ以上のメモリを更に備える、付記23に記載のシステム。
26.コンピュータ可読命令を上に記憶した1つ以上のメモリであって、コンピューティングデバイスによる実行時に、システムに少なくとも、
データベーステーブルの区分の数に少なくとも部分的に基づいて総容量のサブセットを決定させる
コンピュータ可読命令を上に記憶した1つ以上のメモリを更に備える、付記24に記載のシステム。
27.コンピュータ可読命令を上に記憶した1つ以上のメモリであって、コンピューティングデバイスによる実行時に、システムに少なくとも、
顧客に入力を承諾させるための命令を含むユーザインターフェース命令を送信させる、
コンピュータ可読命令を上に記憶した1つ以上のメモリを更に備える、付記23に記載のシステム。
The above matters can be further understood in view of the following supplementary notes.
1. A system for prioritizing capacity consumption of a database management system,
One or more computing nodes configured to operate a database management system;
One or more memories having computer-readable instructions stored thereon, wherein at the time of execution, the system includes information indicating at least a request class, and requests to perform operations performed on behalf of the customer on the database management system. Let
Selecting a first token bucket having an associated first capacity indication from one or more data structures comprising a plurality of token buckets based at least in part on the request class;
Determining that the first capacity indication indicates a capacity to perform an action on behalf of the customer;
Performing the operation and updating the first capacity indication based at least in part on the capacity utilized by performing the operation;
One or more memories having computer-readable instructions stored thereon;
A system comprising:
2. When executed by a computing device, the system at least
Receiving information indicating an association between the request class and the first token bucket;
The system of claim 1, further comprising one or more memories having computer-readable instructions stored thereon.
3. When executed by a computing device, the system at least
Updating a second capacity indication associated with a second token bucket of the plurality of token buckets based at least in part on the capacity utilized by performing the operation;
The system of claim 1, comprising one or more memories having stored thereon computer readable instructions.
4). When executed by a computing device, the system at least
Determining that a second capacity indication associated with a second token bucket of the plurality of token buckets indicates a lack of capacity to perform an action on behalf of the customer;
The system of claim 1, further comprising one or more memories having computer-readable instructions stored thereon.
5. A computer-implemented method for prioritizing capacity consumption, comprising:
Receiving a request on one or more computing nodes to perform an operation performed on behalf of a customer, the request including information indicating a request class;
Selecting a first data structure including a first capacity indication from a plurality of data structures based at least in part on the request class;
Determining that the first capacity indication indicates the capacity of one or more computing nodes to perform operations on behalf of the customer;
Performing actions,
Updating the first capacity indication based at least in part on the capacity utilized to perform the operation;
Including the method.
6). The method of claim 5, wherein the operation is performed by one or more of a web service, a website, and a database management system.
7. The method according to appendix 5, wherein the information indicating the request class includes a parameter.
8). The method according to appendix 5, wherein the information indicating the request class includes a configuration value.
9. The method of claim 5, further comprising one or more of a customer identifier, a security role, and an application programming interface.
10. Receiving information indicating a mapping between the request class and the first capacity indication;
The method according to appendix 5, further comprising:
11. Determining that the second capacity indication from the plurality of data structures indicates a lack of capacity to perform the action on behalf of the customer;
The method according to appendix 5, further comprising:
12 Updating the second capacity indication from the plurality of data structures based at least in part on the capacity utilized to perform the operation;
The method according to appendix 5, further comprising:
13. The first capacity indication and the one or more additional capacity indications from the plurality of data structures may include one or more memory locations in the plurality of data structures that indicate the capacity to perform operations on behalf of the customer, The method according to appendix 5, which is shared.
14 The method of claim 5, wherein the first capacity indication corresponds to a subset of the total capacity of the one or more computing nodes.
15. The method of claim 5, wherein the first capacity indication includes a count of capacity units available to perform actions on behalf of the customer.
16. The method of claim 15, wherein the count is increased based at least in part on the rate of accumulation of the allocated capacity.
17. A non-transitory computer readable storage medium that, when executed by a computing device, has at least a computing device,
Receiving a request to perform an operation on one or more computing nodes, including information indicating a request class;
Selecting a first data structure including a first capacity indication from a plurality of data structures based at least in part on the request class;
Determining that the first capacity indication indicates a capacity sufficient to allow the operation for processing to perform the operation, and wherein the first capacity indication is at least equal to the capacity utilized to perform the operation. Update based on part,
A non-transitory computer readable storage medium having instructions stored thereon.
18. The computer-readable storage medium according to appendix 17, wherein the information indicating the request class includes a parameter.
19. When executed by a computing device, the system at least
Determining that a second data structure of the plurality of data structures indicates a lack of capacity to perform the operation;
18. The computer readable storage medium according to appendix 17, wherein further instructions are stored above.
20. When executed by a computing device, the system at least
Updating the second capacity display from the plurality of data structures when the first capacity display indicates a lack of capacity to perform the operation;
18. The computer readable storage medium of appendix 17, wherein further instructions are stored above and the update is based at least in part on the capacity utilized to perform the operation.
21. 18. The computer readable storage medium of appendix 17, wherein the first capacity indication includes a count of units of capacity available to perform the operation.
22. 24. The computer readable storage medium of claim 21, wherein the count is increased based at least in part on an accumulation rate of the allocated capacity.
23. A system for prioritizing capacity consumption,
One or more computing nodes;
One or more memories having stored thereon computer readable instructions, wherein when executed by a computing device, the system has at least:
Receiving information indicating one or more request classes,
Receiving information indicating a mapping between one or more request classes and one or more data structures with a first capacity indication;
A subset of the total capacity for performing operations on one or more computing nodes is assigned to a first capacity indication, and the first capacity indication performs operations on one or more computing nodes To perform an action when it is decided to show available capacity to
One or more memories having computer-readable instructions stored thereon;
A system comprising:
24. One or more memories having stored thereon computer readable instructions, wherein when executed by a computing device, the system has at least:
24. The system of clause 23, further comprising one or more memories having stored thereon computer readable instructions for receiving information indicative of instructions for creating a database table on behalf of a customer.
25. One or more memories having stored thereon computer readable instructions, wherein when executed by a computing device, the system has at least:
Receiving information indicating an instruction for correcting the database table, and receiving information indicating an instruction for correcting the capacity allocated to the database table;
24. The system of clause 23, further comprising one or more memories having computer readable instructions stored thereon.
26. One or more memories having stored thereon computer readable instructions, wherein when executed by a computing device, the system has at least:
25. The system of claim 24, further comprising one or more memories having stored thereon computer readable instructions for determining a subset of the total capacity based at least in part on the number of database table partitions.
27. One or more memories having stored thereon computer readable instructions, wherein when executed by a computing device, the system has at least:
Sending a user interface instruction including an instruction to allow the customer to accept input,
24. The system of clause 23, further comprising one or more memories having computer readable instructions stored thereon.

とりわけ、「can」、「could」、「might」、「may」、「e.g.」等の、本明細書に使用する条件付言い回しは、他に具体的に述べない限り、またはさもなければ使用する前後関係内で理解されない限り、ある特定の特徴、要素および/またはステップをある特定の実施形態が含むが、他の実施形態は含まないことを伝えるように概して意図される。したがって、そのような条件付言い回しは、特徴、要素および/またはステップが、如何様にも1つ以上の実施形態に必要とされること、または1つ以上の実施形態が、これらの特徴、要素および/またはステップが含まれるのかまたは任意の特定の実施形態で遂行されるのかを判断するための論理を必然的に含むことを暗示するようには概して意図されない。「備える(comprising)」、「含む(including)」、「有する(having)」等の用語は、同義であり、制約無く包括的に使用され、追加の要素、特徴、作用、動作等を排除しない。また、「または(or)」という用語は、その包括的な意味に(かつその排他的意味にではなく)使用され、例えば、要素の一覧を接続するとき、用語「または(or)」はその一覧中の要素のうちの1つ、いくつか、または全てを意味する。   In particular, conditional phrases used herein, such as “can”, “could”, “might”, “may”, “eg”, etc., unless otherwise specifically stated or otherwise. Unless otherwise understood within the context of use, it is generally intended to convey that certain embodiments include certain features, elements and / or steps, but not other embodiments. Accordingly, such conditional language means that features, elements and / or steps are in any way required for one or more embodiments, or that one or more embodiments require these features, elements And / or is not generally intended to imply that it necessarily includes logic to determine whether a step is included or performed in any particular embodiment. The terms “comprising”, “including”, “having” and the like are synonymous and are used comprehensively without restriction and do not exclude additional elements, features, functions, operations, etc. . Also, the term “or” is used in its generic meaning (and not in its exclusive meaning), for example, when connecting lists of elements, the term “or” Means one, some, or all of the elements in the list.

ある特定の例となる実施形態を記載したが、これらの実施形態は例として提示したのであり、本明細書に開示した発明の範囲を限定するようには意図されない。したがって、これまでの記載中に何らかの特定の特長、特性、ステップ、モジュール、またはブロックが必要または不可欠であることを暗示するように意図されるものはない。実際、本明細書に記載した新規な方法およびシステムは、様々な他の形態に具体化され得、更に、本明細書に記載した方法およびシステムの形態での種々の省略、置き換え、および変更を、本明細書に開示する本発明の趣旨から逸脱することなく行い得る。添付の特許請求の範囲およびそれらの均等物は、本明細書に記載した本発明の特定の範囲および趣旨内に収まるであろう場合、そのような形態または変形例にも及ぶように意図される。   Although certain example embodiments have been described, these embodiments have been presented by way of example and are not intended to limit the scope of the invention disclosed herein. Accordingly, nothing in the preceding description is intended to imply that any particular feature, characteristic, step, module, or block is necessary or essential. Indeed, the novel methods and systems described herein may be embodied in various other forms, and various omissions, substitutions, and modifications in the form of the methods and systems described herein may be made. This can be done without departing from the spirit of the invention disclosed herein. The appended claims and their equivalents are intended to cover such forms or modifications as would fall within the specific scope and spirit of the invention as described herein. .

Claims (13)

容量消費を管理するためのデータベース管理システム用のプログラムであって、
前記プログラムは、コンピュータ可読命令が記憶されている1つ以上のメモリを有する1つ以上のコンピューティングノード上で動作し、
前記コンピュータ可読命令は、前記1つ以上のコンピューティングノードによって実行される時に、前記データベース管理システムに、少なくとも、
顧客のために遂行される動作を、前記データベース管理システム上で遂行させる要求であって、要求クラスを示す情報を含む要求を受信するステップと、
関連付けられた第1の容量表示を有する第1のトークンバケットを、複数のトークンバケットを含む1つ以上のデータ構造から、前記要求クラスに少なくとも部分的に基づいて選択するステップと、
前記第1の容量表示が、前記動作を遂行するための容量に十分であると示すことを決定するステップと、
前記第1の容量表示が、前記容量に十分であると示す場合、前記動作を遂行するステップと、
前記動作を遂行するステップにより利用された容量を、前記第1のトークンバケットから引き出し、前記第1の容量表示を更新するステップと、
前記動作を遂行するステップにより利用された前記容量に少なくとも部分的に基づいて、前記複数のトークンバケットのうちの第2のトークンバケットから利用された前記容量を引き出し、前記第2のトークンバケットに関連付けられた第2の容量表示を更新するステップと、
を行わせ、
前記第2のトークンバケットは、前記第1のトークンバケットとトークンを共有する親バケットである、
プログラム。
A database management system program for managing capacity consumption,
The program runs on one or more computing nodes having one or more memories in which computer readable instructions are stored,
The computer readable instructions, when executed by the one or more computing nodes, at least in the database management system,
Receiving a request for performing an operation performed on behalf of a customer on the database management system, the request including information indicating a request class;
Selecting a first token bucket having an associated first capacity indication from one or more data structures including a plurality of token buckets based at least in part on the request class;
Determining that the first capacity indication indicates sufficient capacity to perform the operation;
When the first capacity display indicates to be sufficient to the capacitive, and performing the operation,
A step of the capacity that is utilized by the step of performing the operation, and pull out from the first token bucket, to update the first capacity display,
Deriving the used capacity from a second token bucket of the plurality of token buckets and associating with the second token bucket based at least in part on the capacity used by performing the operation Updating the displayed second capacity indication;
Let
The second token bucket is a parent bucket that shares a token with the first token bucket.
program.
前記コンピュータ可読命令は、前記1つ以上のコンピューティングノードによって実行される時に、前記データベース管理システムに、少なくとも、
前記要求クラスと前記第1のトークンバケットとの間の関連付けを示す情報を受信するステップを行わせる、
請求項1に記載のプログラム。
The computer readable instructions, when executed by the one or more computing nodes, at least in the database management system,
Receiving information indicating an association between the request class and the first token bucket;
The program according to claim 1.
前記コンピュータ可読命令は、前記1つ以上のコンピューティングノードによって実行される時に、前記データベース管理システムに、少なくとも、
前記複数のトークンバケットのうちの第2のトークンバケットに関連付けられた第2の容量表示が、前記顧客のために前記動作を遂行するための容量の不足を示すことを決定するステップを行わせる、
請求項1に記載のプログラム。
The computer readable instructions, when executed by the one or more computing nodes, at least in the database management system,
Performing a step of determining that a second capacity indication associated with a second token bucket of the plurality of token buckets indicates a lack of capacity to perform the operation for the customer;
The program according to claim 1.
容量消費を管理するための、コンピュータにより実行される方法であって、前記方法は、
顧客のために遂行される動作を、1つ以上のコンピューティングノード上で遂行させる要求であって、要求クラスを示す情報を含む要求を受信するステップと、
関連付けられた第1の容量表示を有する第1のトークンバケットを、複数のトークンバケットを含む1つ以上のデータ構造から、前記要求クラスに少なくとも部分的に基づいて選択するステップと、
前記第1の容量表示が、前記動作を遂行するための容量に十分であると示すことを決定するステップと、
前記第1の容量表示が、前記容量に十分であると示す場合、前記動作を遂行するステップと、
前記動作を遂行するステップにより利用された容量を、前記第1のトークンバケットから引き出し、前記第1の容量表示を更新するステップと、
前記動作を遂行するステップにより利用された前記容量に少なくとも部分的に基づいて、第2のトークンバケットから利用された前記容量を引き出し、前記第2のトークンバケットに関連付けられた第2の容量表示を更新するステップと、
を含み、
前記第2のトークンバケットは、前記第1のトークンバケットとトークンを共有する親バケットである、
方法。
A computer-implemented method for managing capacity consumption, the method comprising:
Receiving a request to perform an operation performed on behalf of a customer on one or more computing nodes, the request including information indicating a request class;
Selecting a first token bucket having an associated first capacity indication from one or more data structures including a plurality of token buckets based at least in part on the request class;
Determining that the first capacity indication indicates sufficient capacity to perform the operation;
When the first capacity display indicates to be sufficient to the capacitive, and performing the operation,
A step of the capacity that is utilized by the step of performing the operation, and pull out from the first token bucket, to update the first capacity display,
Based on the capacity used by the step of performing the operation, the capacity used is derived from a second token bucket , and a second capacity indication associated with the second token bucket is displayed. A step to update,
Including
The second token bucket is a parent bucket that shares a token with the first token bucket.
Method.
前記動作は、ウェブサービス、ウェブサイトおよびデータベース管理システムのうちの1つ以上で遂行される、
請求項4に記載の方法。
The operation is performed by one or more of a web service, a website, and a database management system.
The method of claim 4.
前記複数のデータ構造からの第2の容量表示が、前記顧客のために前記動作を遂行するための容量の不足を示すことを決定するステップをさらに含む、
請求項4に記載の方法。
Further comprising determining that a second capacity indication from the plurality of data structures indicates a lack of capacity to perform the operation for the customer;
The method of claim 4.
前記複数のデータ構造からの前記第1の容量表示および1つ以上の追加の容量表示は、前記顧客のために前記動作を遂行するための容量を示す前記複数のデータ構造中の1つ以上のメモリ場所を共有する、
請求項4に記載の方法。
The first capacity indication and the one or more additional capacity indications from the plurality of data structures indicate one or more of the plurality of data structures in the plurality of data structures indicating a capacity for performing the operation for the customer. Share memory locations,
The method of claim 4.
前記第1の容量表示は、前記顧客のために動作を遂行するのに利用可能な容量単位の計数を含む、
請求項4に記載の方法。
The first capacity indication includes a count of capacity units available to perform actions for the customer;
The method of claim 4.
前記計数は、割り当てられた容量の蓄積速度に少なくとも部分的に基づいて増大される、
請求項8に記載の方法。
The count is increased based at least in part on the accumulation rate of the allocated capacity;
The method of claim 8.
容量消費を管理するためのシステム用のプログラムであって、
前記プログラムは、コンピュータ可読命令が記憶されている1つ以上のメモリを有する1つ以上のコンピューティングノード上で動作し、
前記コンピュータ可読命令は、前記1つ以上のコンピューティングノードによって実行される時に、前記システムに、少なくとも、
1つ以上の要求クラスを示す情報を受信するステップと、
前記1つ以上の要求クラスと第1の容量表示を含む1つ以上のデータ構造との間のマッピングを示す情報を受信するステップと、
前記マッピングを示す前記情報に基づき、第1のトークンバケットを選択するステップと、
1つ以上のコンピューティングノード上で動作を遂行するための総容量のサブセットを、前記第1の容量表示に割り当てるステップと
前記第1の容量表示が、前記動作を遂行するための容量に十分であると示すことを決定するステップと、
前記第1の容量表示が、前記容量に十分であると示す場合、前記動作を遂行するステップと、
前記動作を遂行するステップにより利用された容量を、前記第1のトークンバケットから引き出し、前記第1の容量表示を更新するステップと、
前記動作を遂行するステップにより利用された前記容量に少なくとも部分的に基づいて、第2のトークンバケットから利用された前記容量を引き出し、前記第2のトークンバケットに関連付けられた第2の容量表示を更新するステップと、
を行わせ、
前記第2のトークンバケットは、前記第1のトークンバケットとトークンを共有する親バケットである、
プログラム。
A system program for managing capacity consumption,
The program runs on one or more computing nodes having one or more memories in which computer readable instructions are stored,
The computer readable instructions, when executed by the one or more computing nodes, at least in the system,
Receiving information indicating one or more request classes;
Receiving information indicative of a mapping between the one or more request classes and one or more data structures including a first capacity indication;
Selecting a first token bucket based on the information indicative of the mapping;
Allocating a subset of the total capacity for performing an operation on one or more computing nodes to the first capacity indication; and the first capacity indication is sufficient for the capacity to perform the operation. Determining to show that there is ,
When the first capacity display indicates to be sufficient to the capacitive, and performing the operation,
A step of the capacity that is utilized by the step of performing the operation, and pull out from the first token bucket, to update the first capacity display,
Based on the capacity used by the step of performing the operation, the capacity used is derived from a second token bucket , and a second capacity indication associated with the second token bucket is displayed. A step to update,
Let
The second token bucket is a parent bucket that shares a token with the first token bucket.
program.
前記コンピュータ可読命令は、前記1つ以上のコンピューティングノードによって実行される時に、前記システムに、少なくとも、
前記1つ以上のコンピューティングノード上のデータベーステーブルを修正する命令を示す情報を受信するステップと、
命令を示す受信した情報に基づいて、前記データベーステーブルに割り当てられた容量を修正するステップと、
を行わせる、
請求項10に記載のプログラム。
The computer readable instructions, when executed by the one or more computing nodes, at least in the system,
Receiving information indicative of instructions to modify a database table on the one or more computing nodes;
Modifying the capacity allocated to the database table based on the received information indicative of instructions;
To do,
The program according to claim 10.
前記コンピュータ可読命令は、前記1つ以上のコンピューティングノードによって実行される時に、前記システムに、少なくとも、
前記データベーステーブルの区分の数に少なくとも部分的に基づいて、総容量の前記サブセットを決定するステップを行わせる、
請求項11に記載のプログラム。
The computer readable instructions, when executed by the one or more computing nodes, at least in the system,
Determining the subset of total capacity based at least in part on the number of partitions in the database table;
The program according to claim 11.
前記コンピュータ可読命令は、前記1つ以上のコンピューティングノードによって実行される時に、前記システムに、少なくとも、
顧客に入力させるための命令を含むユーザインターフェース命令を前記顧客に送信するステップを行わせる、
請求項10に記載のプログラム。
The computer readable instructions, when executed by the one or more computing nodes, at least in the system,
Sending a user interface instruction to the customer including instructions for causing the customer to input,
The program according to claim 10.
JP2016514144A 2013-05-17 2014-05-16 Prioritizing I / O to database workload Active JP6584388B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/897,232 US9262505B2 (en) 2013-05-17 2013-05-17 Input-output prioritization for database workload
US13/897,232 2013-05-17
PCT/US2014/038477 WO2014186756A1 (en) 2013-05-17 2014-05-16 Input-output prioritization for database workload

Publications (2)

Publication Number Publication Date
JP2016528578A JP2016528578A (en) 2016-09-15
JP6584388B2 true JP6584388B2 (en) 2019-10-02

Family

ID=51896648

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016514144A Active JP6584388B2 (en) 2013-05-17 2014-05-16 Prioritizing I / O to database workload

Country Status (6)

Country Link
US (1) US9262505B2 (en)
EP (1) EP2997460A4 (en)
JP (1) JP6584388B2 (en)
CN (1) CN105431815B (en)
CA (1) CA2912691C (en)
WO (1) WO2014186756A1 (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9876853B2 (en) * 2015-08-19 2018-01-23 International Business Machines Corporation Storlet workflow optimization leveraging clustered file system placement optimization features
US10387578B1 (en) * 2015-09-28 2019-08-20 Amazon Technologies, Inc. Utilization limiting for nested object queries
US10963375B1 (en) * 2018-03-23 2021-03-30 Amazon Technologies, Inc. Managing maintenance operations for a distributed system
CN109299190B (en) * 2018-09-10 2020-11-17 华为技术有限公司 Method and device for processing metadata of object in distributed storage system
CN111835655B (en) * 2020-07-13 2022-06-28 北京轻网科技有限公司 Method, device and storage medium for limiting speed of shared bandwidth
CN115578080B (en) * 2022-12-08 2023-04-18 长沙软工信息科技有限公司 Cost reference library workload verification method based on informatization system

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6088693A (en) 1996-12-06 2000-07-11 International Business Machines Corporation Data management system for file and database management
US7027394B2 (en) * 2000-09-22 2006-04-11 Narad Networks, Inc. Broadband system with traffic policing and transmission scheduling
US7421431B2 (en) * 2002-12-20 2008-09-02 Intel Corporation Providing access to system management information
US7406399B2 (en) * 2003-08-26 2008-07-29 Siemens Energy & Automation, Inc. System and method for distributed reporting of machine performance
US7689394B2 (en) * 2003-08-26 2010-03-30 Siemens Industry, Inc. System and method for remotely analyzing machine performance
CN101696659B (en) * 2003-09-02 2014-11-12 株式会社小松制作所 Engine control device
EP1927217B1 (en) * 2005-08-23 2009-12-09 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Aggregated resource reservation for data flows
EP2014742B1 (en) * 2006-04-28 2018-08-08 JP Steel Plantech Co. Glowing coke delivering equipment and method of delivering the same
CN100502315C (en) * 2006-05-18 2009-06-17 华为技术有限公司 Business flow monitoring method and system
JP4717768B2 (en) * 2006-09-20 2011-07-06 富士通テレコムネットワークス株式会社 Token bucket method and router using the same
WO2008121690A2 (en) 2007-03-30 2008-10-09 Packeteer, Inc. Data and control plane architecture for network application traffic management device
US7711789B1 (en) * 2007-12-07 2010-05-04 3 Leaf Systems, Inc. Quality of service in virtual computing environments
US8195832B2 (en) * 2007-12-12 2012-06-05 Alcatel Lucent Facilitating management of layer 2 hardware address table based on packet priority information
JP5107016B2 (en) * 2007-12-17 2012-12-26 Kddi株式会社 Buffer device and program using token bucket
JP5093043B2 (en) * 2008-10-14 2012-12-05 富士通株式会社 Rate monitoring device
US8527947B2 (en) * 2008-12-28 2013-09-03 International Business Machines Corporation Selective notifications according to merge distance for software version branches within a software configuration management system
US8326149B2 (en) 2009-01-20 2012-12-04 Pmc Sierra Ltd. Dynamic bandwidth allocation in a passive optical network in which different optical network units transmit at different rates
US8713060B2 (en) * 2009-03-31 2014-04-29 Amazon Technologies, Inc. Control service for relational data management
US8335123B2 (en) * 2009-11-20 2012-12-18 Sandisk Technologies Inc. Power management of memory systems
US8375047B2 (en) 2010-03-31 2013-02-12 Emc Corporation Apparatus and method for query prioritization in a shared nothing distributed database
US8190593B1 (en) * 2010-04-14 2012-05-29 A9.Com, Inc. Dynamic request throttling
US8201350B2 (en) * 2010-05-28 2012-06-19 Caterpillar Inc. Machine bucket
US8661120B2 (en) * 2010-09-21 2014-02-25 Amazon Technologies, Inc. Methods and systems for dynamically managing requests for computing capacity
US9069616B2 (en) * 2011-09-23 2015-06-30 Google Inc. Bandwidth throttling of virtual disks

Also Published As

Publication number Publication date
US9262505B2 (en) 2016-02-16
JP2016528578A (en) 2016-09-15
CA2912691A1 (en) 2014-11-20
EP2997460A4 (en) 2017-01-25
US20140344312A1 (en) 2014-11-20
EP2997460A1 (en) 2016-03-23
WO2014186756A1 (en) 2014-11-20
CN105431815A (en) 2016-03-23
CN105431815B (en) 2019-02-01
CA2912691C (en) 2020-06-16

Similar Documents

Publication Publication Date Title
US20200167197A1 (en) Systems, methods, and apparatuses for implementing a scheduler with preemptive termination of existing workloads to free resources for high priority items
JP6584388B2 (en) Prioritizing I / O to database workload
US10614066B2 (en) Selecting resource configurations for query execution
US10169090B2 (en) Facilitating tiered service model-based fair allocation of resources for application servers in multi-tenant environments
US9268605B2 (en) Mechanism for facilitating sliding window resource tracking in message queues for fair management of resources for application servers in an on-demand services environment
US20200007456A1 (en) Computerized methods and systems for managing cloud computer services
US11010197B2 (en) Dynamic allocation of physical computing resources amongst virtual machines
CN108667867B (en) Data storage method and device
US9613037B2 (en) Resource allocation for migration within a multi-tiered system
US9438665B1 (en) Scheduling and tracking control plane operations for distributed storage systems
US10146814B1 (en) Recommending provisioned throughput capacity for generating a secondary index for an online table
US10135703B1 (en) Generating creation performance metrics for a secondary index of a table
EP3049940B1 (en) Data caching policy in multiple tenant enterprise resource planning system
WO2023196042A1 (en) Data flow control in distributed computing systems
US9898614B1 (en) Implicit prioritization to rate-limit secondary index creation for an online table
Hsu et al. A proactive, cost-aware, optimized data replication strategy in geo-distributed cloud datastores
Nascimento et al. Data quality monitoring of cloud databases based on data quality SLAs
Fareghzadeh An architecture supervisor scheme toward performance differentiation and optimization in cloud systems
US11327937B1 (en) Determining indexing progress for a table in a distributed data store
Thu Dynamic replication management scheme for effective cloud storage
US11983153B2 (en) Multi-tenant database resource utilization
Zeng Resource sharing for multi-tenant nosql data store in cloud
Xu Elastic techniques to handle dynamism in real-time data processing systems
Wang et al. A QoS evaluation model in the environment of cloud computing
Bougé et al. Managing consistency for big data applications on clouds: Tradeoffs and self-adaptiveness

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160401

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170130

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170427

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170630

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170711

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180509

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20180516

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20180720

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190424

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20190508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190530

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190903

R150 Certificate of patent or registration of utility model

Ref document number: 6584388

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