SlideShare a Scribd company logo
データフォーマットいろいろ
Seiya Mizuno @ Saint1991
おしながき
 Protocol Buffers vs Apache Avro vs Apache Thrift
パフォーマンス比較 (Protocol Buffers vs Avro vs Thrift vs JSON vs CSV)
何が違うの?
結局どっちをつかえばいいの?
 Avroのデータ管理術
 データのSchema互換性
データ取り込みのアーキテクチャ例
 GCPならこんな感じ
2
Protocol Buffers, Avro, Thrift
 システム間で効率よくデータのやりとりをするためのシステム
3
Data
user_name Martin
favorite_number 1337
interests daydreaming
syntax = "proto3";
message Person {
string user_name = 1;
int64 favourite_number = 2;
repeated string interests = 3;
}
Schema
0a 06 4d 61 72 74 69 6e ….
Schemaに基づいた
データのEncode/Decode
効率のよいバイナリフォーマット
多言語間でのデータ交換
Protocol Buffers, Avro, Thrift

省リソース: 速い、通信路の帯域も節約できる.

boilerplate削減: 各言語で別個にmodelクラスを書く必要がなくなる.
( Protocol Buffers & Thrift )

破損安全性: 受信した時にデータが壊れている、というようなケースが減る.
4
Schemaに基づいたデータの Encode / Decode
効率のよいバイナリフォーマット
多言語間でのデータ交換
ベンチマーク

5
message Nobid {
int32 adnw_id = 1;
string app_name = 2;
string auction_id = 3;
string host = 4;
string logged_at = 5;
int32 m_id = 6;
int32 nbr = 7;
string page = 8;
int32 res_time = 9;
samples.Spot spot = 10;
repeated string history = 11;
map<string, string> tags = 12;
}
ベンチマーク (Processing time)
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
JSON Avro Protocol Buffers
(proto3)
Thrift (compact
protocol)
CSV
Encoding time (sec) Decoding time (sec)
6
速すぎる…
※独自調べ
ベンチマーク (データサイズ) 7
0
0.5
1
1.5
2
2.5
3
3.5
JSON Avro Protocol Buffers
(proto3)
Thrift (compact
protocol)
CSV
※独自調べ
JSON以外はまぁ優秀
ベンチマーク総評
 JSONより圧倒的に速い
 データサイズもJSONの半分ぐらい
サイズが一番小さくなるのは Avro
 ※ Protocol Buffersだけ異常に速いのは多分実装の問題
 逆に言うと下手に書きようがないくらい簡単に使えるということでもある.
8
ベンチマーク総評
 CSVは小さいし速いがそもそもフォーマットとしての表現力が乏しい
 ネストした構造が取れない
 破損レコードも多いし紛れもないゴミフォーマット
9
何故効率が良くなるのか (Protocol Buffers)
 フィールドのkeyがとるスペースの分効率がよくなる.
 整数値が可変長エンコードになる.
10
message Person {
string user_name = 1;
int64 favourite_number = 2;
…
}
Schema
0 0 0 0 1 0 1 0
wire type
string
field index
1
文字列長 文字列のUTF8
0 0 0 1 0 0 0 0
2 varint
整数の可変長表記
小さい数ほど少ない
バイト数で表せるエンコード
フィールド名でなく
indexの値でエンコード
各フィールドに
indexを振る
Stringだとあまり
効率は上がらない…
何故効率が良くなるのか (Avro)
 Avroはさらに型, indexの値も排除しデータの内容のみ
11
0 0 0 0 1 0 1 0
wire type
string
field index
1
文字列長 文字列のUTF8
0 0 0 1 0 0 0 0
2 varint
整数の可変長表記
フィールド名でなく
indexの値でエンコード
{
"name": "Person", "type": "record”,
"fields": [
{"name":"userName","type":"string"},
{"name":"favouriteNumber","type":"long"}
]
}
SchemaSchema
Avroはindexも型も
データには入ってない
つまり…?
 小さい値をとる整数値のフィールドが多いほど、ご利益が大きい.
 JSONだと名前が長いフィールド数が多いほど損をしている…
12
やめよう、CSV, JSON
Protocol BuffersとAvro
どちらを選ぶべき…?
Protocol Buffers vs Avro
 Schemaからモデルクラスを
事前に生成
14
 事前のコード生成不要
 Schemaに基づくEncode/Decode
Schema
case class Person(
userName: String, favroriteNumber
) {
def toByteArray(): Array[Byte]
}
type Person struct {
…
}
person := &pb.Person{}
proto.unmarshall(person)
Encode
Decode
生成
val person = Person(“martin”, 23)
…
new SpecificDatumWriter[Person](Schema)
.write(person, encoder)
codec := goavro.NewCodec(schema)
…
person, _ := codec.Decode(reader)
Schema
Schema
Encode
Decode
生成したモデルクラスにByte配列との変換が
ストレートに定義されていてかなり簡単に使える
Protocol Buffers vs Avro
 Schemaからモデルクラスを
事前に生成
15
 事前のコード生成不要
 Schemaに基づくEncode/Decode
Schema
case class Person(
userName: String, favroriteNumber
) {
def toByteArray(): Array[Byte]
}
type Person struct {
…
}
person := &pb.Person{}
proto.unmarshall(person)
Encode
Decode
生成
val person = Person(“martin”, 23)
…
new SpecificDatumWriter[Person](Schema)
.write(person, encoder)
codec := goavro.NewCodec(schema)
…
person, _ := codec.Decode(reader)
Schema
Schema
Encode
Decode
Schemaを渡してエンコード/デコードを行う
クラスインスタンスを生成して使う
使い方が簡単!!
遅くなりようがないほどにシンプル
カラムの追加にリビルドが必要
16
使い方はやや難しい
何をするにもSchemaが付きまとう
カラムを追加してもリビルド不要
データ生成元 データ利用
Martin
1337
Martin
1337
daydreaming
カラム追加
Martin
1337
リビルド前
Martin
1337
daydreaming
リビルド後
受信側で新しいフィールドを
デコードするにはサーバを一旦止める必要がある
Protocol Buffers vs Avro
データ生成元 データ利用
Schema管理の仕組みを整えればサーバを
止めなくても新しいフィールドをデコード可能
Martin
1337
Schema
Martin
1337
Schema
Schema
Martin
1337
daydreaming
Schema
Martin
1337
daydreaming
使い方が簡単!!
遅くなりようがないほどにシンプル
カラムの追加にリビルドが必要
17
使い方はやや難しい
何をするにもSchemaが付きまとう
カラムを追加してもリビルド不要
データ生成元 データ利用
Martin
1337
Martin
1337
daydreaming
カラム追加
Martin
1337
リビルド前
Martin
1337
daydreaming
リビルド後
受信側で新しいフィールドを
デコードするにはサーバを一旦止める必要がある
Protocol Buffers vs Avro
データ生成元 データ利用
Schemaさえあればサーバを止めなくても
新しいフィールドをデコード可能
Martin
1337
Schema
Martin
1337
Schema
Schema
Martin
1337
daydreaming
Schema
Martin
1337
daydreaming
結論 (あくまで個人の見解です
 Avroがオススメなケース
とにかくデータを軽くしたい
データ生成元のシステムとデータを使うシステムの開発の
ライフサイクルが違う
 BigQueryで使いたい
 その他の場合はProtocol Buffers
圧倒的に書くのが楽なので…
18
※後で軽くふれます
おしながき
 Protocol Buffers vs Apache Avro vs Apache Thrift
パフォーマンス比較 (Protocol Buffers vs Avro vs Thrift vs JSON vs CSV)
何が違うの?
結局どっちをつかえばいいの?
 Avroのデータ管理術
 データのSchema互換性
 データ取り込みのアーキテクチャ例
 GCPならこんな感じ
19
Dive into Apache Avro
 Avroではデータにフィールドの情報が一切入っていないため、
デコードに必ずそのデータのエンコードに使用したSchemaが必要
20
データ生成元 データ利用
Martin
1337
Schema
0a 06 4d 61 72 74 69 6e ….
Schema
こいつらだけを頼りに
デコードする
Jordan
23
BULLS
Schema Schema
生成側と受信側で
全く同じSchemaが必要
Dive into Apache Avro
 Avroではデータにフィールドの情報が一切入っていないため、
デコードに必ずそのデータのエンコードに使用したSchemaが必要
21
データ生成元 データ利用
Martin
1337Schema
0a 06 4d 61 72 74 69 6e ….
Schema
Jordan
23
BULLS
Schema
Schema
どうやって受信側はSchemaを取得するの?
Schemaが違うデータが一緒に流れてるけど
一緒に保存して大丈夫だっけ…?
こいつらだけを頼りに
デコードする
一緒に保存して良いデータとは…?
 データは分析に利用するもの、分析環境で一緒に使える
データ同士をまとめて保存すべき!!
22
hdfs://topic1/v1/parquet/…
hdfs://topic1/v2/parquet/…
Big Query
互換性のあるデータ同士のみが
一緒に読み出せる
GCS
互換性のあるデータ同士を
同じパスに配置して管理するとよい
互換性 (Avroの場合)
 ※Avroの場合バイナリ配置に関する互換性ですが、
分析環境におけるデータの互換性にも通じるところがあります.
 というわけで、少しAvroのSchema互換性の話をします.
23
AvroのSchema互換性
 AvroではSchemaに定義されている全てのフィールドが
データから取り出せないと互換性がなくなってしまいます.
24
{
"name": "Person", "type": "record”,
"fields": [
{"name":"userName","type":"string"},
{"name":"favouriteNumber","type":"long"}
]
}
{
"name": "Person", "type": "record”,
"fields": [
{"name":"userName","type":"string"},
{"name":"favouriteNumber","type":"long"},
{"name":”age","type":”int"}
]
}
Martin
1337
フィールド追加
エンコード
user_name Martin
favorite_number 1337
age
値が決まらない!!
デコード
後方互換性なし
データを一緒に読み出せるように保つには…?
 後方互換性を維持したSchema変更をすることが重要
25
どうすれば互換性を保てたのか…?
 Avroでは各フィールドにデフォルト値を規定できる.
適切なデフォルト値とともにフィールドを追加することで互換性を維持できる.
26
{
"name": "Person", "type": "record”,
"fields": [
{"name":"userName","type":"string"},
{"name":"favouriteNumber","type":"long"}
]
}
{
"name": "Person", "type": "record”,
"fields": [
{"name":"userName","type":"string"},
{"name":"favouriteNumber","type":"long"},
{"name":”age","type":”int”,”default”: 0}
]
}
Martin
1337
フィールド追加
エンコード
user_name Martin
favorite_number 1337
age 0
値が決まる!!
デコード
後方互換性あり
Dive into Apache Avro
 Avroではデータにフィールドの情報が一切入っていないため、
デコードに必ずそのデータのエンコードに使用したSchemaが必要
27
データ生成元 データ利用
Martin
1337Schema
0a 06 4d 61 72 74 69 6e ….
Schema
Jordan
23
BULLS
Schema
Schema
どうやって受信側はSchemaを取得するの?
Schemaが違うデータが一緒に流れてるけど
一緒に保存して大丈夫だっけ…?
こいつらだけを頼りに
デコードする
TypeBook
 Schema Registryサーバ
 Schemaの中央管理
 RESTful APIで登録や、検索ができる.
 互換性ベースでSchemaをSemantic Versioning
28
v1 . 7 . 2
前方/後方互換が
維持された変更
後方互換のみが
維持された変更
後方互換が
崩れる変更
major versionが同じSchemaから生成されたデータは
最新のSchemaで読み出せることが保証される
GaneshaのAvro取り込み 29
TypeBook
Schema
hdfs://topic1/v1/parquet/…
hdfs://topic1/v2/parquet/…
schema_id: 1
Martin
1337
schema_id: 2
Jordan
23
18
1. データの前にSchema IDを
付与して送信
2. IDをもとにTypeBookから
Schema(とそのversion)を
取得してデコード
Schema
データ生成元
3. versionから互換性が分かるので
それに応じて適切なパスに配置
GCPでも… 30
TypeBook on GKE
Schema
Schema
データ生成元
Pub/Sub Dataproc
or
Dataflow GCS
Big Query
gs://topic1/v1/parquet/…
gs://topic1/v2/parquet/…
手軽にほぼ同じ構成が作れます!
BigQuery with Avro
 BigQueryはAvroを公式にサポートしている.
 Avroファイルの先頭にSchemaを書いておくと、自動でカラム名、型などを
抽出してくれます!
 後方互換をもつファイルなら一括ロード可能なのは検証済み!
31
まとめ
 CSV, JSONで許されるのは個人開発まで!
Protocol Buffers Avroを使いましょう!!!
 BigQueryを使うならAvroオススメです.
 TypeBookでSchemaの管理は楽できるのでぜひ!!
32
リファレンス
 ベンチマークなどなどに使ったサンプルコード
 Scalaから使うシンプルな例になってます.
• Protocol Buffers >>>> Avro >> Thriftのシンプルさの違いが垣間見えるのでぜひ!
 ベンチマークへの不服はPRしていただけると嬉しいです.
 TypeBook (そのうちOSSにします)
 公式以外の良リファレンス
もはやこれのパクリ発表だったといっても過言ではない
33
https://github.com/Saint1991/samples/tree/master/scala/serialization
https://martin.kleppmann.com/2012/12/05/schema-evolution-in-avro-protocol-buffers-thrift.html
https://github.com/CyberAgent/ganesha-schema-registry

More Related Content

PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
 
PDF
Docker Compose 徹底解説
Masahito Zembutsu
 
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
PPTX
グラフデータベース入門
Masaya Dake
 
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
 
PPTX
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
 
PPTX
BigQuery Query Optimization クエリ高速化編
sutepoi
 
PPTX
Spanner移行について本気出して考えてみた
techgamecollege
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
 
Docker Compose 徹底解説
Masahito Zembutsu
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
グラフデータベース入門
Masaya Dake
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
 
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
 
BigQuery Query Optimization クエリ高速化編
sutepoi
 
Spanner移行について本気出して考えてみた
techgamecollege
 

What's hot (20)

PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
PDF
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
 
PPTX
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
 
PDF
イミュータブルデータモデルの極意
Yoshitaka Kawashima
 
PPTX
GraphQLのsubscriptionで出来ること
Shingo Fukui
 
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
 
PPTX
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
 
PPTX
Metaspace
Yasumasa Suenaga
 
PDF
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
 
PPTX
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
 
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
 
PDF
Apache Kafka 0.11 の Exactly Once Semantics
Yoshiyasu SAEKI
 
PDF
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
RDF Semantic Graph「RDF 超入門」
オラクルエンジニア通信
 
PDF
Amazon SageMaker で始める機械学習
Amazon Web Services Japan
 
PDF
AWSではじめるMLOps
MariOhbuchi
 
PDF
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
 
PDF
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Amazon Web Services Japan
 
PDF
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Cloudera Japan
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
 
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
 
イミュータブルデータモデルの極意
Yoshitaka Kawashima
 
GraphQLのsubscriptionで出来ること
Shingo Fukui
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
 
Metaspace
Yasumasa Suenaga
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
 
Apache Kafka 0.11 の Exactly Once Semantics
Yoshiyasu SAEKI
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
RDF Semantic Graph「RDF 超入門」
オラクルエンジニア通信
 
Amazon SageMaker で始める機械学習
Amazon Web Services Japan
 
AWSではじめるMLOps
MariOhbuchi
 
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Amazon Web Services Japan
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Cloudera Japan
 
Ad

Viewers also liked (6)

PPTX
Connect S3 with Kafka using Akka Streams
Seiya Mizuno
 
PPTX
Google Protocol Buffers
Sergey Podolsky
 
PPTX
Introduction to Finch
Seiya Mizuno
 
PDF
居場所を隠すために差分プライバシーを使おう
Hiroshi Nakagawa
 
PDF
差分プライバシーによる時系列データの扱い方
Hiroshi Nakagawa
 
PDF
Protocol Buffers 入門
Yuichi Ito
 
Connect S3 with Kafka using Akka Streams
Seiya Mizuno
 
Google Protocol Buffers
Sergey Podolsky
 
Introduction to Finch
Seiya Mizuno
 
居場所を隠すために差分プライバシーを使おう
Hiroshi Nakagawa
 
差分プライバシーによる時系列データの扱い方
Hiroshi Nakagawa
 
Protocol Buffers 入門
Yuichi Ito
 
Ad

Similar to Apache Avro vs Protocol Buffers (20)

PPT
20010901
小野 修司
 
PDF
Pfi Seminar 2010 1 7
Preferred Networks
 
PDF
Cpu cache arch
Shinichiro Niiyama
 
PPTX
Prosym2012
MITSUNARI Shigeo
 
PDF
RとSQLiteで気軽にデータベース作成
弘毅 露崎
 
PDF
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
 
PDF
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
 
PDF
[第2版]Python機械学習プログラミング 第8章
Haruki Eguchi
 
PDF
Dalvikバイトコードリファレンスの読み方 改訂版
Takuya Matsunaga
 
PDF
20211112_jpugcon_gpu_and_arrow
Kohei KaiGai
 
PDF
WindowsAzureの長所を活かすクラウド アプリ開発(PDF版)
Shinichiro Isago
 
PDF
CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回-
SORACOM, INC
 
PDF
20120402 aws meister-reloaded-cloud-formation
Amazon Web Services Japan
 
PDF
AWSマイスターシリーズReloaded(AWS Cloudformation)
Akio Katayama
 
PDF
Hello Dark-Side C# (Part. 1)
Yuto Takei
 
PDF
Python physicalcomputing
Noboru Irieda
 
PDF
C16 45分でわかるPostgreSQLの仕組み by 山田努
Insight Technology, Inc.
 
PPTX
Css2014 ruo ando_2014-10-23-01
Ruo Ando
 
PDF
Software Development with Symfony
Atsuhiro Kubo
 
PDF
DTraceによるMySQL解析ことはじめ
Mikiya Okuno
 
20010901
小野 修司
 
Pfi Seminar 2010 1 7
Preferred Networks
 
Cpu cache arch
Shinichiro Niiyama
 
Prosym2012
MITSUNARI Shigeo
 
RとSQLiteで気軽にデータベース作成
弘毅 露崎
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
 
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
 
[第2版]Python機械学習プログラミング 第8章
Haruki Eguchi
 
Dalvikバイトコードリファレンスの読み方 改訂版
Takuya Matsunaga
 
20211112_jpugcon_gpu_and_arrow
Kohei KaiGai
 
WindowsAzureの長所を活かすクラウド アプリ開発(PDF版)
Shinichiro Isago
 
CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回-
SORACOM, INC
 
20120402 aws meister-reloaded-cloud-formation
Amazon Web Services Japan
 
AWSマイスターシリーズReloaded(AWS Cloudformation)
Akio Katayama
 
Hello Dark-Side C# (Part. 1)
Yuto Takei
 
Python physicalcomputing
Noboru Irieda
 
C16 45分でわかるPostgreSQLの仕組み by 山田努
Insight Technology, Inc.
 
Css2014 ruo ando_2014-10-23-01
Ruo Ando
 
Software Development with Symfony
Atsuhiro Kubo
 
DTraceによるMySQL解析ことはじめ
Mikiya Okuno
 

More from Seiya Mizuno (7)

PPTX
Fluentd1.2 & Fluent Bit
Seiya Mizuno
 
PDF
SysML meetup
Seiya Mizuno
 
PPTX
Connect S3 with Kafka using Akka Streams
Seiya Mizuno
 
PPTX
Prometheus
Seiya Mizuno
 
PPTX
The future of Apache Hadoop YARN
Seiya Mizuno
 
PPTX
Yarn application-master
Seiya Mizuno
 
PPTX
Yarn resource-manager
Seiya Mizuno
 
Fluentd1.2 & Fluent Bit
Seiya Mizuno
 
SysML meetup
Seiya Mizuno
 
Connect S3 with Kafka using Akka Streams
Seiya Mizuno
 
Prometheus
Seiya Mizuno
 
The future of Apache Hadoop YARN
Seiya Mizuno
 
Yarn application-master
Seiya Mizuno
 
Yarn resource-manager
Seiya Mizuno
 

Recently uploaded (9)

PPTX
20250729_TechTalk_QlikTalendCloud_データ品質とデータガバナンス
QlikPresalesJapan
 
PDF
RV車市場、CAGR2.60%で成長し、2031年には37640百万米ドル規模に
yhresearch
 
PDF
埋め込み型ドラッグデリバリーデバイスの成長予測:2031年には751百万米ドルに到達へ
2418867459
 
PDF
工業用ミストシステム調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research
2418867459
 
PDF
ダイヤモンドスラリー市場規模の成長見通し:2031年には193百万米ドルに到達へ
yhresearch
 
PPTX
BEIS ORIENTATION FOR S.Y2024 - 2025.pptx
AsmiraCo2
 
PPTX
PRESENTASI IZIN OPERASIONAL SMK ISLAM KARYA MANDIRI
BAHRULALAM27
 
PPTX
【Qlik 医療データ活用勉強会】第50回 日本医療マネジメント学会参加報告、DPCデータの活用等
QlikPresalesJapan
 
PDF
硫酸ナトリウム市場、CAGR0.50%で成長し、2031年には1520百万米ドル規模に
yhresearch
 
20250729_TechTalk_QlikTalendCloud_データ品質とデータガバナンス
QlikPresalesJapan
 
RV車市場、CAGR2.60%で成長し、2031年には37640百万米ドル規模に
yhresearch
 
埋め込み型ドラッグデリバリーデバイスの成長予測:2031年には751百万米ドルに到達へ
2418867459
 
工業用ミストシステム調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research
2418867459
 
ダイヤモンドスラリー市場規模の成長見通し:2031年には193百万米ドルに到達へ
yhresearch
 
BEIS ORIENTATION FOR S.Y2024 - 2025.pptx
AsmiraCo2
 
PRESENTASI IZIN OPERASIONAL SMK ISLAM KARYA MANDIRI
BAHRULALAM27
 
【Qlik 医療データ活用勉強会】第50回 日本医療マネジメント学会参加報告、DPCデータの活用等
QlikPresalesJapan
 
硫酸ナトリウム市場、CAGR0.50%で成長し、2031年には1520百万米ドル規模に
yhresearch
 

Apache Avro vs Protocol Buffers