์ด ํ์ด์ง์์๋ ํํฐ๋ฅผ ์ฌ์ฉํ์ฌ Pub/Sub ๊ตฌ๋ ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
ํํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ๋ ์์ ๋ฉ์์ง๋ฅผ ์์ ํ ๋๋ ํํฐ์ ์ผ์นํ๋ ๋ฉ์์ง๋ง ์์ ๋ฉ๋๋ค. Pub/Sub ์๋น์ค๋ ํํฐ์ ์ผ์นํ์ง ์๋ ๋ฉ์์ง๋ฅผ ์๋์ผ๋ก ํ์ธํฉ๋๋ค. ๋ฉ์์ง์ ๋ฐ์ดํฐ๊ฐ ์๋ ์์ฑ์ ๋ฐ๋ผ ๋ฉ์์ง๋ฅผ ํํฐ๋งํ ์ ์์ต๋๋ค.
์ฃผ์ ์ ์ฌ๋ฌ ๊ตฌ๋ ์ ์ฐ๊ฒฐํ ์ ์๊ณ ๊ฐ ๊ตฌ๋ ์ ์๋ก ๋ค๋ฅธ ํํฐ๋ฅผ ํฌํจํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ ์ธ๊ณ ์ฌ๋ฌ ์ง์ญ์์ ๋ด์ค๋ฅผ ์์ ํ๋ ์ฃผ์ ๊ฐ ์์ผ๋ฉด ํน์ ๋ฆฌ์ ์์๋ง ๊ฒ์๋๋ ๋ด์ค๋ฅผ ํํฐ๋งํ๋๋ก ๊ตฌ๋ ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด ๊ตฌ์ฑ์ ๊ฒฝ์ฐ ์ฃผ์ ๋ฉ์์ง ์์ฑ ์ค ํ๋๊ฐ ๋ด์ค ๊ฒ์ ๋ฆฌ์ ์ ์ ๋ฌํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
ํํฐ๊ฐ ํฌํจ๋ ๊ตฌ๋ ์์ ๋ฉ์์ง๋ฅผ ๋ฐ์ผ๋ฉด Pub/Sub๊ฐ ์๋์ผ๋ก ํ์ธํ๋ ๋ฉ์์ง์ ๋ํ ์์๋ฐ์ด๋ ๋ฉ์์ง ์๊ธ์ด ๋ฐ์ํ์ง ์์ต๋๋ค. ์ด๋ฌํ ๋ฉ์์ง์๋ ๋ฉ์์ง ์ ์ก ์๊ธ ๋ฐ ํ์ ๊ด๋ จ ์คํ ๋ฆฌ์ง ์๊ธ์ด ๋ถ๊ณผ๋ฉ๋๋ค.
ํํฐ๋ก ๊ตฌ๋ ๋ง๋ค๊ธฐ
Pull ๋ฐ Push ๊ตฌ๋ ์ ํํฐ๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. ๋ชจ๋ ๊ตฌ๋ ์๋ StreamingPull API๋ฅผ ์ฌ์ฉํ๋ ๊ตฌ๋ ์๋ฅผ ํฌํจํ์ฌ ํํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ๋ ์์ ๋ฉ์์ง๋ฅผ ์์ ํ ์ ์์ต๋๋ค.
Google Cloud ์ฝ์, Google Cloud CLI, ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ Pub/Sub API๋ฅผ ์ฌ์ฉํ์ฌ ํํฐ๋ก ๊ตฌ๋ ์ ๋ง๋ค ์ ์์ต๋๋ค.
์ฝ์
ํํฐ๋ก Pull ๊ตฌ๋ ์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
Google Cloud ์ฝ์์์ ๊ตฌ๋ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๊ตฌ๋ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๊ตฌ๋ ID๋ฅผ ์ ๋ ฅํฉ๋๋ค.
๋๋กญ๋ค์ด ๋ฉ๋ด์์ ํ๋์ ์ฃผ์ ๋ฅผ ์ ํํ๊ฑฐ๋ ๋ง๋ญ๋๋ค. ๊ตฌ๋ ์ ์ฃผ์ ์์ ๋ฉ์์ง๋ฅผ ์์ ํฉ๋๋ค.
๊ตฌ๋ ํํฐ ์น์ ์์ ํํฐ ํํ์์ ์ ๋ ฅํฉ๋๋ค.
๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
ํํฐ๋ก Push ๊ตฌ๋ ์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
Google Cloud ์ฝ์์์ ๊ตฌ๋ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๊ตฌ๋ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๊ตฌ๋ ID๋ฅผ ์ ๋ ฅํฉ๋๋ค.
๋๋กญ๋ค์ด ๋ฉ๋ด์์ ํ๋์ ์ฃผ์ ๋ฅผ ์ ํํ๊ฑฐ๋ ๋ง๋ญ๋๋ค. ๊ตฌ๋ ์ ์ฃผ์ ์์ ๋ฉ์์ง๋ฅผ ์์ ํฉ๋๋ค.
์ ์ก ์ ํ ์น์ ์์ Push๋ฅผ ํด๋ฆญํฉ๋๋ค.
์๋ํฌ์ธํธ URL ํ๋์์ Push ์๋ํฌ์ธํธ์ URL์ ์ ๋ ฅํฉ๋๋ค.
๊ตฌ๋ ํํฐ ์น์ ์์ ํํฐ ํํ์์ ์ ๋ ฅํฉ๋๋ค.
๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
ํํฐ๋ก Pull ๊ตฌ๋
์ ๋ง๋ค๋ ค๋ฉด gcloud pubsub subscriptions create
๋ช
๋ น์ด๋ฅผ --message-filter
ํ๋๊ทธ์ ํจ๊ป ์ฌ์ฉํฉ๋๋ค.
gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --message-filter='FILTER'
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- SUBSCRIPTION_ID: ์์ฑํ ๊ตฌ๋ ์ ID
- TOPIC_ID: ๊ตฌ๋ ์ ์ฐ๊ฒฐํ ์ฃผ์ ์ ID
- FILTER: ํํฐ๋ง ๊ตฌ๋ฌธ์ ํํ์
ํํฐ๋ก Push ๊ตฌ๋
์ ๋ง๋ค๋ ค๋ฉด gcloud pubsub subscriptions create
๋ช
๋ น์ด๋ฅผ --push-endpoint
๋ฐ --message-filter
ํ๋๊ทธ์ ํจ๊ป ์ฌ์ฉํฉ๋๋ค.
gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --push-endpoint=PUSH_ENDPOINT \ --message-filter='FILTER'
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- SUBSCRIPTION_ID: ์์ฑํ ๊ตฌ๋ ์ ID
- TOPIC_ID: ๊ตฌ๋ ์ ์ฐ๊ฒฐํ ์ฃผ์ ์ ID
- PUSH_ENDPOINT: ํธ์ ๊ตฌ๋ ์๊ฐ ์คํ๋๋ ์๋ฒ์ URL
- FILTER: ํํฐ๋ง ๊ตฌ๋ฌธ์ ํํ์
REST
ํํฐ๋ก ๊ตฌ๋
์ ๋ง๋ค๋ ค๋ฉด projects.subscriptions.create
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID Authorization: Bearer $(gcloud auth print-access-token)
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: ๊ตฌ๋ ์ ๋ง๋ค๋ ค๋ ํ๋ก์ ํธ์ ํ๋ก์ ํธ ID
- SUBSCRIPTION_ID: ์์ฑํ ๊ตฌ๋ ์ ID
ํํฐ๋ก Pull ๊ตฌ๋ ์ ๋ง๋ค๋ ค๋ฉด ์์ฒญ ๋ณธ๋ฌธ์ ํํฐ๋ฅผ ์ง์ ํฉ๋๋ค.
{ "topic": "projects/PROJECT_ID/topics/TOPIC_ID", "filter": "FILTER" }
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: ์ฃผ์ ๊ฐ ์๋ ํ๋ก์ ํธ์ ํ๋ก์ ํธ ID
- TOPIC_ID: ๊ตฌ๋ ์ ์ฐ๊ฒฐํ ์ฃผ์ ์ ID
- FILTER: ํํฐ๋ง ๊ตฌ๋ฌธ์ ํํ์
ํํฐ๋ก Push ๊ตฌ๋ ์ ๋ง๋ค๋ ค๋ฉด Push ์๋ํฌ์ธํธ ๋ฐ ํํฐ๋ฅผ ์์ฒญ ๋ณธ๋ฌธ์ ์ง์ ํฉ๋๋ค.
{ "topic": "projects/PROJECT_ID/topics/TOPIC_ID", "pushConfig": { "pushEndpoint": "PUSH_ENDPOINT" }, "filter": "FILTER" }
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: ์ฃผ์ ๊ฐ ์๋ ํ๋ก์ ํธ์ ํ๋ก์ ํธ ID
- TOPIC_ID: ๊ตฌ๋ ์ ์ฐ๊ฒฐํ ์ฃผ์ ์ ID
- PUSH_ENDPOINT: ํธ์ ๊ตฌ๋ ์๊ฐ ์คํ๋๋ ์๋ฒ์ URL
- FILTER: ํํฐ๋ง ๊ตฌ๋ฌธ์ ํํ์
C++
์ด ์ํ์ ์๋ํ๊ธฐ ์ ์ ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ C++ ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Pub/Sub C++ API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
C#
์ด ์ํ์ ์๋ํ๊ธฐ ์ ์ ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ C# ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Pub/Sub C# API ์ฐธ์กฐ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Go
๋ค์ ์ํ์์๋ Go Pub/Sub ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฃผ์ ๋ฒ์ (v2)์ ์ฌ์ฉํฉ๋๋ค. ์์ง v1 ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด v2๋ก์ ๋ง์ด๊ทธ๋ ์ด์ ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์. v1 ์ฝ๋ ์ํ ๋ชฉ๋ก์ ๋ณด๋ ค๋ฉด ์ง์ ์ค๋จ๋ ์ฝ๋ ์ํ์ ์ฐธ๊ณ ํ์ธ์.
์ด ์ํ์ ์๋ํ๊ธฐ ์ ์ ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Go ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Pub/Sub Go API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์๋ฐ
์ด ์ํ์ ์๋ํ๊ธฐ ์ ์ ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Java ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Pub/Sub ์๋ฐ API ์ฐธ์กฐ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Node.js
์ด ์ํ์ ์๋ํ๊ธฐ ์ ์ ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Node.js ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Pub/Sub Node.js API ์ฐธ์กฐ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Node.js
์ด ์ํ์ ์๋ํ๊ธฐ ์ ์ ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Node.js ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Pub/Sub Node.js API ์ฐธ์กฐ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
PHP
์ด ์ํ์ ์๋ํ๊ธฐ ์ ์ ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ PHP ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Pub/Sub PHP API ์ฐธ์กฐ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Python
์ด ์ํ์ ์๋ํ๊ธฐ ์ ์ ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Python ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Pub/Sub Python API ์ฐธ์กฐ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Ruby
๋ค์ ์ํ์์๋ Ruby Pub/Sub ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ v3์ ์ฌ์ฉํฉ๋๋ค. ์์ง v2 ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด v3๋ก์ ์ด์ ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์. Ruby v2 ์ฝ๋ ์ํ ๋ชฉ๋ก์ ๋ณด๋ ค๋ฉด ์ง์ ์ค๋จ๋ ์ฝ๋ ์ํ์ ์ฐธ๊ณ ํ์ธ์.
์ด ์ํ์ ์๋ํ๊ธฐ ์ ์ ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Ruby ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Pub/Sub Ruby API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
ํํฐ์ ์ต๋ ๊ธธ์ด๋ 256๋ฐ์ดํธ์ ๋๋ค. ํํฐ๋ ๋ณ๊ฒฝํ ์ ์๋ ๊ตฌ๋ ์์ฑ์ ๋๋ค. ๊ตฌ๋ ์ ๋ง๋ ํ์๋ ํํฐ๋ฅผ ์์ ํ๊ธฐ ์ํด ๊ตฌ๋ ์ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
ํํฐ๊ฐ ๋ฐฑ๋ก๊ทธ ์ธก์ ํญ๋ชฉ์ ๋ฏธ์น๋ ์ํฅ
๋ฐฉ๊ธ ๋ง๋ ๊ตฌ๋ ์ ๋ชจ๋ํฐ๋งํ๋ ค๋ฉด ํํฐ๋ฅผ ์ฌ์ฉํ ๊ตฌ๋ ๋ชจ๋ํฐ๋ง์ ์ฐธ์กฐํ์ธ์.
ํํฐ๋ง์ ์ฌ์ฉ ์ค์ ํ ๊ฒฝ์ฐ ๋ฐฑ๋ก๊ทธ ์ธก์ ํญ๋ชฉ์๋ ํํฐ์ ์ผ์นํ๋ ๋ฉ์์ง์ ๋ฐ์ดํฐ๋ง ํฌํจ๋ฉ๋๋ค. ๋ค์์ ๋ฐฑ๋ก๊ทธ ์ธก์ ํญ๋ชฉ ๋ชฉ๋ก์ ๋๋ค.
subscription/backlog_bytes
subscription/unacked_bytes_by_region
subscription/num_undelivered_messages
subscription/num_unacked_messages_by_region
subscription/oldest_unacked_message_age
subscription/oldest_unacked_message_age_by_region
topic/unacked_bytes_by_region
topic/num_unacked_messages_by_region
topic/oldest_unacked_messages_age_by_region
์ด๋ฌํ ์ธก์ ํญ๋ชฉ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด Pub/Sub ์ธก์ ํญ๋ชฉ ๋ชฉ๋ก์ ์ฐธ์กฐํ์ธ์.
๊ตฌ๋ ํํฐ ์ ๋ฐ์ดํธ
๊ธฐ์กด ๊ตฌ๋ ์ ํํฐ๋ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ๋์ ์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ฐ๋ฅด์ธ์.
ํํฐ๋ฅผ ๋ณ๊ฒฝํ ๊ตฌ๋ ์ ์ค๋ ์ท์ ๋ง๋ญ๋๋ค.
์ฝ์์ ์ฌ์ฉํ์ฌ ์ค๋ ์ท์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ค๋ ์ท ๋ง๋ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ํํฐ๋ก ์ ๊ตฌ๋ ์ ๋ง๋ญ๋๋ค.
ํํฐ๋ก ๊ตฌ๋ ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํํฐ๋ก ๊ตฌ๋ ๋ง๋ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
Google Cloud ์ฝ์์์ Pub/Sub ๊ตฌ๋ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ฐฉ๊ธ ๋ง๋ ๊ตฌ๋ ์ ํด๋ฆญํฉ๋๋ค.
๊ตฌ๋ ์ธ๋ถ์ ๋ณด ํ์ด์ง์์ ๋ฉ์์ง ๋ค์๋ณด๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
ํ์์์ ์ค๋ ์ท๊น์ง๋ฅผ ํด๋ฆญํฉ๋๋ค.
1๋จ๊ณ์์ ์๋ ๊ตฌ๋ ์ ๋ํด ๋ง๋ ์ค๋ ์ท์ ์ ํํ ํ ํ์์ ํด๋ฆญํฉ๋๋ค.
์ ํ ์ค์ ๋ฉ์์ง๊ฐ ์์ค๋์ง ์์ต๋๋ค.
์ ๊ตฌ๋ ์ ์ฌ์ฉํ๋๋ก ๊ตฌ๋ ์๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
์ด ์ ์ฐจ๋ฅผ ์๋ฃํ ํ์๋ ์๋ ๊ตฌ๋ ์ ์ญ์ ํ ์ ์์ต๋๋ค.
ํํฐ๋ฅผ ๋ง๋๋ ๊ตฌ๋ฌธ
๋ฉ์์ง๋ฅผ ํํฐ๋งํ๋ ค๋ฉด ์์ฑ์ผ๋ก ์๋ํ๋ ํํ์์ ์์ฑํฉ๋๋ค. ์์ฑ์ ํค ๋๋ ๊ฐ๊ณผ ์ผ์นํ๋ ํํ์์ ์์ฑํ ์ ์์ต๋๋ค. attributes
์๋ณ์๋ ๋ฉ์์ง์ ์์ฑ์ ์ ํํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์ ํ
์ด๋ธ์ ํํฐ๋ name
์์ฑ์ ์ ํํฉ๋๋ค.
ํํฐ | ์ค๋ช |
---|---|
attributes:name |
name ์์ฑ์ด ์๋ ๋ฉ์์ง |
NOT attributes:name |
name ์์ฑ์ด ์๋ ๋ฉ์์ง |
attributes.name = "com" |
name ์์ฑ ๋ฐ com ๊ฐ์ด ์๋ ๋ฉ์์ง |
attributes.name != "com" |
name ์์ฑ ๋ฐ com ๊ฐ์ด ์๋ ๋ฉ์์ง |
hasPrefix(attributes.name, "co") |
name ์์ฑ ๋ฐ co ๋ก ์์ํ๋ ๊ฐ์ด ์๋ ๋ฉ์์ง |
NOT hasPrefix(attributes.name, "co") |
name ์์ฑ์ด ์๊ณ co ๋ก ์์ํ๋ ๊ฐ์ด ์๋ ๋ฉ์์ง |
ํํฐ ํํ์์ ๋น๊ต ์ฐ์ฐ์
๋ค์ ๋น๊ต ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ์ ํํฐ๋งํ ์ ์์ต๋๋ค.
:
=
!=
:
์ฐ์ฐ์๋ ์์ฑ ๋ชฉ๋ก์์ ์ผ์นํ๋ ํค๋ฅผ ์ฐพ์ต๋๋ค.
attributes:KEY
๋ฑํธ ์ฐ์ฐ์๋ ์ผ์นํ๋ ํค์ ๊ฐ์ ์ฐพ์ต๋๋ค. ๊ฐ์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ด์ด์ผ ํฉ๋๋ค.
attributes.KEY = "VALUE"
๋ฑํธ ์ฐ์ฐ์๊ฐ ์๋ ํํ์์ ํค๋ก ์์ํด์ผ ํ๋ฉฐ ๋ฑํธ ์ฐ์ฐ์๋ ํค์ ๊ฐ์ ๋น๊ตํด์ผ ํฉ๋๋ค.
์ ํจ: ํํฐ๊ฐ ํค์ ๊ฐ์ ๋น๊ตํฉ๋๋ค.
attributes.name = "com"
์ ํจํ์ง ์์: ํํฐ์ ์ผ์ชฝ ์ธก๋ฉด์ด ๊ฐ์ ๋๋ค.
"com" = attributes.name
์ ํจํ์ง ์์: ํํฐ๊ฐ ๋ ํค๋ฅผ ๋น๊ตํฉ๋๋ค.
attributes.name = attributes.website
ํค์ ๊ฐ์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ฉฐ ์์ฑ๊ณผ ์ ํํ๊ฒ ์ผ์นํด์ผ ํฉ๋๋ค. ํค์ ํ์ดํ, ๋ฐ์ค, ์์ซ์ ๋ฌธ์ ์ด์ธ์ ๋ฌธ์๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ์ฌ์ฉํฉ๋๋ค.
attributes."iana.org/language_tag" = "en"
ํํฐ์ ๋ฐฑ์ฌ๋์, ๋ฐ์ดํ, ์ธ์๋์ง ์๋ ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ฌธ์์ด ๋ฆฌํฐ๋ด ๋ด์์ ๋ฌธ์๋ฅผ ์ด์ค์ผ์ดํํฉ๋๋ค. ๋ฌธ์์ด ๋ฆฌํฐ๋ด ๋ด์์ ์ ๋์ฝ๋, 16์ง์, 8์ง์ ์ด์ค์ผ์ดํ ์ํ์ค๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
์ ํจ: ํํฐ๊ฐ ๋ฌธ์์ด ๋ฆฌํฐ๋ด ๋ด์ ๋ฌธ์๋ฅผ ์ด์ค์ผ์ดํํฉ๋๋ค.
attributes:"\u307F\u3093\u306A"
์ ํจํ์ง ์์: ํํฐ๊ฐ ๋ฌธ์์ด ๋ฆฌํฐ๋ด ์์ด ๋ฌธ์๋ฅผ ์ด์ค์ผ์ดํํฉ๋๋ค.
attributes:\u307F\u3093\u306A
ํํฐ ํํ์์ ๋ถ๋ฆฌ์ธ ์ฐ์ฐ์
ํํฐ์ ๋ถ์ธ ์ฐ์ฐ์ AND
, NOT
, OR
๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฐ์ฐ์๋ ๋๋ฌธ์์ฌ์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ ํํฐ๋ iana.org/language_tag
์์ฑ์ด ์๊ณ name
์์ฑ๊ณผ com
๊ฐ์ด ์๋ ๋ฉ์์ง์ ์ฌ์ฉ๋ฉ๋๋ค.
attributes:"iana.org/language_tag" AND NOT attributes.name = "com"
NOT
์ฐ์ฐ์์ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ต๋๋ค. AND
๋ฐ OR
์ฐ์ฐ์๋ฅผ ๊ฒฐํฉํ๋ ค๋ฉด ๊ดํธ์ ์์ ํ ํํ์์ ์ฌ์ฉํฉ๋๋ค.
์ ํจ:
AND
๋ฐOR
์ฐ์ฐ์(๊ดํธ ํฌํจ)attributes:"iana.org/language_tag" AND (attributes.name = "net" OR attributes.name = "org")
์ ํจํ์ง ์์: ๊ดํธ ์๋
AND
๋ฐOR
์ฐ์ฐ์attributes:"iana.org/language_tag" AND attributes.name = "net" OR attributes.name = "org"
์ ํจํ์ง ์์:
AND
์ฐ์ฐ์์OR
์ฐ์ฐ์๊ฐ ๋ถ์์ ํ ํํ์์ ๊ฒฐํฉํจattributes.name = "com" AND ("net" OR "org")
NOT
์ฐ์ฐ์ ๋์ ๋จํญ ๋บ์
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
attributes.name = "com" AND -attributes:"iana.org/language_tag"
ํํฐ ํํ์์ ํจ์
hasPrefix
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ ๋ฌธ์์ด๋ก ์์ํ๋ ๊ฐ์ด ์๋ ์์ฑ์ ํํฐ๋งํ ์ ์์ต๋๋ค. hasPrefix
๋ ํํฐ์์ ์ง์๋๋ ์ ์ผํ ํจ์์
๋๋ค.
hasPrefix
ํจ์์์๋ ํ๋ฆฌํฝ์ค ์ผ์น๊ฐ ์ง์๋์ง๋ง ์ผ๋ฐ ์ ๊ท ํํ์์ด ์ง์๋์ง ์์ต๋๋ค.
hasPrefix(attributes.KEY, "SUBSTRING")
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- KEY: ์์ฑ์ ์ด๋ฆ
- SUBSTRING: ๊ฐ์ ํ์ ๋ฌธ์์ด