このエンドポイントは、Post の編集メタデータを含むように更新されました。これらのメタデータの詳細は、“Edit Posts” の基本をご覧ください。
Decahose ストリーム
data をランダムに抽出するリアルタイムサンプリングアルゴリズムによって実現されています。
以下は Decahose で利用可能な機能の一部です:
- 拡張・強化された URL: - 短縮 URL を完全に展開し、追加のメタデータ(ページタイトルと説明)を提供
- ストリームのパーティショニング - 2 つのパーティション(各パーティションが Decahose ストリームのボリュームの 50% を保持)
- 信頼性の向上 - バックエンドシステムの地理的多様性
data はバルク配信であり、追加のフィルタリング(例: キーワード)には対応していません。
ENTERPRISE
いいねのストリーミング
- 「いいね」は独立した個別のストリームで配信されます
- 「いいね」は以前は「Favorites」と呼ばれていました。拡張済みのネイティブ形式ペイロードはこの呼称を保持しています
- ストリームには公開の「いいね」のみが含まれます
- 「公開」とは、「いいね」したユーザー、Post 作成者、および当該 Post がプラットフォーム上で公開であることを意味します
- 「いいね」は Retweet に非常によく似ており、公開のエンゲージメントシグナルを表します
- ペイロード要素には以下が含まれます:
- 元の Post オブジェクト
- 元の Post を作成したアクターオブジェクト
- 「いいね」アクションを行ったアクターオブジェクト
- 元のコンテンツのみが「いいね」可能です
- Retweet は「いいね」できません。Retweet への「いいね」は元の Post に適用されます
- 引用した Tweet は「いいね」できます
- 「いいね」アクティビティには、該当する Gnip Enrichments(購入/適用済みの場合)が含まれます
- 対応製品 / 機能
- 「いいね」ストリームは Backfill をサポートします(購入/適用済みの場合)
- 「いいね」ストリームに Replay のサポートはありません
- 「いいね」には Search および Historical のサポートはありません
- 現時点で PowerTrack に「いいね」サポートを追加する予定はありません
- Decahose で配信される 10% サンプルの Post については、ストリームに該当する公開の「いいね」を 100% 含みます
- パーティション: 2
- URL 構造
ガイド
リカバリーと冗長性
- 複数の環境をサポートするため、アカウントに追加ストリームをデプロイできます。これらのストリームは互いに独立しており、区別のための異なるstream_labelを持ちます。
- 接続維持を支援するため、各Decahoseストリームは冗長接続をサポートしています。最も一般的なアーキテクチャは、1つのストリームに2つの接続を設け、クライアント側に独立した2つのコンシューマー(理想的には異なるネットワーク上)を配置する構成です。この設計により、クライアント側のネットワーク、サーバー、データストア経路にわたって冗長性を確保できます。各接続ではdataの完全コピーが配信されるため、クライアント側は重複dataを許容し、適切に管理する必要がある点に注意してください。
- 「heartbeat」は10秒ごとに送信されます。ただし、Decahoseストリームではdata量が十分に多いため、わずかな時間(例:数秒)でもPostがない場合は接続の問題を示す可能性があります。したがって、「dataの沈黙」とheartbeatの欠如の両方で切断を検知できます。
追加ストリーム
概要
Recovery は、直近の X の履歴データに対して、過去5日分のローリングウィンドウでストリーミングアクセスを提供するデータ復旧ツールです(一次データ収集には使用しないでください)。リアルタイムストリームでデータを取り逃した場合—短時間の切断によるものでも、その他の理由で一定期間リアルタイムデータの取り込みに失敗した場合でも—データの復旧にご利用ください。Recovery の使用
データ可用性
バックフィル
- 接続時に常に ‘backfillMinutes=5’ を使用し、提供される重複データを後段で重複排除するという運用も可能です。
- 5分以上切断された場合は、Recovery を使用してデータを復旧できます。
- 切断期間の特定
- 5分以下か?
- ストリームで Backfill が有効な場合は、適切な ‘backfillMinutes’ パラメータを指定して接続リクエストを準備します。
- 5分を超えるか?
- Recovery ストリームがある場合は、切断期間に対して Recovery リクエストを行います(必要に応じて Rules API を使用し、可能であれば現在のリアルタイムのルールセットで実行します)。
- 5分以下か?
- 新しい接続をリクエストします。
- バックフィルを実装する バックフィルにより、ストリーム接続から切断される前の時点に遡って再接続でき、最大5分の切断をカバーします。接続リクエストにパラメータを含めて実装します。
- 別拠点から冗長ストリームを取り込む 冗長ストリームを同一の本番環境に取り込み、データの重複排除が可能であれば、通常ストリームと冗長ストリームの両方で同時にダウンタイムや切断が発生しない限り、Recovery は不要です。冗長ストリームを本番環境へライブで取り込めない場合は、別の「緊急」データストアに書き込みます。そうしておけば、プライマリのストリーム接続に切断やダウンタイムが発生した際、欠落期間を補うデータを手元で確保できます。
- Recovery を実装する 切断やダウンタイムがプライマリと冗長の両ストリームに影響する場合は、Decahose Recovery を使用して取り逃したデータを復旧します。API はアーカイブの5日分をカバーするローリングウィンドウを提供しており、そのウィンドウから1時間以内の範囲でリクエストし、ストリーミングするのが最適です。これはリアルタイムストリームと並行して行います。Recovery で提供される5日のウィンドウを超える Decahose のデータを復旧する手段はないため、重大なダウンタイムに備えて冗長ストリームを活用し、手元に完全なデータのコピーを確保しておくことが重要です。
- 受信した Post をカウントする 取り込みアプリの入り口で受信した生の Post 数をカウントし、その数を最終的なデータストアに到達した Post 数と比較できるようにします。差分を監視し、受信後にデータがドロップされる原因となる問題をチームにアラートできます。
- 異常な保存量を分析する 最終データベースに保存されたデータ量を分析し、異常な減少がないか確認します。これも問題の兆候になり得ますが、状況によっては量の減少が正常な場合もあります(例: X プラットフォームが利用不可で、一定期間ユーザーが Post を作成できない場合)。
API リファレンス
Decahose ストリーム
メソッド
| メソッド | 説明 |
|---|---|
| GET /{stream-type}/:stream | data ストリームに接続する |
GET :stream
Firehose ストリームへの永続接続を確立し、リアルタイムのdataがこの接続経由で配信されます。リクエスト仕様
| リクエストメソッド | HTTP GET |
| 接続タイプ | Keep-Alive リクエストヘッダーで指定してください。 |
| URL | ダッシュボードのストリーム用 API ヘルプページに記載されています。構成は次のとおりです。 Decahose: https://gnip-stream.x.com/stream/sample10/accounts/:account_name/publishers/twitter/:stream_label.json?partition=1 |
| パーティション(必須) | partition=\{#} - フルストリームを取得するにはパーティション指定が必須です。パラメーターを指定してストリームに接続してください。ストリームごとのパーティション数は次のとおりです。* Decahose: 2 パーティション |
| 圧縮 | Gzip。Gzip 圧縮でストリームに接続するには、接続リクエストで Accept-Encoding ヘッダーを送信してください。ヘッダーの例: Accept-Encoding: gzip |
| 文字エンコーディング | UTF-8 |
| レスポンス形式 | JSON。リクエストヘッダーでレスポンス形式として JSON を指定してください。 |
| レート制限 | 60 秒あたり 10 リクエスト。 |
| バックフィルパラメーター | Backfill が有効なストリームを購入している場合、GET リクエストに “backfillMinutes” パラメーターを追加して有効化してください。 |
| 読み取りタイムアウト | クライアントで読み取りタイムアウトを設定し、30 秒を超える値にしてください。 |
| Tweet 編集のサポート | すべての Tweet オブジェクトには、その Tweet の編集履歴を示す Tweet 編集メタデータが含まれます。詳細は「“Edit Tweets” の基本」を参照してください。 |
レスポンス
| ステータス | テキスト | 説明 |
|---|---|---|
| 200 | 成功 | 接続は正常に確立され、以降は新しいアクティビティが到着次第送信されます。 |
| 401 | 認証失敗 | 無効な認証情報により HTTP 認証に失敗しました。リクエストで正しく使用していることを確認するため、認証情報で console.gnip.com にログインしてください。 |
| 406 | 受理不可 | 一般的には、クライアントがストリームの gzip エンコードを受け入れるためのヘッダーを正しく含めていない場合に発生しますが、他の状況でも発生することがあります。 次のような JSON メッセージが含まれます: “この接続には圧縮が必要です。圧縮を有効にするには、リクエストに ‘Accept-Encoding: gzip’ ヘッダーを送信し、クライアント側で読み取り時にストリームを解凍できるようにしてください。“ |
| 429 | レート制限 | アプリが接続リクエストの上限を超えました。 |
| 503 | サービス利用不可 | X サーバー側の問題です。指数バックオフで再接続してください。この問題に関する通知が X API Status Page に掲載されていない場合、10 分経っても接続できないときはサポートまたは緊急窓口に連絡してください。 |