5. オブジェクトの保存

5. オブジェクトの保存

この機能はプログラム中でインスタンス化したオブジェクトをそのままokuyamaに保存する機能です。OkuyamaClientのsetObjectValueにて登録を、getObjectValueにて取得する事が可能です。通常のsetValue、getValueではStringオブジェクトしか扱えないのに対して、この機能ではJavaのSerializableインターフェースの実装クラスであれば全て扱う事ができます。登録、取得時に変換の必要のないデータを利用する事ができるため、取り出したデータが即プログラム内で利用可能なところが、この機能を使用する利点です。しかし、利用言語に依存しますので、Javaのクライアントで登録したオブジェクトをPHPのクライアントから取り出す事などはできません。

この機能を利用するためのOkuyamaClientのメソッド名はデータを登録するメソッドがsetObjectValueとなり、取得メソッドが、getObjectValue、getObjectValueAndUpdateExpireTimeになります。

コード5(クリック拡大)

6. Tagを使ったデータ操作

次はokuyamaの特徴的な機能の1つである、Tagを使ったデータ操作です。Tagの複数のデータに対して付加する事で、同一のTagが付加されたデータをまとめて取得する事が可能な機能です。また1つのデータにいくつでも付加する事が可能です。今回は、いくつかある取得方法について詳しく解説します。

取得方法は大きく以下の2種類に分類する事が可能です。

  • 1回の処理呼び出しでTagに紐付くデータを全てokuyamaサーバ側から取得する方法
  • 取得依頼を行い、受け取ったOkuyamaResultSetから紐付くデータを順次取り出す方法

まず1つ目の方法ですが、この方法は紐付くデータを1回でクライアント側に取得するので、取得後はクライアント側のサーバ上のメモリで処理できます。そのため、関連するデータを処理する際にokuyamaサーバ側との通信処理が発生する事なく、高速に処理する事が可能です。しかし、一度にメモリ上に乗せる事が可能なデータ量が取得できる限界だという事に注意する必要があります。また一度に大量のデータをやり取りすれば、ネットワーク資源も大量に消費する事になるので、対象とするデータ量との関係を意識する事も必要です。

対してもう1つの方法ですが、こちらは取得依頼を行い、OkuyamaResultSetを受け取り、そこから紐付くデータを、カーソルを動かすように順次取り出していきます。この方法は大量のデータが対象になった場合でも一度に取得をするわけではないため、メモリ資源、ネットワーク資源に大きな負担を掛けずに取得する事が可能です。その代わりに、カーソル移動時にデータをokuyamaサーバから取得するため、処理速度は最初の方法に比べると落ちます(※実際はカーソルを1つ移動するたびに取得を行っているわけではなく事前に一定数単位で取得して内部でキャッシュし、カーソル移動事にキャッシュから返却しています)。

両方とも複数のTagを指定してANDやORでの取得に対応しています。また、OkuyamaResultSetを利用する後者は取得時にKeyやValueに対してフィルタリングの条件をして取得するデータを限定する事が可能です。

この機能を利用するためのOkuyamaClientのメソッド名は、一度にメモリ上に取得するメソッドがgetTagKeys、getTagValues、getMultiTagKeys、getMultiTagValuesとなり、後者のOkuyamaResultSetを取得するメソッドがgetTagKeysResult、getMultiTagKeysResultになります。

コード6(クリックで拡大)

まとめ

連載最終回となる今回はアプリ開発のTipsをご紹介してきましたが、いかがだったでしょうか?コードはそのまま利用できますので、ぜひお手持ちの環境で実践いただければと思います。

okuyamaはversion0.9.0でhadoop対応やキューの実現など、今回ご紹介できなかった機能も盛り込んでいます。今後も継続して機能追加や改善を続ける予定ですので、もしご要望や、ご意見などあればぜひ筆者のtwitterアカウント(@okuyamaoo)にご連絡をいただければと思います。

最後までお読みいただきありがとうございました。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30