SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
IBM Cloudant の細かすぎて
伝わりにくい機能(その2)
データの変更履歴が自動管理できるらしい
BMXUG つきじ #4
IBM Cloudant 超活用法! 禁断の「アレ」に挑戦してみました。。
https://bmxug.connpass.com/event/74656/
IBM Cloudant
• Apache CouchDB をベースに IBM が DBaaS 化して IBM Cloud から提供し
ているデータベースサービス
• Apache CouchDB の最新バージョンは 2.1.0
• IBM Cloudant は CouchDB 2.0.0 ベース
• この後に紹介する Design Document 機能は Apache CouchDB が所有している機能
• JSON ドキュメントをスケーラブルに格納する高速データベース
• 分散データベース
• 検索、トランザクション処理は苦手
• 「とにかく大量のデータを保存する」用途向き(ログ、IoT、・・・)
• Design Document という特殊なドキュメントで、設計要素を管理する
• View / List / Show
https://bmxug.connpass.com/event/74656/
→ 2.1.1
→ 2.2.0
2018/12 現在現在現在現在
自己紹介
日本アイ・ビー・エム クラウドエバンジェリスト
Twitter: @dotnsf
Blog: http://dotnsf.blog.jp/
Email: dotnsf@jp.ibm.com
趣味: マンホール
木村 桂(きむら けい)
プログラマー
マンホールマップ: http://manholemap.juge.me/
Cloudant NoSQL データベース
使ってますか?
mongoDB でもいいですか?でもいいですか?でもいいですか?でもいいですか? 別にいいよ。
でもね、、、
Cloudant で幸せになれること
• IBM Cloud のライトプランなら無料で 1GB まで使える
• デザインドキュメントでデータの UI も定義できる
• https://bmxug.connpass.com/event/74656/ 参照
• 単体で日本語全文検索できる(インデックスが日本語対応済み)
:
:
• ビルトインの変更履歴管理変更履歴管理変更履歴管理変更履歴管理機能
Cloudant のドキュメント操作 REST API 例
API 説明説明説明説明 リクエスト例リクエスト例リクエスト例リクエスト例 結果例結果例結果例結果例
GET /{db}/{_id} データベースから _id を指
定してドキュメントを1件取
得する
GET /db/123 {
_id: "123",
_rev: "1-1234",
name: "Kimura"
}
POST /{db} データベースにドキュメン
トを追加する
POST /db
{ name: "dotnsf" }
{
ok: true,
id: "456",
rev: "1-5678"
}
PUT /{db}/{_id} データベース内の既存ド
キュメントを更新する
PUT /db/123
{ rev: "1-1234", name: "木村" }
{
ok: true,
id: "123",
rev: "2-2345"
}
DELETE
/{db}/{_id}?rev={_rev}
データベース内の既存ド
キュメントを削除する(ソフ
トデリート)
DELETE /db/123?rev=2-2345 {
ok: true,
id: "123",
rev: "2-2345"
}
https://console.bluemix.net/docs/services/Cloudant/api/index.html
"_rev" ?
この _rev がリビジョンを管理している
{
_id: 1,
_rev: 1,
country: "Japan",
capital: "Tokyo"
}
{
_id: 2,
_rev: 1,
country: "USA",
capital: "N.Y."
}
{
_id: 3,
_rev: 1,
country: "China",
capital: "Beijing"
}
{
_id: 4,
_rev: 1,
country: "Spain",
capital: "Madrid"
}
{
_id: 5,
_rev: 1,
country: "France",
capital: "Paris"
}
{
_id: 6,
_rev: 1,
country: "Italy",
capital: "Roma"
}
{
_id: 2,
_rev: 2,
country: "USA",
capital: "Washington DC"
}
{
_id: 6,
_rev: 2,
country: "Italy",
capital: "Rome"
}
{
_id: 1,
_rev: 2,
country: "日本",
capital: "東京"
}
{
_id: 1,
_rev: 3,
country: "Japan",
capital: "Tokyo"
}
リビジョン(_rev)の値は自動管理 過去のリビジョンのデータも保存されている
実は同じ _id のドキュメントが複数存在している
(ただし最新リビジョンのものが有効とみなされる)
Cloudant のドキュメント操作 REST API 例
API 説明説明説明説明 リクエスト例リクエスト例リクエスト例リクエスト例 結果例結果例結果例結果例
GET /{db}/{_id} データベースから _id を指
定してドキュメントの最新
リビジョンの内容を1件取
得する
GET /db/123 {
_id: "123",
_rev: "1-1234",
name: "Kimura"
}
POST /{db} データベースにドキュメン
トとリビジョン管理を追加
する
POST /db
{ name: "dotnsf" }
{
ok: true,
id: "456",
rev: "1-5678"
}
PUT /{db}/{_id} データベース内の既存ド
キュメントのリビジョンを追
加する
PUT /db/123
{ rev: "1-1234", name: "木村" }
{
ok: true,
id: "123",
rev: "2-2345"
}
DELETE
/{db}/{_id}?rev={_rev}
データベース内の既存ド
キュメントをリビジョンを指
定して削除する(ソフトデ
リート)
DELETE /db/123?rev=2-2345 {
ok: true,
id: "123",
rev: "2-2345"
}
https://console.bluemix.net/docs/services/Cloudant/api/index.html
「更新」ではなく「更新」ではなく「更新」ではなく「更新」ではなく
「追加」している「追加」している「追加」している「追加」している
Cloudant のドキュメント操作 REST API 例
API 説明説明説明説明 リクエスト例リクエスト例リクエスト例リクエスト例 結果例結果例結果例結果例
GET /{db}/{_id} データベースから _id を指
定してドキュメントの全リビ
ジョンを取得する
GET /db/123?revs_info=true {
_id: "123",
_rev: "2-2345",
name: "Kimura",
_revs_info: [
{ id: "123", rev: "1-1234" },
{ id: "123", rev: "2-2345" }
]
}
データベースから _id と
_rev を指定してドキュメン
トの特定リビジョンの内容
を1件取得する
GET /db/123?rev=1-1234 {
_id: "123",
_rev: "1-1234",
name: "Kimura"
}
https://console.bluemix.net/docs/services/Cloudant/api/index.html
全リビジョン一覧全リビジョン一覧全リビジョン一覧全リビジョン一覧
特定リビジョン特定リビジョン特定リビジョン特定リビジョン
の詳細の詳細の詳細の詳細
デモ
https://github.com/dotnsf/cloudant_update_history
まとめ
• IBM Cloudant のドキュメントは _rev でリビジョンが自動管理されている
• Update 時も、実際は同じ _id と新しい _rev で新規作成している
• Delete 時は最新リビジョンのドキュメントがソフトデリートされる
• 論理的には _id はユニーク ID であるが、物理的には _id と _rev でユニーク ID
になる
• 特殊なパラメータをつけて API を実行することで古いリビジョンのドキュ
メントを取得することができる
• IBM Cloudant をデータストアに採用するだけで、ドキュメントの変更履
歴管理を行うことができる。
おまけ1
• IBM Cloudant(CouchDB) の文書をハードデリートする API
• POST /db/_purge
(http://docs.couchdb.org/en/stable/api/database/misc.html)
• npm(@cloudant/cloudant) では見当たらない・・・
• ただし、IBM Cloudant では未実装らしい・・・
$ curl -XPOST 'https://xxxxxxxxx-bluemix.cloudant.com/db20181130/_purge' -u 'xxxxxxxxx-bluemix:password' -H
'Content-Type: application/json' -d '{"_id":["_rev"]}'
{"error":"not_implemented","reason":"this feature is not yet implemented"}
おまけ2
• 本日の内容を IBM Cloud アドベントカレンダー(12/3)で紹介してます
:
https://qiita.com/advent-calendar/2018/ibmcloud
おまけ2
• 12:50 - 14:40 ブロックチェーン体験ハンズオンやります!
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい

Más contenido relacionado

La actualidad más candente

2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~Daisuke Masubuchi
 
Bluemix大勉強会 - サーバーレス・アプリ開発のはじめかた
Bluemix大勉強会 - サーバーレス・アプリ開発のはじめかたBluemix大勉強会 - サーバーレス・アプリ開発のはじめかた
Bluemix大勉強会 - サーバーレス・アプリ開発のはじめかたSeiichiro Imazeki
 
20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NET20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NETTakayoshi Tanaka
 
DockerCon '17 Feedback and Introduction of Longhorn at Rancher JP
DockerCon '17 Feedback and Introduction of Longhorn at Rancher JPDockerCon '17 Feedback and Introduction of Longhorn at Rancher JP
DockerCon '17 Feedback and Introduction of Longhorn at Rancher JPGo Chiba
 
Node-REDのフローをバックアップしよう
Node-REDのフローをバックアップしようNode-REDのフローをバックアップしよう
Node-REDのフローをバックアップしようKota Suizu
 
ぼうけんにでかけよう Kubernetes KEDA
ぼうけんにでかけよう Kubernetes KEDAぼうけんにでかけよう Kubernetes KEDA
ぼうけんにでかけよう Kubernetes KEDATsukasa Kato
 
PythonによるAzureサーバレスアプリケーション開発 / Serverless Application Development with Python
PythonによるAzureサーバレスアプリケーション開発 / Serverless Application Development with PythonPythonによるAzureサーバレスアプリケーション開発 / Serverless Application Development with Python
PythonによるAzureサーバレスアプリケーション開発 / Serverless Application Development with PythonYoichi Kawasaki
 
HashiCorp Vault 紹介
HashiCorp Vault 紹介HashiCorp Vault 紹介
HashiCorp Vault 紹介hashicorpjp
 
Myfirst buildpack session_mgmt_20161201
Myfirst buildpack session_mgmt_20161201Myfirst buildpack session_mgmt_20161201
Myfirst buildpack session_mgmt_20161201Tomohiro Ichimura
 
Deep Security on Bluemix IaaSによるセキュリティ対策について
Deep Security on Bluemix IaaSによるセキュリティ対策についてDeep Security on Bluemix IaaSによるセキュリティ対策について
Deep Security on Bluemix IaaSによるセキュリティ対策についてBMXUG
 
6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後Shingo Sasaki
 
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)日本マイクロソフト株式会社
 
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜VirtualTech Japan Inc.
 
C# でブロックチェーン実装
C# でブロックチェーン実装C# でブロックチェーン実装
C# でブロックチェーン実装Yuto Takei
 
WWCT ラズパイ Bluemix 講習資料
WWCT ラズパイ Bluemix 講習資料WWCT ラズパイ Bluemix 講習資料
WWCT ラズパイ Bluemix 講習資料Masaya Fujita
 
20160115nodered design patterns
20160115nodered design patterns20160115nodered design patterns
20160115nodered design patternsBMXUG
 
GitLab Auto DevOps with Container CI/CD
GitLab Auto DevOps with Container CI/CDGitLab Auto DevOps with Container CI/CD
GitLab Auto DevOps with Container CI/CDShingo Kitayama
 
HashiCorp Consul 紹介
HashiCorp Consul 紹介HashiCorp Consul 紹介
HashiCorp Consul 紹介hashicorpjp
 

La actualidad más candente (20)

2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
 
Bluemix大勉強会 - サーバーレス・アプリ開発のはじめかた
Bluemix大勉強会 - サーバーレス・アプリ開発のはじめかたBluemix大勉強会 - サーバーレス・アプリ開発のはじめかた
Bluemix大勉強会 - サーバーレス・アプリ開発のはじめかた
 
20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NET20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NET
 
DockerCon '17 Feedback and Introduction of Longhorn at Rancher JP
DockerCon '17 Feedback and Introduction of Longhorn at Rancher JPDockerCon '17 Feedback and Introduction of Longhorn at Rancher JP
DockerCon '17 Feedback and Introduction of Longhorn at Rancher JP
 
Hyperledgerプロジェクト概観
Hyperledgerプロジェクト概観Hyperledgerプロジェクト概観
Hyperledgerプロジェクト概観
 
ゼロから始めるQ#
ゼロから始めるQ#ゼロから始めるQ#
ゼロから始めるQ#
 
Node-REDのフローをバックアップしよう
Node-REDのフローをバックアップしようNode-REDのフローをバックアップしよう
Node-REDのフローをバックアップしよう
 
ぼうけんにでかけよう Kubernetes KEDA
ぼうけんにでかけよう Kubernetes KEDAぼうけんにでかけよう Kubernetes KEDA
ぼうけんにでかけよう Kubernetes KEDA
 
PythonによるAzureサーバレスアプリケーション開発 / Serverless Application Development with Python
PythonによるAzureサーバレスアプリケーション開発 / Serverless Application Development with PythonPythonによるAzureサーバレスアプリケーション開発 / Serverless Application Development with Python
PythonによるAzureサーバレスアプリケーション開発 / Serverless Application Development with Python
 
HashiCorp Vault 紹介
HashiCorp Vault 紹介HashiCorp Vault 紹介
HashiCorp Vault 紹介
 
Myfirst buildpack session_mgmt_20161201
Myfirst buildpack session_mgmt_20161201Myfirst buildpack session_mgmt_20161201
Myfirst buildpack session_mgmt_20161201
 
Deep Security on Bluemix IaaSによるセキュリティ対策について
Deep Security on Bluemix IaaSによるセキュリティ対策についてDeep Security on Bluemix IaaSによるセキュリティ対策について
Deep Security on Bluemix IaaSによるセキュリティ対策について
 
6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後
 
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)
 
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
 
C# でブロックチェーン実装
C# でブロックチェーン実装C# でブロックチェーン実装
C# でブロックチェーン実装
 
WWCT ラズパイ Bluemix 講習資料
WWCT ラズパイ Bluemix 講習資料WWCT ラズパイ Bluemix 講習資料
WWCT ラズパイ Bluemix 講習資料
 
20160115nodered design patterns
20160115nodered design patterns20160115nodered design patterns
20160115nodered design patterns
 
GitLab Auto DevOps with Container CI/CD
GitLab Auto DevOps with Container CI/CDGitLab Auto DevOps with Container CI/CD
GitLab Auto DevOps with Container CI/CD
 
HashiCorp Consul 紹介
HashiCorp Consul 紹介HashiCorp Consul 紹介
HashiCorp Consul 紹介
 

Similar a IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい

AWSアップデート2012.12.01(個人開発者向け)+Glacier
AWSアップデート2012.12.01(個人開発者向け)+GlacierAWSアップデート2012.12.01(個人開発者向け)+Glacier
AWSアップデート2012.12.01(個人開発者向け)+GlacierYasuhiro Araki, Ph.D
 
Amazon Web Services 最新事例集
Amazon Web Services 最新事例集Amazon Web Services 最新事例集
Amazon Web Services 最新事例集SORACOM, INC
 
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうHTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうyoshikawa_t
 
AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -SORACOM, INC
 
Ultimate SharePoint Infrastructure Best Practices - Japanese Version - #JPSPS
Ultimate SharePoint Infrastructure Best Practices - Japanese Version - #JPSPSUltimate SharePoint Infrastructure Best Practices - Japanese Version - #JPSPS
Ultimate SharePoint Infrastructure Best Practices - Japanese Version - #JPSPSMichael Noel
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンKazuyuki Miyake
 
Google Compute EngineとPipe API
Google Compute EngineとPipe APIGoogle Compute EngineとPipe API
Google Compute EngineとPipe APImaruyama097
 
Google Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline APIGoogle Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline APImaruyama097
 
AWS Black Belt Techシリーズ AWS re:Invent 2014 最新情報のアップデート
AWS Black Belt Techシリーズ  AWS re:Invent 2014 最新情報のアップデートAWS Black Belt Techシリーズ  AWS re:Invent 2014 最新情報のアップデート
AWS Black Belt Techシリーズ AWS re:Invent 2014 最新情報のアップデートAmazon Web Services Japan
 
Amazon dynamo db、cloudant、blockchainの紹介 20160706
Amazon dynamo db、cloudant、blockchainの紹介 20160706Amazon dynamo db、cloudant、blockchainの紹介 20160706
Amazon dynamo db、cloudant、blockchainの紹介 20160706Tsuyoshi Hirayama
 
OSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションOSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションDaisuke Masubuchi
 
Microsoft Azure build & ignight update summary
Microsoft Azure build & ignight update summary Microsoft Azure build & ignight update summary
Microsoft Azure build & ignight update summary Hirano Kazunori
 
aws mackerel twilio_handson_public
aws mackerel twilio_handson_publicaws mackerel twilio_handson_public
aws mackerel twilio_handson_publicTomoaki Sakatoku
 
Moot2013 moca ver0.3
Moot2013 moca ver0.3Moot2013 moca ver0.3
Moot2013 moca ver0.3科 黄
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門じゅん なかざ
 

Similar a IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい (20)

AWSアップデート2012.12.01(個人開発者向け)+Glacier
AWSアップデート2012.12.01(個人開発者向け)+GlacierAWSアップデート2012.12.01(個人開発者向け)+Glacier
AWSアップデート2012.12.01(個人開発者向け)+Glacier
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
Amazon Web Services 最新事例集
Amazon Web Services 最新事例集Amazon Web Services 最新事例集
Amazon Web Services 最新事例集
 
Nginx
NginxNginx
Nginx
 
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうHTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろう
 
AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -
 
20120409 aws meister-reloaded-dynamo-db
20120409 aws meister-reloaded-dynamo-db20120409 aws meister-reloaded-dynamo-db
20120409 aws meister-reloaded-dynamo-db
 
Ultimate SharePoint Infrastructure Best Practices - Japanese Version - #JPSPS
Ultimate SharePoint Infrastructure Best Practices - Japanese Version - #JPSPSUltimate SharePoint Infrastructure Best Practices - Japanese Version - #JPSPS
Ultimate SharePoint Infrastructure Best Practices - Japanese Version - #JPSPS
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
 
Google Compute EngineとPipe API
Google Compute EngineとPipe APIGoogle Compute EngineとPipe API
Google Compute EngineとPipe API
 
Google Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline APIGoogle Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline API
 
AWS Black Belt Techシリーズ AWS re:Invent 2014 最新情報のアップデート
AWS Black Belt Techシリーズ  AWS re:Invent 2014 最新情報のアップデートAWS Black Belt Techシリーズ  AWS re:Invent 2014 最新情報のアップデート
AWS Black Belt Techシリーズ AWS re:Invent 2014 最新情報のアップデート
 
20170413 aws–windows users meetup
20170413 aws–windows users meetup20170413 aws–windows users meetup
20170413 aws–windows users meetup
 
Amazon dynamo db、cloudant、blockchainの紹介 20160706
Amazon dynamo db、cloudant、blockchainの紹介 20160706Amazon dynamo db、cloudant、blockchainの紹介 20160706
Amazon dynamo db、cloudant、blockchainの紹介 20160706
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 
OSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションOSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーション
 
Microsoft Azure build & ignight update summary
Microsoft Azure build & ignight update summary Microsoft Azure build & ignight update summary
Microsoft Azure build & ignight update summary
 
aws mackerel twilio_handson_public
aws mackerel twilio_handson_publicaws mackerel twilio_handson_public
aws mackerel twilio_handson_public
 
Moot2013 moca ver0.3
Moot2013 moca ver0.3Moot2013 moca ver0.3
Moot2013 moca ver0.3
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
 

Más de K Kimura

ThinkPad を自慢できると聞いてやってきました
ThinkPad を自慢できると聞いてやってきましたThinkPad を自慢できると聞いてやってきました
ThinkPad を自慢できると聞いてやってきましたK Kimura
 
IBM FamilyDay 2022 - 帰ってきた LINE 手描きスタンプ
IBM FamilyDay 2022 - 帰ってきた LINE 手描きスタンプIBM FamilyDay 2022 - 帰ってきた LINE 手描きスタンプ
IBM FamilyDay 2022 - 帰ってきた LINE 手描きスタンプK Kimura
 
「プライベート版 Heroku」の "dokku" は Cloud Foundry 代替としてどこまで使えるか?
「プライベート版 Heroku」の "dokku" は Cloud Foundry 代替としてどこまで使えるか?「プライベート版 Heroku」の "dokku" は Cloud Foundry 代替としてどこまで使えるか?
「プライベート版 Heroku」の "dokku" は Cloud Foundry 代替としてどこまで使えるか?K Kimura
 
LINE お絵描きスタンプが NFT 対応するかも
LINE お絵描きスタンプが NFT 対応するかもLINE お絵描きスタンプが NFT 対応するかも
LINE お絵描きスタンプが NFT 対応するかもK Kimura
 
ICFO2021 コロナ時代のオンラインハンズオン体験
ICFO2021   コロナ時代のオンラインハンズオン体験ICFO2021   コロナ時代のオンラインハンズオン体験
ICFO2021 コロナ時代のオンラインハンズオン体験K Kimura
 
IBM Family Day 2020 - LINE で手描きスタンプに挑戦!
IBM Family Day 2020 - LINE で手描きスタンプに挑戦!IBM Family Day 2020 - LINE で手描きスタンプに挑戦!
IBM Family Day 2020 - LINE で手描きスタンプに挑戦!K Kimura
 
マンホールマップ10周年 20200725
マンホールマップ10周年 20200725マンホールマップ10周年 20200725
マンホールマップ10周年 20200725K Kimura
 
MashupAward6 Manholemap(2010)
MashupAward6 Manholemap(2010)MashupAward6 Manholemap(2010)
MashupAward6 Manholemap(2010)K Kimura
 
スライドパズルハンズオン資料
スライドパズルハンズオン資料スライドパズルハンズオン資料
スライドパズルハンズオン資料K Kimura
 
ユーザー投稿型位置情報プロットシステム - マンホールマップ
ユーザー投稿型位置情報プロットシステム - マンホールマップユーザー投稿型位置情報プロットシステム - マンホールマップ
ユーザー投稿型位置情報プロットシステム - マンホールマップK Kimura
 
Scratch でゲームプログラミング
Scratch でゲームプログラミングScratch でゲームプログラミング
Scratch でゲームプログラミングK Kimura
 
空耳アワーマシーンを作ってみた
空耳アワーマシーンを作ってみた空耳アワーマシーンを作ってみた
空耳アワーマシーンを作ってみたK Kimura
 
生まれ変わるマンホールマップ
生まれ変わるマンホールマップ生まれ変わるマンホールマップ
生まれ変わるマンホールマップK Kimura
 
地図データでレースゲームを作って遊ぼう!
地図データでレースゲームを作って遊ぼう!地図データでレースゲームを作って遊ぼう!
地図データでレースゲームを作って遊ぼう!K Kimura
 
AI先生と外国語会話を練習しよう!
AI先生と外国語会話を練習しよう!AI先生と外国語会話を練習しよう!
AI先生と外国語会話を練習しよう!K Kimura
 
IBM Watson IoT を用いた遠隔ゲームコントローラーと Node-RED による簡易カスタマイズによる実現
IBM Watson IoT を用いた遠隔ゲームコントローラーと Node-RED による簡易カスタマイズによる実現IBM Watson IoT を用いた遠隔ゲームコントローラーと Node-RED による簡易カスタマイズによる実現
IBM Watson IoT を用いた遠隔ゲームコントローラーと Node-RED による簡易カスタマイズによる実現K Kimura
 
「テトリスを作ってスマホで振って遊ぼう!」ハンズオン資料
「テトリスを作ってスマホで振って遊ぼう!」ハンズオン資料「テトリスを作ってスマホで振って遊ぼう!」ハンズオン資料
「テトリスを作ってスマホで振って遊ぼう!」ハンズオン資料K Kimura
 
LINE お絵描きアプリハンズオン 20190519
LINE お絵描きアプリハンズオン 20190519LINE お絵描きアプリハンズオン 20190519
LINE お絵描きアプリハンズオン 20190519K Kimura
 
LINE お絵描きハンズオン 2019.04.26
LINE お絵描きハンズオン 2019.04.26LINE お絵描きハンズオン 2019.04.26
LINE お絵描きハンズオン 2019.04.26K Kimura
 
Hyperledger Hands-on 2019-03-30 @ Singularity HIVE
Hyperledger Hands-on 2019-03-30 @ Singularity HIVEHyperledger Hands-on 2019-03-30 @ Singularity HIVE
Hyperledger Hands-on 2019-03-30 @ Singularity HIVEK Kimura
 

Más de K Kimura (20)

ThinkPad を自慢できると聞いてやってきました
ThinkPad を自慢できると聞いてやってきましたThinkPad を自慢できると聞いてやってきました
ThinkPad を自慢できると聞いてやってきました
 
IBM FamilyDay 2022 - 帰ってきた LINE 手描きスタンプ
IBM FamilyDay 2022 - 帰ってきた LINE 手描きスタンプIBM FamilyDay 2022 - 帰ってきた LINE 手描きスタンプ
IBM FamilyDay 2022 - 帰ってきた LINE 手描きスタンプ
 
「プライベート版 Heroku」の "dokku" は Cloud Foundry 代替としてどこまで使えるか?
「プライベート版 Heroku」の "dokku" は Cloud Foundry 代替としてどこまで使えるか?「プライベート版 Heroku」の "dokku" は Cloud Foundry 代替としてどこまで使えるか?
「プライベート版 Heroku」の "dokku" は Cloud Foundry 代替としてどこまで使えるか?
 
LINE お絵描きスタンプが NFT 対応するかも
LINE お絵描きスタンプが NFT 対応するかもLINE お絵描きスタンプが NFT 対応するかも
LINE お絵描きスタンプが NFT 対応するかも
 
ICFO2021 コロナ時代のオンラインハンズオン体験
ICFO2021   コロナ時代のオンラインハンズオン体験ICFO2021   コロナ時代のオンラインハンズオン体験
ICFO2021 コロナ時代のオンラインハンズオン体験
 
IBM Family Day 2020 - LINE で手描きスタンプに挑戦!
IBM Family Day 2020 - LINE で手描きスタンプに挑戦!IBM Family Day 2020 - LINE で手描きスタンプに挑戦!
IBM Family Day 2020 - LINE で手描きスタンプに挑戦!
 
マンホールマップ10周年 20200725
マンホールマップ10周年 20200725マンホールマップ10周年 20200725
マンホールマップ10周年 20200725
 
MashupAward6 Manholemap(2010)
MashupAward6 Manholemap(2010)MashupAward6 Manholemap(2010)
MashupAward6 Manholemap(2010)
 
スライドパズルハンズオン資料
スライドパズルハンズオン資料スライドパズルハンズオン資料
スライドパズルハンズオン資料
 
ユーザー投稿型位置情報プロットシステム - マンホールマップ
ユーザー投稿型位置情報プロットシステム - マンホールマップユーザー投稿型位置情報プロットシステム - マンホールマップ
ユーザー投稿型位置情報プロットシステム - マンホールマップ
 
Scratch でゲームプログラミング
Scratch でゲームプログラミングScratch でゲームプログラミング
Scratch でゲームプログラミング
 
空耳アワーマシーンを作ってみた
空耳アワーマシーンを作ってみた空耳アワーマシーンを作ってみた
空耳アワーマシーンを作ってみた
 
生まれ変わるマンホールマップ
生まれ変わるマンホールマップ生まれ変わるマンホールマップ
生まれ変わるマンホールマップ
 
地図データでレースゲームを作って遊ぼう!
地図データでレースゲームを作って遊ぼう!地図データでレースゲームを作って遊ぼう!
地図データでレースゲームを作って遊ぼう!
 
AI先生と外国語会話を練習しよう!
AI先生と外国語会話を練習しよう!AI先生と外国語会話を練習しよう!
AI先生と外国語会話を練習しよう!
 
IBM Watson IoT を用いた遠隔ゲームコントローラーと Node-RED による簡易カスタマイズによる実現
IBM Watson IoT を用いた遠隔ゲームコントローラーと Node-RED による簡易カスタマイズによる実現IBM Watson IoT を用いた遠隔ゲームコントローラーと Node-RED による簡易カスタマイズによる実現
IBM Watson IoT を用いた遠隔ゲームコントローラーと Node-RED による簡易カスタマイズによる実現
 
「テトリスを作ってスマホで振って遊ぼう!」ハンズオン資料
「テトリスを作ってスマホで振って遊ぼう!」ハンズオン資料「テトリスを作ってスマホで振って遊ぼう!」ハンズオン資料
「テトリスを作ってスマホで振って遊ぼう!」ハンズオン資料
 
LINE お絵描きアプリハンズオン 20190519
LINE お絵描きアプリハンズオン 20190519LINE お絵描きアプリハンズオン 20190519
LINE お絵描きアプリハンズオン 20190519
 
LINE お絵描きハンズオン 2019.04.26
LINE お絵描きハンズオン 2019.04.26LINE お絵描きハンズオン 2019.04.26
LINE お絵描きハンズオン 2019.04.26
 
Hyperledger Hands-on 2019-03-30 @ Singularity HIVE
Hyperledger Hands-on 2019-03-30 @ Singularity HIVEHyperledger Hands-on 2019-03-30 @ Singularity HIVE
Hyperledger Hands-on 2019-03-30 @ Singularity HIVE
 

Último

Service-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadershipService-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadershipYasuyoshi Minehisa
 
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdfストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdfmasakisaito12
 
20240427 zaim academy counseling lesson .pdf
20240427 zaim academy counseling lesson .pdf20240427 zaim academy counseling lesson .pdf
20240427 zaim academy counseling lesson .pdfssuser80a51f
 
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチUP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチユニパー株式会社
 
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)KayaSuetake1
 
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料シンフォニティ 株式会社
 

Último (6)

Service-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadershipService-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadership
 
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdfストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
 
20240427 zaim academy counseling lesson .pdf
20240427 zaim academy counseling lesson .pdf20240427 zaim academy counseling lesson .pdf
20240427 zaim academy counseling lesson .pdf
 
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチUP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
 
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
 
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
 

IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい

  • 2. BMXUG つきじ #4 IBM Cloudant 超活用法! 禁断の「アレ」に挑戦してみました。。 https://bmxug.connpass.com/event/74656/
  • 3. IBM Cloudant • Apache CouchDB をベースに IBM が DBaaS 化して IBM Cloud から提供し ているデータベースサービス • Apache CouchDB の最新バージョンは 2.1.0 • IBM Cloudant は CouchDB 2.0.0 ベース • この後に紹介する Design Document 機能は Apache CouchDB が所有している機能 • JSON ドキュメントをスケーラブルに格納する高速データベース • 分散データベース • 検索、トランザクション処理は苦手 • 「とにかく大量のデータを保存する」用途向き(ログ、IoT、・・・) • Design Document という特殊なドキュメントで、設計要素を管理する • View / List / Show https://bmxug.connpass.com/event/74656/ → 2.1.1 → 2.2.0 2018/12 現在現在現在現在
  • 4. 自己紹介 日本アイ・ビー・エム クラウドエバンジェリスト Twitter: @dotnsf Blog: http://dotnsf.blog.jp/ Email: dotnsf@jp.ibm.com 趣味: マンホール 木村 桂(きむら けい) プログラマー マンホールマップ: http://manholemap.juge.me/
  • 5. Cloudant NoSQL データベース 使ってますか? mongoDB でもいいですか?でもいいですか?でもいいですか?でもいいですか? 別にいいよ。 でもね、、、
  • 6. Cloudant で幸せになれること • IBM Cloud のライトプランなら無料で 1GB まで使える • デザインドキュメントでデータの UI も定義できる • https://bmxug.connpass.com/event/74656/ 参照 • 単体で日本語全文検索できる(インデックスが日本語対応済み) : : • ビルトインの変更履歴管理変更履歴管理変更履歴管理変更履歴管理機能
  • 7. Cloudant のドキュメント操作 REST API 例 API 説明説明説明説明 リクエスト例リクエスト例リクエスト例リクエスト例 結果例結果例結果例結果例 GET /{db}/{_id} データベースから _id を指 定してドキュメントを1件取 得する GET /db/123 { _id: "123", _rev: "1-1234", name: "Kimura" } POST /{db} データベースにドキュメン トを追加する POST /db { name: "dotnsf" } { ok: true, id: "456", rev: "1-5678" } PUT /{db}/{_id} データベース内の既存ド キュメントを更新する PUT /db/123 { rev: "1-1234", name: "木村" } { ok: true, id: "123", rev: "2-2345" } DELETE /{db}/{_id}?rev={_rev} データベース内の既存ド キュメントを削除する(ソフ トデリート) DELETE /db/123?rev=2-2345 { ok: true, id: "123", rev: "2-2345" } https://console.bluemix.net/docs/services/Cloudant/api/index.html
  • 9. この _rev がリビジョンを管理している { _id: 1, _rev: 1, country: "Japan", capital: "Tokyo" } { _id: 2, _rev: 1, country: "USA", capital: "N.Y." } { _id: 3, _rev: 1, country: "China", capital: "Beijing" } { _id: 4, _rev: 1, country: "Spain", capital: "Madrid" } { _id: 5, _rev: 1, country: "France", capital: "Paris" } { _id: 6, _rev: 1, country: "Italy", capital: "Roma" } { _id: 2, _rev: 2, country: "USA", capital: "Washington DC" } { _id: 6, _rev: 2, country: "Italy", capital: "Rome" } { _id: 1, _rev: 2, country: "日本", capital: "東京" } { _id: 1, _rev: 3, country: "Japan", capital: "Tokyo" } リビジョン(_rev)の値は自動管理 過去のリビジョンのデータも保存されている 実は同じ _id のドキュメントが複数存在している (ただし最新リビジョンのものが有効とみなされる)
  • 10. Cloudant のドキュメント操作 REST API 例 API 説明説明説明説明 リクエスト例リクエスト例リクエスト例リクエスト例 結果例結果例結果例結果例 GET /{db}/{_id} データベースから _id を指 定してドキュメントの最新 リビジョンの内容を1件取 得する GET /db/123 { _id: "123", _rev: "1-1234", name: "Kimura" } POST /{db} データベースにドキュメン トとリビジョン管理を追加 する POST /db { name: "dotnsf" } { ok: true, id: "456", rev: "1-5678" } PUT /{db}/{_id} データベース内の既存ド キュメントのリビジョンを追 加する PUT /db/123 { rev: "1-1234", name: "木村" } { ok: true, id: "123", rev: "2-2345" } DELETE /{db}/{_id}?rev={_rev} データベース内の既存ド キュメントをリビジョンを指 定して削除する(ソフトデ リート) DELETE /db/123?rev=2-2345 { ok: true, id: "123", rev: "2-2345" } https://console.bluemix.net/docs/services/Cloudant/api/index.html 「更新」ではなく「更新」ではなく「更新」ではなく「更新」ではなく 「追加」している「追加」している「追加」している「追加」している
  • 11. Cloudant のドキュメント操作 REST API 例 API 説明説明説明説明 リクエスト例リクエスト例リクエスト例リクエスト例 結果例結果例結果例結果例 GET /{db}/{_id} データベースから _id を指 定してドキュメントの全リビ ジョンを取得する GET /db/123?revs_info=true { _id: "123", _rev: "2-2345", name: "Kimura", _revs_info: [ { id: "123", rev: "1-1234" }, { id: "123", rev: "2-2345" } ] } データベースから _id と _rev を指定してドキュメン トの特定リビジョンの内容 を1件取得する GET /db/123?rev=1-1234 { _id: "123", _rev: "1-1234", name: "Kimura" } https://console.bluemix.net/docs/services/Cloudant/api/index.html 全リビジョン一覧全リビジョン一覧全リビジョン一覧全リビジョン一覧 特定リビジョン特定リビジョン特定リビジョン特定リビジョン の詳細の詳細の詳細の詳細
  • 13. まとめ • IBM Cloudant のドキュメントは _rev でリビジョンが自動管理されている • Update 時も、実際は同じ _id と新しい _rev で新規作成している • Delete 時は最新リビジョンのドキュメントがソフトデリートされる • 論理的には _id はユニーク ID であるが、物理的には _id と _rev でユニーク ID になる • 特殊なパラメータをつけて API を実行することで古いリビジョンのドキュ メントを取得することができる • IBM Cloudant をデータストアに採用するだけで、ドキュメントの変更履 歴管理を行うことができる。
  • 14. おまけ1 • IBM Cloudant(CouchDB) の文書をハードデリートする API • POST /db/_purge (http://docs.couchdb.org/en/stable/api/database/misc.html) • npm(@cloudant/cloudant) では見当たらない・・・ • ただし、IBM Cloudant では未実装らしい・・・ $ curl -XPOST 'https://xxxxxxxxx-bluemix.cloudant.com/db20181130/_purge' -u 'xxxxxxxxx-bluemix:password' -H 'Content-Type: application/json' -d '{"_id":["_rev"]}' {"error":"not_implemented","reason":"this feature is not yet implemented"}
  • 15. おまけ2 • 本日の内容を IBM Cloud アドベントカレンダー(12/3)で紹介してます : https://qiita.com/advent-calendar/2018/ibmcloud
  • 16. おまけ2 • 12:50 - 14:40 ブロックチェーン体験ハンズオンやります!