เบเปเบฒเบเปเบฒเบเปเบเบตเบเปเบเปเบญเบดเบเปเบเบตเปเบเบเปเบงเบฑเบเปเบเบทเปเบญเปเบเบดเปเบเบเบฑเบเบเบถเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบญเบฒเบเบเบฐเบชเบฑเบเปเบเบเปเบซเบฑเบเบงเบดเบเบตเบเบฒเบ, เบเบฒเบกเบเบปเบเบฅเบฐเบเบฝเบ, เบเบฒเบเปเบเปเบเบญเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบเบซเบเบธเปเบเบเบฒเบเปเบฅเบฐ (เปเบฅเบทเปเบญเบเป) เบเปเปเบชเบฐเบเบงเบเปเบฅเบฐเบเบญเบเบชเบฐเบซเบเบญเบเบซเบผเบฒเบ. เบเบฒเบเบเบปเบเบเบตเปเปเบเบปเปเบฒเบเบธเปเบเปเบเบตเบ, เบเบฒเบเบเบปเบเบเปเปเบเบตเปเบฎเปเบฒเบเปเบเปเป, เปเบเปเบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเปเบญเบเบงเปเบฒเปเบซเบเบเบปเบเบเบญเบเบเบฑเบเบซเบฒเบเบฑเบเบซเบกเบปเบเปเบกเปเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบเบปเปเบฒเบซเบฒเบงเบฝเบเบเบฒเบเบเบญเบเบเบฒเบเปเบเบดเปเบเบเบฑเบเบเบถเบเบเบตเปเบเปเปเบเบทเบเบเปเบญเบ: เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฒเบเบฒเบกเบชเปเบฒเบเปเบงเบฑเบเบเบตเป CLI (เบเบฒเบเปเบเปเบเบญเบเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบ) เปเบฎเบฑเบเบงเบฝเบเบเบตเบเบถเปเบ. เบเปเบฒเบเบฐเปเบเบปเปเบฒเบชเปเบงเบเบเบธเบเบเบปเบเบกเบตเบเบงเบฒเบกเบชเบฐเบเบงเบเบชเบฐเบเบฒเบเบซเบผเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ tail, grep, awk เปเบฅเบฐเบญเบทเปเบเป, เปเบฅเบฐเบเบฑเปเบเบเบฑเปเบ, เบชเปเบฒเบฅเบฑเบเบเปเบญเบ, เบเบฒเบเปเบเปเบเบญเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบฑเบเบเบถเบเบเบฐเปเบเบฑเบเบชเบดเปเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบ tail เปเบฅเบฐ grep, เปเบเปเบกเบฑเบเบเบฑเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบญเปเบฒเบเบเบฑเบเบเบถเบเบเบตเปเบกเบฒเบเบฒเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเปเบฒเบเบงเบเบซเบผเบฒเบ. เบเบฑเปเบเปเบกเปเบ, เปเบเปเบเบญเบ, เบญเปเบฒเบเบเบงเบเปเบเบปเบฒเบเบฒเบ ClickHouse!
* เบญเบตเบเบเบฒเบกเบเบงเบฒเบกเบเบดเบเปเบซเบฑเบเบชเปเบงเบเบเบปเบงเบเบญเบเบเบนเปเปเบเป habra
เบเบปเบเบเบฑเบ logscli
เบเปเบญเบเบเปเปเปเบเปเบกเบฒเบเบฑเบเบเบทเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเปเบเบญเบเบเบญเบเบเปเบญเบ, เปเบฅเบฐ, เบเปเบงเบเบเบงเบฒเบกเบเบทเปเบชเบฑเบ, เบกเบฑเบเบกเบตเบขเบนเปเปเบเบฎเบนเบเปเบเบเบเบญเบเบเบปเปเบเปเบเบ, เปเบเปเบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบเบดเปเบเบฅเบฐเบซเบฑเบเปเบซเบผเปเบเบเบฑเบเบเบต, เบเปเบฒเบเบเบดเบเบเบตเบเปเบญเบเบฎเบฑเบ:
เบเบธเบเบเบฐเบชเบปเบกเบเบฑเบ
เปเบเบปเปเบฒโเบซเบกเบฒเบโเบเบญเบโเบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเปเบกเปเบโเปเบเบทเปเบญโเปเบฎเบฑเบโเปเบซเปโเบเบฒเบโเปเบเปโเบเบญเบโเบเบตเปโเบเบฐโเปเบเบดเปเบโเบเบทโเบงเปเบฒโเบเบธเปเบโเปเบเบตเบโเบเบฑเบโเบเบนเปโเบเบตเปโเบเบทเบโเบเปเบฒโเปเบเปโเปเบเบทเปเบญ tail / grepโ, เบเบฑเปเบโเปเบกเปเบโ, เบชเบฐโเบซเบเบฑเบโเบชเบฐโเบซเบเบนเบโเบชเบดเปเบโเบเบฑเปเบโเบเปเปโเปเบโเบเบตเปโ:
- เปเบเบดเปเบเบเบฑเบเบเบถเบเบเบฑเบเปเบปเบ, เปเบเบเบเปเปเบกเบตเบเบฒเบเบเบฑเปเบเบเบญเบ.
- เบเปเบญเบเปเบซเปเปเบเบงเบเบตเปเบกเบตเบชเบฒเบเบเปเบญเบเบเบปเบเบเบตเป (เบเบธเบ
-F
ัgrep
). - เบญเบญเบเบเบฒเบเปเบชเบฑเปเบเบเบตเปเบเบปเบเบเบฑเบเบเบฒเบเบชเบฐเปเบเบเบเบปเบเบเบปเบเบเบฐเบเบด (เบเบธเบ
-E
ัgrep
). - เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ, เบเบฒเบเปเบเบดเปเบเบขเบนเปเปเบเบฅเปเบฒเบเบฑเบเปเบซเบเบเบฒเบเปเบเบเบเบตเปเบเบเบฑเบเบเบฑเบ, เปเบเบฒเบฐเบงเปเบฒเบเบฑเบเบเบถเบเบเบตเปเบเปเบฒเบเบกเบฒเบซเบผเบฒเบเบเบตเปเบชเบธเบเบกเบฑเบเบเบฐเบกเบตเบเบงเบฒเบกเบชเบปเบเปเบเบเปเบญเบ.
- เบชเบฐเปเบเบเบเปเบฅเบดเบเบปเบเบเบฑเบเบเบฒเบเปเบเปเบฅเบฐเปเบเบง (เบเบปเบงเปเบฅเบทเบญเบ
-A
,-B
ะธ-C
ัgrep
, เบเบฒเบเบเบดเบก N เปเบชเบฑเปเบเบเปเบญเบ, เบซเบผเบฑเบเบเบฒเบ, เปเบฅเบฐเบเบฐเบกเบฒเบเปเบเปเบฅเบฐเปเบชเบฑเปเบเบเบตเปเบเบปเบเบเบฑเบ, เบเบฒเบกเบฅเปเบฒเบเบฑเบ). - เปเบเบดเปเบเบเบฑเบเบเบถเบเบเบตเปเปเบเบปเปเบฒเบกเบฒเปเบเปเบงเบฅเบฒเบเบดเบ, เบกเบตเบซเบผเบทเบเปเปเบกเบตเบเบฒเบเบเบฑเปเบเบเบญเบ (เปเบเบเบเปเบฒเปเบเบฑเบ
tail -f | grep
). - เบเบฒเบเปเบเปเบเบญเบเบเปเบญเบเปเบเบปเปเบฒเบเบฑเบเปเบเปเบเบฑเบ
less
,head
,tail
เปเบฅเบฐเบญเบทเปเบเป - เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ, เบเบปเบเปเบเปเบฎเบฑเบเบเบงเบเบเบฐเบเบทเบเบชเบปเปเบเบเบทเบเปเบเบเบเปเปเบกเบตเบเปเปเบเปเบฒเบเบฑเบเบเปเบฝเบงเบเบฑเบเบเปเบฒเบเบงเบเบเบญเบเบเบงเบเปเบเบปเบฒ; เบชเบฒเบเบเบทเบเบเบดเบกเบญเบญเบเปเบเบฑเบเบชเบฒเบเบเปเปเบฒเบเบฒเบเปเบเบเบตเปเบเบนเปเปเบเปเบกเบตเบเบงเบฒเบกเบชเบปเบเปเบเบเบตเปเบเบฐเปเบเปเบฎเบฑเบเบเบงเบเบกเบฑเบ; เบชเบฑเบเบเบฒเบSIGPIPE
เบเบงเบเบเบฑเบเบเบงเบฒเบเบเบฒเบเบเปเบฒเบเบเบญเบเบเบฑเบเบเบถเบเบขเปเบฒเบเบเบฝเบเป, เบเบทเบเบฑเบเบเบฑเบเบเบงเบเปเบเบปเบฒtail
,grep
เปเบฅเบฐเบญเบธเบเบฐเบเบญเบเบญเบทเปเบเปเบเบญเบ UNIX.
ะ ะตะฐะปะธะทะฐัะธั
เบเปเบญเบเบเบฐเบชเบปเบกเบกเบธเบเบงเปเบฒเปเบเบปเปเบฒเบฎเบนเปเบงเบดเบเบตเบเบฒเบเบชเบปเปเบเบเบฑเบเบเบถเบเปเบเบซเบฒ ClickHouse เปเบฅเปเบง. เบเปเบฒเบเปเป, เบเปเบญเบเบเปเปเบเบฐเบเปเบฒเปเบซเปเบฅเบญเบเบกเบฑเบ
เบเปเบญเบเบญเบทเปเบ เปเบปเบ, เบเปเบฒเบ เบเบณ เปเบเบฑเบเบเปเบญเบเบเบฑเบเบชเบดเบเปเบเบเปเบฝเบงเบเบฑเบเปเบเบเบเบฒเบเบเบทเปเบเบเบฒเบ. เปเบเบทเปเบญเบเบเบฒเบเบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบเปเบฒเบเบเปเบญเบเบเบฒเบเบฎเบฑเบเบเบฑเบเบเบถเบเบเบตเปเบเบฑเบเบฎเบฝเบเบเบฒเบกเปเบงเบฅเบฒ, เบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบชเบปเบกเปเบซเบเบชเบปเบกเบเบปเบเบเบตเปเบเบฐเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบงเบเบกเบฑเบเบเปเบงเบเบงเบดเบเบตเบเบฑเปเบ. เบเปเบฒเบกเบตเบซเบฅเบฒเบเบเบฐเปเบเบเบเบฑเบเบเบถเบเปเบฅเบฐเบเบงเบเบกเบฑเบเปเบเบฑเบเบเบฐเปเบเบเบเบฝเบงเบเบฑเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบชเปเบฒเบเบเบฐเปเบเบเบเบฑเบเบเบถเบเปเบเบฑเบเบเปเบฅเปเบฒเบเปเบฒเบญเบดเบเบเบญเบเบฅเบฐเบซเบฑเบเบเบปเปเบเบเป - เบเบตเปเบเบฐเบเปเบงเบเปเบซเปเบเปเบฒเบเบกเบตเบเบฒเบเบฐเบฅเบฒเบเบซเบเบถเปเบเปเบเบเบเบตเปเบเบฐเปเบเบฑเบเบซเบผเบฒเบ, เปเบเบดเปเบเบเบฐเปเบเบฑเบเบเบงเบเปเบซเบเปเปเบกเบทเปเบญ. เบเบฒเบเปเบชเปเปเบเบปเปเบฒเปเบเปเบ ClickHouse (เปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบตเปเบกเบตเบฎเบฒเบเปเบ, เบกเบฑเบเปเบเบฐเบเปเบฒเปเบซเปเปเบชเปเบเปเปเบกเบนเบเบเปเปเปเบเบตเบ ~ 1 เปเบเบทเปเบญเบเปเปเบงเบดเบเบฒเบเบต. เบชเปเบฒเบฅเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฑเบเบซเบกเบปเบ).
เบเบฑเปเบเปเบกเปเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเบฐเบกเบฒเบเปเบเบเบเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเปเปเปเบเบเบตเป:
CREATE TABLE logs(
category LowCardinality(String), -- ะบะฐัะตะณะพัะธั ะปะพะณะพะฒ (ะพะฟัะธะพะฝะฐะปัะฝะพ)
time DateTime, -- ะฒัะตะผั ัะพะฑััะธั
millis UInt16, -- ะผะธะปะปะธัะตะบัะฝะดั (ะผะพะณัั ะฑััั ะธ ะผะธะบัะพัะตะบัะฝะดั, ะธ ั.ะด.): ัะตะบะพะผะตะฝะดัะตััั ั
ัะฐะฝะธัั, ะตัะปะธ ัะพะฑััะธะน ะผะฝะพะณะพ, ััะพะฑั ะฑัะปะพ ะปะตะณัะต ัะฐะทะปะธัะฐัั ัะพะฑััะธั ะผะตะถะดั ัะพะฑะพะน
..., -- ะฒะฐัะธ ัะพะฑััะฒะตะฝะฝัะต ะฟะพะปั, ะฝะฐะฟัะธะผะตั ะธะผั ัะตัะฒะตัะฐ, ััะพะฒะตะฝั ะปะพะณะธัะพะฒะฐะฝะธั, ะธ ัะฐะบ ะดะฐะปะตะต
message String -- ัะตะบัั ัะพะพะฑัะตะฝะธั
) ENGINE=MergeTree()
ORDER BY (category, time, millis)
เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เบเปเบญเบเบเปเปเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเปเบซเบผเปเบเปเบเบตเบเบเบตเปเบกเบตเบเบฑเบเบเบถเบเบเบปเบงเบเบดเบเบเบตเปเบเปเบญเบเบชเบฒเบกเบฒเบเบเบฑเบเปเบฅเบฐเบเบฒเบงเปเบซเบฅเบเปเบเป, เบเบฑเปเบเบเบฑเปเบเบเปเบญเบเบเบถเปเบเปเบญเบปเบฒเบญเบฑเบเบเบตเปเบกเบฒเปเบเบฑเบเบเบปเบงเบขเปเบฒเบ.
เบเปเบฒเปเบเบฐเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบญเบฑเบเปเบซเบฅเบเบเบฒเบเบเบปเบเบเบงเบเบเบทเบ Amazon เบเบฑเบ ClickHouse
เบกเบฒเบชเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบ:
CREATE TABLE amazon(
review_date Date,
time DateTime DEFAULT toDateTime(toUInt32(review_date) * 86400 + rand() % 86400),
millis UInt16 DEFAULT rand() % 1000,
marketplace LowCardinality(String),
customer_id Int64,
review_id String,
product_id LowCardinality(String),
product_parent Int64,
product_title String,
product_category LowCardinality(String),
star_rating UInt8,
helpful_votes UInt32,
total_votes UInt32,
vine FixedString(1),
verified_purchase FixedString(1),
review_headline String,
review_body String
)
ENGINE=MergeTree()
ORDER BY (time, millis)
SETTINGS index_granularity=8192
เปเบเบเบธเบเบเปเปเบกเบนเบ Amazon เบกเบตเบเบฝเบเปเบเปเบงเบฑเบเบเบตเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบงเบ, เปเบเปเบเปเปเบกเบตเปเบงเบฅเบฒเบเบตเปเปเบเปเบเบญเบ, เบชเบฐเบเบฑเปเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเบทเปเบกเบเปเปเบกเบนเบเบเบตเปเบเปเบงเบ randon.
เบเปเบฒเบเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฒเบงเปเบซเบฅเบเปเบเบฅเป tsv เบเบฑเบเบซเบกเบปเบเปเบฅเบฐเบเปเบฒเบเบฑเบเบเบปเบงเบเปเบฒเบเปเบญเบเบขเบนเปเบเบตเป ~ 10-20 เบเปเบฒเบญเบดเบเปเบเบทเปเบญเปเบซเปเปเบเปเบเบธเบเบเปเปเบกเบนเบเบเบฐเบซเบเบฒเบเปเบซเบเปเบเปเบชเบปเบกเบเบงเบเบเบตเปเบเบฐเบเปเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบ 16 GB เบเบญเบ RAM. เปเบเบทเปเบญเบญเบฑเบเปเบซเบฅเบเปเบเบฅเป TSV เบเปเบญเบเปเบเปเบเปเบฒเบชเบฑเปเบเบเปเปเปเบเบเบตเป:
for i in *.tsv; do
echo $i;
tail -n +2 $i | pv |
clickhouse-client --input_format_allow_errors_ratio 0.5 --query='INSERT INTO amazon(marketplace,customer_id,review_id,product_id,product_parent,product_title,product_category,star_rating,helpful_votes,total_votes,vine,verified_purchase,review_headline,review_body,review_date) FORMAT TabSeparated'
done
เปเบ Disk Persistent เบกเบฒเบเบเบฐเบเบฒเบ (เปเบเบดเปเบเปเบเบฑเบ HDD) เปเบ Google Cloud เบเบตเปเบกเบตเบเบฐเบซเบเบฒเบ 1000 GB (เบเปเบญเบเปเบญเบปเบฒเบเบฐเบซเบเบฒเบเบเบตเปเบชเปเบงเบเปเบซเบเปเปเบเบทเปเบญเปเบซเปเบเบงเบฒเบกเปเบงเบชเบนเบเบเบงเปเบฒเปเบฅเบฑเบเบเปเบญเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบฒเบเบเบต SSD เบเบญเบเบเบฐเบซเบเบฒเบเบเบตเปเบเปเบญเบเบเบฒเบเบเบฐเบกเบตเบฅเบฒเบเบฒเบเบทเบเบเบงเปเบฒ) เบเบฒเบเบญเบฑเบเปเบซเบฅเบ เบเบงเบฒเบกเปเบงเปเบกเปเบเบเบฐเบกเบฒเบ ~ 75 MB / เบงเบดเบเบฒเบเบตเปเบ 4 เปเบเบ.
- เบเปเบญเบเบเปเบญเบเปเบฎเบฑเบเบเบฒเบเบเบญเบเบเบตเปเบเปเบญเบเปเบฎเบฑเบเบงเบฝเบเบขเบนเป Google, เปเบเปเบเปเบญเบเปเบเปเบเบฑเบเบเบตเบชเปเบงเบเบเบปเบงเปเบฅเบฐเบเบปเบเบเบงเบฒเบกเบเบตเปเบเปเปเบกเบตเบซเบเบฑเบเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบเปเบญเบเบขเบนเปเบเปเบฅเบดเบชเบฑเบ.
เบเปเบญเบเบเบฐเบเบฐเบฅเบดเบเบฎเบนเบเปเบเปเบกเบเบฑเบเปเบปเบเบเปเบงเบเบเบธเบเบเปเปเบกเบนเบเบชเบฐเปเบเบฒเบฐเบเบตเป, เปเบเบฒเบฐเบงเปเบฒเบเบตเปเปเบกเปเบเบเบฑเบเปเบปเบเบเบตเปเบเปเบญเบเบกเบตเบขเบนเปเปเบเบกเบท.
เบชเบฐเปเบเบเบเบงเบฒเบกเบเบทเบเปเปเบฒเบเบฒเบเบชเบฐเปเบเบเบเปเปเบกเบนเบ
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเปเบ ClickHouse เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบเบฒเบเบชเบฐเปเบเบเปเบเบฑเบกเบขเบนเปเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบกเบตเบเบฑเบเบเบถเบ, เปเบฅเบฐเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบตเปเบชเบฒเบกเบฒเบเปเบเปเปเบงเบฅเบฒเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบเปเบฅเบฐเบญเบฒเบเบเบฐเบเปเปเบกเบตเบเบปเบเปเบเปเบชเปเบฒเบฅเบฑเบเปเบงเบฅเบฒเบเบปเบเบเบฒเบเบเปเบฒเบเบปเบเบชเบญเบเบชเบฒเบกเบเปเบฒ, เปเบเบฐเบเปเบฒเปเบซเปเบชเบฒเบกเบฒเบเบชเบฐเปเบเบเบเบปเบเปเบเป. เบเบงเบฒเบกเบเบทเบเบซเบเปเบฒเบเบญเบเบเบฒเบเบชเบญเบเบเบฒเบกเบเบปเบเบเปเบงเบฒเปเบเบงเบเปเบฒเบญเบดเบเบเบตเปเบกเบตเบเบปเบเปเบเปเบฎเบฑเบเปเบกเปเบเปเบเปเบฎเบฑเบ. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบกเบตเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเปเบเบเบฒเบเปเบเปเบเบญเบ HTTP เบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบชเบปเปเบเบเบงเบฒเบกเบเบทเบเบซเบเปเบฒเปเบเบชเปเบงเบเบซเบปเบง HTTP: send_progress_in_http_headers=1
. เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เบซเปเบญเบเบชเบฐเบซเบกเบธเบ Go เบกเบฒเบเบเบฐเบเบฒเบเบเปเปเบชเบฒเบกเบฒเบเบญเปเบฒเบ headers เบเปเบญเบเบงเปเบฒเบเบงเบเปเบเบปเบฒเปเบเปเบฎเบฑเบ, เปเบเป HTTP 1.0 interface (เบเปเปเบเบงเบเบชเบฑเบเบชเบปเบเบเบฑเบ 1.1!) เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเปเบเบ ClickHouse, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบตเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเป TCP เบเบดเบเบเบฑเบ ClickHouse เปเบฅเบฐเบชเบปเปเบเปเบเบเบตเปเบเบฑเปเบ. GET /?query=... HTTP/1.0nn
เปเบฅเบฐเปเบเปเบฎเบฑเบเบชเปเบงเบเบซเบปเบงเบเบฒเบเบเบญเบเบชเบฐ เปเบญเบ เปเบฅเบฐเบฎเปเบฒเบเบเบฒเบเปเบเบเบเปเปเบกเบตเบเบฒเบเบซเบฅเบปเบเบซเบเบตเบซเบผเบทเบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบ, เบเบฑเปเบเบเบฑเปเบเปเบเบเปเบฅเบฐเบเบตเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบกเบฒเบเบเบฐเบเบฒเบ.
เบเบฑเบเบเบถเบเบเบฒเบเบเปเบฒเบเบเบญเบเบเบฒเบ ClickHouse
ClickHouse เบกเบตเบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบญเบเบเบฒเบกเบเบฑเบ ORDER BY เบชเปเบฒเบฅเบฑเบเปเบงเบฅเบฒเบเบปเบเบเบฒเบ (เบเบฑเบเบเบฑเปเบเปเบเป 2019?), เบเบฑเปเบเบเบฑเปเบเบเบฒเบเบชเบญเบเบเบฒเบกเปเบเบฑเปเบ:
SELECT time, millis, message
FROM logs
WHERE message LIKE '%something%'
ORDER BY time DESC, millis DESC
เบกเบฑเบเบเบฑเบเบเบตเบเบฐเปเบฅเบตเปเบกเบเบปเปเบเบเบฑเบเบเบทเบเบชเบฒเบเบเบตเปเบกเบต substring "เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบ" เปเบเบเปเปเบเบงเบฒเบกเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒ, เปเบเบเบเปเปเบกเบตเบเบฒเบเบฅเปเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบฐเปเบเบเบชเปเบฒเปเบฅเบฑเบเบฎเบนเบ.
เบเบญเบเบเบฒเบเบเบตเป, เบกเบฑเบเบเบฐเบชเบฐเบเบงเบเบซเบผเบฒเบเบเปเบฒ ClickHouse เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเบเบปเบเปเบฅเบตเบเบเบฒเบเบฎเปเบญเบเบเปเปเบกเบทเปเบญเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบกเบฑเบเบเบทเบเบเบดเบ, เปเบเปเบเบตเปเบเปเปเปเบกเปเบเบเบถเบเบเบดเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ. เบเบฒเบเบเบปเบเปเบฅเบตเบเบเบฒเบเบฎเปเบญเบเบเปเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบชเบฒเบกเบฒเบเบเบทเบเปเบเบตเบเปเบเปเปเบเบเปเบเปเบเบปเบงเปเบฅเบทเบญเบ cancel_http_readonly_queries_on_client_close=1
.
เบเบฒเบเบเบฑเบเบเบฒเบ SIGPIPE เบเบตเปเบเบทเบเบเปเบญเบเปเบ Go
เปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบเบฐเบเบดเบเบฑเบ, เปเบงเบปเปเบฒเบงเปเบฒ, เบเปเบฒเบชเบฑเปเบ some_cmd | head -n 10
, เปเบเปเบงเบดเบเบตเบเบฒเบเบเปเบฒเบชเบฑเปเบ some_cmd
เบขเบธเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบกเบทเปเบญ head
เบฅเบปเบ 10 เปเบเบง? เบเปเบฒเบเบญเบเปเบกเปเบเบเปเบฒเบเบเบฒเบ: เปเบกเบทเปเบญ head
เบชเบดเปเบเบชเบธเบ, เบเปเปเบเบดเบ, เปเบฅเบฐ stdout เบเบญเบเบเปเบฒเบชเบฑเปเบ some_cmd เปเบฅเบตเปเบกเบเบปเปเบเบเบตเปเบเบฐเบเบตเป, เบเบฒเบกเปเบเบทเปเบญเบเปเบ, "เปเบเปเบช". เปเบกเบทเปเบญโเปเบโ some_cmd
เบเบฐเบเบฒเบเบฒเบกเบเบฝเบเปเบชเปเบเปเปเบเบดเบ,
เปเบ Go เบเบตเปเบเบฑเบเปเบเบตเบเบเบทเปเบเปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ, เปเบเปเบเบปเบงเบเบฑเบเบเบฒเบเบชเบฑเบเบเบฒเบ SIGPIPE เบเบฑเบเบเบดเบก "เบชเบฑเบเบเบฒเบ: SIGPIPE" เบซเบผเบทเบเปเปเบเบงเบฒเบกเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเปเบเบเบญเบเบเปเบฒเบเบเบญเบเบเปเปเบเบงเบฒเบกเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบเบเบฑเบเบเบฒเบ SIGPIPE เบเบปเบงเปเบญเบเปเบเปเบเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบ, เบเบฑเปเบเปเบกเปเบ, เบเบฝเบเปเบเปเบเบฝเบเป. เบญเบญเบ:
ch := make(chan os.Signal)
signal.Notify(ch, syscall.SIGPIPE)
go func() {
<-ch
os.Exit(0)
}()
เบชเบฐเปเบเบเบเปเบฅเบดเบเบปเบเบเบญเบเบเปเปเบเบงเบฒเบก
เปเบฅเบทเปเบญเบเปเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบเบดเปเบเบชเบฐเบเบฒเบเบเบฒเบเบเบตเปเปเบเบตเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบฒเบเบขเปเบฒเบ (เบเบปเบงเบขเปเบฒเบ, เบเบฒเบเบฎเปเบญเบเบเปเบเบตเปเปเบฎเบฑเบเปเบซเปเปเบเบตเบเบเบงเบฒเบกเบเบทเปเบเบเบปเบเปเบ, เบซเบผเบทเบเบฑเบเบซเบฒเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบตเปเปเบซเบฑเบเปเบเปเบเปเบญเบเบเบตเปเบเบฐเปเบเบตเบเบญเบธเบเบฐเบเบดเปเบซเบ), เปเบฅเบฐเปเบ grep
เบเบตเปเปเบกเปเบเปเบฎเบฑเบเปเบเปเปเบเบเปเบเปเบเบปเบงเปเบฅเบทเบญเบ -A, -B, เปเบฅเบฐ -C, เปเบเบดเปเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเปเบฒเบเบงเบเปเบชเบฑเปเบเบเบตเปเบเปเบฒเบเบปเบเปเบงเปเบซเบผเบฑเบเบเบฒเบ, เบเปเบญเบ, เปเบฅเบฐเบเบฐเบกเบฒเบเบเปเปเบเบงเบฒเบก, เบเบฒเบกเบฅเปเบฒเบเบฑเบ.
เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เบเปเบญเบเบเปเปเบเบปเบเบงเบดเบเบตเบเบตเปเบเปเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบเปเบเบฑเปเบเบเบฝเบงเบเบฑเบเปเบ ClickHouse, เบเบฑเปเบเบเบฑเปเบเปเบเบทเปเบญเบชเบฐเปเบเบเบชเบฐเบเบฒเบเบเบฒเบ, เบเปเบฒเบฎเปเบญเบเบเปเปเบเบตเปเบกเปเบเบตเบกเปเบเบฑเปเบเบเบตเปเบเบทเบเบชเบปเปเบเปเบเบซเบฒเปเบเปเบฅเบฐเปเบชเบฑเปเบเบเบญเบเบเบปเบเปเบเปเบฎเบฑเบ (เบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบกเปเบเบเบถเปเบเบเบฑเบเบเบฒเบเบเบฑเบเบฅเบฝเบเปเบฅเบฐเบงเปเบฒเบชเบฐเบเบฒเบเบเบฒเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเปเบญเบ. เบซเบผเบทเบซเบผเบฑเบ):
SELECT time,millis,review_body FROM amazon
WHERE (time = 'ะะ ะะะฏ_ะกะะะซะขะะฏ' AND millis < ะะะะะะกะะะฃะะะซ_ะกะะะซะขะะฏ) OR (time < 'ะะ ะะะฏ_ะกะะะซะขะะฏ')
ORDER BY time DESC, millis DESC
LIMIT ะะะะะงะะกะขะะ_ะกะขะ ะะ_ะะะะขะะะกะขะ
SETTINGS max_threads=1
เปเบเบทเปเบญเบเบเบฒเบเบเปเบฒเบฎเปเบญเบเบเปเบเบทเบเบชเบปเปเบเปเบเบทเบญเบเบเบฑเบเบเบตเบซเบผเบฑเบเบเบฒเบเบเบตเป ClickHouse เบชเบปเปเบเบเบทเบเบชเบฒเบเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบ, เบกเบฑเบเบชเบดเปเบเบชเบธเบเบฅเบปเบเปเบ cache เปเบฅเบฐเปเบเบเบเบปเปเบงเปเบเปเบฅเปเบงเบเปเบฒเบฎเปเบญเบเบเปเบเบทเบเบเบฐเบเบดเบเบฑเบเบขเปเบฒเบเปเบงเบงเบฒเปเบฅเบฐเปเบเป CPU เปเบฅเบฑเบเบเปเบญเบ (เบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบเปเบฒเบฎเปเบญเบเบเปเปเบเปเปเบงเบฅเบฒเบเบฐเบกเบฒเบ ~ 6 ms เปเบเปเบเบทเปเบญเบ virtual เบเบญเบเบเปเบญเบ).
เบชเบฐเปเบเบเบเปเปเบเบงเบฒเบกเปเปเปเปเบเปเบงเบฅเบฒเบเบดเบ
เปเบเบทเปเบญเบชเบฐเปเบเบเบเปเปเบเบงเบฒเบกเบเบตเปเปเบเบปเปเบฒเบกเบฒเปเบ (เปเบเบทเบญเบ) เปเบงเบฅเบฒเบเบดเบ, เบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบเบฐเบเบดเบเบฑเบเบเปเบฒเบฎเปเบญเบเบเปเบเบธเบเปเบชเบญเบเบชเบฒเบกเบงเบดเบเบฒเบเบต, เบเบทเปเบเปเบฒเปเบงเบฅเบฒเบชเบธเบเบเปเบฒเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบปเบเบเปเบญเบ.
เบเบปเบงเบขเปเบฒเบเบเปเบฒเบชเบฑเปเบ
เบเปเบฒเบชเบฑเปเบ logscli เบเบปเบเบเบฐเบเบดเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเปเบเบงเปเบเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ?
เบเปเบฒเบเปเบฒเบเบเบฒเบงเปเบซเบฅเบเบเบธเบเบเปเปเบกเบนเบ Amazon เบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเปเบฒเบงเปเบเบดเบเปเบเบเบญเบเบเบปเปเบเบเบญเบเบเบปเบเบเบงเบฒเบก, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบชเบฑเปเบเบเปเปเปเบเบเบตเป:
# ะะพะบะฐะทะฐัั ัััะพะบะธ, ะณะดะต ะฒัััะตัะฐะตััั ัะปะพะฒะพ walmart
$ logscli -F 'walmart' | less
# ะะพะบะฐะทะฐัั ัะฐะผัะต ัะฒะตะถะธะต 10 ัััะพะบ, ะณะดะต ะฒัััะตัะฐะตััั "terrible"
$ logscli -F terrible -limit 10
# ะขะพ ะถะต ัะฐะผะพะต ะฑะตะท -limit:
$ logscli -F terrible | head -n 10
# ะะพะบะฐะทะฐัั ะฒัะต ัััะพะบะธ, ะฟะพะดั
ะพะดััะธะต ะฟะพะด /times [0-9]/, ะฝะฐะฟะธัะฐะฝะฝัะต ะดะปั vine ะธ ั ะบะพัะพััั
ะฒััะพะบะธะน ัะตะนัะธะฝะณ
$ logscli -E 'times [0-9]' -where="vine='Y' AND star_rating>4" | less
# ะะพะบะฐะทะฐัั ะฒัะต ัััะพะบะธ ัะพ ัะปะพะฒะพะผ "panic" ะธ 3 ัััะพะบะธ ะบะพะฝัะตะบััะฐ ะฒะพะบััะณ
$ logscli -F 'panic' -C 3 | less
# ะะตะฟัะตััะฒะฝะพ ะฟะพะบะฐะทัะฒะฐัั ะฝะพะฒัะต ัััะพะบะธ ัะพ ัะปะพะฒะพะผ "5-star"
$ logscli -F '5-star' -tailf
เปเบญเบเบฐเบชเบฒเบ
เบฅเบฐเบซเบฑเบเบเบปเบเบเบฐเปเบซเบเบ (เปเบเบเบเปเปเบกเบตเปเบญเบเบฐเบชเบฒเบ) เปเบกเปเบเบกเบตเบขเบนเปเปเบ github เบเบตเป
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com