cURL で Riak バケットを作成できるようにしたいと考えています。私はオンラインで検索してきましたが、それを行う方法が見つからないようです。ドライバーで簡単に行う方法があることは知っていますが、作業中の Saas アプリケーションでは cURL で行う必要があります。
3 に答える
必要なバケットプロパティをjsonオブジェクトとして渡すPUTを実行します。例:
curl -v http://riak3.local:8098/riak/newBucket -X PUT -H Content-Type:application/json --data-binary '{"props":{"n_val":5}}'
ドキュメントには、より完全な詳細があります。
もう 1 つ - 覚えておくべき重要なことは、(CURL またはクライアント API を介して) 呼び出しを使用してバケットを明示的に「作成」する方法がないことです。
上記の呼び出しを介してのみ、カスタム バケットを作成できます。
その理由は、バケットは単にキーのプレフィックスに過ぎないからです。バケットを追跡するオブジェクトは、Riak システムのどこにもありません。どこかにファイルがない、メモリに変数がない、またはそのようなものはありません。これが、単純な「バケットのリスト」コマンドが非常に高価な理由です。Riak は文字通り、クラスタ内のすべてのキーを調べ、キーのプレフィックスを調べてバケットのリストを作成する必要があります。
実際のオブジェクトとして存在するのは、デフォルト設定以外のバケット、つまりカスタム バケットだけです。それが上記のcurlコマンドが行うことです.Riakがそのバケットに電話がかかってきた場合に参照するために、いくつかのデフォルト以外の設定を追跡します.
とにかく、この話の教訓は、通常の運用過程でバケットを作成する必要がないということです。それらへの書き込みを開始するだけで、それらが生成されます (繰り返しますが、バケット プレフィックスを持つキーが生成されるという意味で、これは、高価な「リスト バケット」呼び出しによって反復できることを意味します)。
カスタム バケットの呼び出しを発行するだけで済みます (また、クラスター内に作成されるカスタム バケットの数には実質的な制限があり、約 9000 であるため、あまり多くのことを行いたくありません)。
また、存在しないバケットに新しいオブジェクトを追加すると、そのバケットがその場で作成されることもわかりました。
バケットにキーを追加すると、バケットが自動的に作成されることに注意してください。バケットを明示的に「作成」する必要はありません (バケットとそのプロパティについては、ページの下の方で詳しく説明します)。