ð§® BigQueryã®ã¹ãã£ã³èª²éãšã¹ãã¬ãŒãžèª²éãOSSã®èªåéçšã«çœ®ãæãããšè²»çšã¯ã©ãå€ããã
ã·ãªãŒãºãSaaSã»ã¯ã©ãŠã代ãåãããä»å㯠BigQuery ã§ããBigQuery ã®è«æ±ã¯å€§ãããã¯ãšãªã§èªãã éïŒã¹ãã£ã³éïŒããšã眮ããŠããããŒã¿ã®éïŒã¹ãã¬ãŒãžïŒãã®2æ¬ç«ãŠã§ããããã OSS ã®ããŒã¿ããŒã¹ãèªåã®ãµãŒããŒã§åãã圢ã«çœ®ãæãããšãã©ããå®ããªããã©ãã§éã«é«ããªãã®ãããåŒã€ãã§æŽçããŸãã
å ã«çµè«ãæžããŸããã¹ãã£ã³éãå°ãªããã¡ã¯ BigQuery ã®ãŸãŸã®æ¹ãå®ããèªåéçšãåŸã«ãªãã®ã¯æ¯æã®ã¹ãã£ã³éãããæ°Žæºãè¶ ããŠããã§ãããã®æ°Žæºããäžã®åæã§èšç®ããŸãã
1. BigQuery ã§äœã«ãããæãã£ãŠããã
å䟡ã®åºå ž: BigQuery pricingïŒGoogle Cloud å ¬åŒïŒãåç §æ¥ 2026-10-29ãããŒãžã®æ¢å®è¡šç€ºïŒç±³åœãªãŒãžã§ã³ïŒã®å䟡ã§ããæ±äº¬ãªãŒãžã§ã³ãªã©ã¯å䟡ãéãããšãããã®ã§ãåãããŒãžã®ãªãŒãžã§ã³éžæã§èªåã®å°åã確èªããŠãã ãããçšã¯å«ã¿ãŸããã
èšç®äŸã®åæ: ããŒã¿ 200 GiBïŒãã¹ãŠã¢ã¯ãã£ãè«çïŒãã¯ãšãªã®ã¹ãã£ã³é 10 TiB/æã
- ã¯ãšãª: $6.25 ÃïŒ10 â 1ïŒTiB = $56.25
- ã¹ãã¬ãŒãž: $0.0230 ÃïŒ200 â 10ïŒGiB = $4.37
- åèš: çŽ $60.62/æïŒ1ãã«â158åæç®ã§çŽ9,580åãã¬ãŒãã¯åŸè¿°ïŒ
ãã®äŸã§ã¯è«æ±ã®9å²ä»¥äžãã¹ãã£ã³éã§ããã¹ãã¬ãŒãžã¯ 200 GiB çšåºŠãªãã»ãšãã©å¹ããŸãããåã察象ã¯ãŸãã¹ãã£ã³éã ãšåãããŸãã
2. 眮ãæãåè£ã® OSS
- ClickHouseïŒApache-2.0ïŒâŠ åæåã®åæçšããŒã¿ããŒã¹ãBigQuery ã®ãä¿åïŒéèšã¯ãšãªãã1å°ã§äžžããšä»£æ¿ããåè£ãæ¬èšäºã®èšç®ã¯ãããæ³å®ããŸãã
- DuckDBïŒMITïŒâŠ ãµãŒããŒãç«ãŠãªãçµã¿èŸŒã¿åãParquet ãã¡ã€ã«ãçŽæ¥ SQL ã§èªããã®ã§ããããŸã«éãéèšãããã ããã®çšéãªããBigQuery ã®ä»£ããã«ããŒãPCãããã1æ¬ã§æžãå ŽåããããŸãã
- TrinoïŒApache-2.0ïŒâŠ ä¿åã¯ãããè€æ°ã®ããŒã¿çœ®ãå ŽããŸããã§ SQL ãæããå±€ãBigQuery ã®ãå€éšããŒãã«ã»æšªæã¯ãšãªãã«åœããéšåã®ä»£æ¿ã§ãã
- Apache DorisïŒApache-2.0ïŒâŠ MySQL äºæã§æ¥ç¶ã§ããåæçš DBãClickHouse ãšåããä¿åïŒéèšãã®æ ã®å¥è§£ã§ãã
- PostgreSQL ⊠æ°å GB çšåºŠã§ãéèšããæŽæ°ãå€ããªããåæå°çš DB ãè¶³ããã«ããã§è¶³ããããšãå€ãã§ãã
ïŒåºåïŒPostgreSQL ã§è¶³ãããã倿ããããªããå éšæ§é ãšéçšç£èŠãŸã§æžããã PostgreSQLå®è·µå ¥éââã¢ãŒããã¯ãã£ãéçšç£èŠãæ§èœæ¹å ãæå ã«ãããšå€æãéããªããŸãã
3. èªåéçšã®è²»çšãšæçåå²
眮ãæãå ã®åæïŒåºå žã¯ããããåç §æ¥ 2026-10-29ã»çšæïŒ:
- ãµãŒããŒ: Hetzner Cloud Regular Performance ã® CPX42ïŒ8 vCPU / 16 GB / NVMe 320 GBãEUïŒâ¬69.99/æãåç §æç¹ã§äžéšãã©ã³ã¯ãåšåº«ãªãã衚瀺ããã£ãã®ã§ãå¥çŽåã«ç¢ºèªããŠãã ããã
- ããã¯ã¢ããå : Hetzner Storage Box BX11ïŒ1 TBïŒâ¬3.20/æã
- çºæ¿: ECB åç §ã¬ãŒãïŒ2026-10-28 åãfrankfurter.app çµç±ïŒ1ãŠãŒã = 1.1133ãã« = 175.86åã
åºå®è²»: (â¬69.99 + â¬3.20) à 1.1133 = çŽ $81.48/æïŒçŽ12,870åïŒãããã«èªåã®æéãä¹ããŸããæŽæ°ã»ç£èŠã»ããã¯ã¢ãã確èªã«æ H æéãæçµŠã W ãšãããšæé代 L = H à W ã§ãã
BigQuery ã®æé¡ããã¹ãã£ã³é SïŒTiBïŒã§è¡šããš $6.25 ÃïŒS â 1ïŒ+ $4.37ããããèªåã® $81.48 + L ãšçãããªã S ãæçåå²ã§ãã
- æéä»£ãæ°ããªãå Žå: S = 1 + 77.11 ÷ 6.25 â 13.3 TiB/æ
- æéãæ4æéã»æçµŠ $30ïŒçŽ4,700åïŒãšä»®çœ®ãããå Žå: L = $120 â S = 1 + 197.11 ÷ 6.25 â 32.5 TiB/æ
ã€ãŸããã®åæã§ã¯ãæã®ã¹ãã£ã³éãçŽ13ã33 TiB ãäžåããªã BigQuery ã®æ¹ãå®ãã§ããããŒã¿åŽã«ã段差ãããããã£ã¹ã¯ 320 GB ã«åãŸããªããªããšäžäœã® CPX62ïŒ16 vCPU / 32 GB / 640 GBãâ¬130.49/æïŒãªã©ãžäžããããšã«ãªããåå²ç¹ãäžã«åããŸãããªãã1å°ã® 8 vCPU ã§ BigQuery ãšåãéããåºããã¯æž¬ã£ãŠããŸãããéãã¯èªåã®ããŒã¿ã§ç¢ºãããŠãã ããã
眮ãæãã®åã«ãBigQuery ã®äžã§ã§ããç¯çŽïŒããŒãã£ã·ã§ã³åå²ã»ã¯ã©ã¹ã¿ãªã³ã°ãSELECT * ãããããã¯ãšãªããšã®èª²éäžé maximum_bytes_billedïŒã§ã¹ãã£ã³éãåå²ç¹ããäžã«èœã¡ããªããç§»è¡ããªãã®ãæ£è§£ã§ãã
4. åããæ¹ïŒClickHouse ã®äŸã»æå ã§ã¯æªæ€èšŒïŒ
以äžã¯å ¬åŒã€ã¡ãŒãžãšå ¬åŒããã¥ã¡ã³ãã®èšæ³ã«æ²¿ã£ãŠæžããäŸã§ãããã®èšäºã®ããã«å®æ©ã§èµ·åãããã®ã§ã¯ãããŸããã䜿ãåã«åããã¥ã¡ã³ãã§ç¢ºèªããŠãã ããã
docker-compose.yml
services:clickhouse:
image: clickhouse/clickhouse-server:latest
ports:
- "127.0.0.1:8123:8123" # å€ã«å ¬éããªã
environment:
CLICKHOUSE_USER: analyst
CLICKHOUSE_PASSWORD: ${CH_PASSWORD} # .env ã«çœ®ã
CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: "1"
volumes:
- ./data:/var/lib/clickhouse
- ./backups:/backups
- ./config/backup.xml:/etc/clickhouse-server/config.d/backup.xml
ulimits:
nofile: { soft: 262144, hard: 262144 }
config/backup.xmlïŒããã¯ã¢ããå ã®èš±å¯ïŒ
<clickhouse><backups>
<allowed_path>/backups/</allowed_path>
</backups>
</clickhouse>
BigQuery ããåºã㊠ClickHouse ã«å ¥ãã
# BigQuery â Cloud StorageïŒParquetïŒbq extract --destination_format=PARQUET \
'myproj:analytics.events' 'gs://my-bucket/events/*.parquet'
-- ClickHouse åŽïŒGCS ã® HMAC ããŒã§èªãïŒ
CREATE TABLE events (
event_date Date, user_id String, name String, value Float64
) ENGINE = MergeTree
PARTITION BY toYYYYMM(event_date)
ORDER BY (event_date, user_id);
INSERT INTO events
SELECT * FROM s3('https://storage.googleapis.com/my-bucket/events/*.parquet',
'HMAC_KEY', 'HMAC_SECRET', 'Parquet');
BACKUP TABLE events TO File('/backups/events_2026-10-29');
ãã®åŸã./backups ã rsync ãªã©ã§ Storage Box ãžéããŸããDuckDB ã§æžãŸãããªãããµãŒããŒã¯ç«ãŠãã« duckdb -c "SELECT name, count(*) FROM read_parquet('events/*.parquet') GROUP BY 1" ã ãã§ãéèšã§ããŸãã
5. ç§»è¡ã§ã€ãŸããæ
- SQL ã®æ¹èš: BigQuery ã® STRUCT/ARRAY ãš
UNNESTã_PARTITIONTIMEãã¹ã¯ãªããæ§æã¯ãã®ãŸãŸã§ã¯åããŸãããã¯ãšãªã®æžãæããäžçªæéãé£ããŸãã - æŽæ°ã»åé€: ClickHouse ã® UPDATE/DELETE ã¯éãåŸåŠçïŒmutationïŒã«ãªããŸããè¡ã®æŽæ°ãå€ã衚ã¯èšèšãçŽããå¿ èŠã§ãã
- 転éæ: BigQuery ããã®ãšã¯ã¹ããŒãåŠçã¯ç¡æã§ããCloud Storage ããå€ãžåºãããŒã¿è»¢éã¯å¥æéã§ããéãå€ããªãå ã«ãããã¯ãŒã¯æé衚ã§èŠç©ãã£ãŠãã ããã
- 1å°ïŒåé·ãªã: èœã¡ããæ¢ãŸããŸããããã¯ã¢ããããæ»ãã®ã«äœæéããããã¯ãäžåºŠæ»ããŠã¿ãªããšåãããŸããã
- åšèŸºããŒã«: Looker Studio ãªã©ã® BIãã¹ã±ãžã¥ãŒã«ã¯ãšãªãIAM æš©é㯠BigQuery ãäžžããšæã£ãŠããéšåã§ããèªåã§ã¯ããããå¥ã«çšæããŸãã
- å°ç: äžã®äŸã¯ EU ã®ãµãŒããŒã§ããããŒã¿ãåœå ã«çœ®ãå¿ èŠããããªããåœå ã® VPS ã®æéã§åŒãèšç®ãçŽããŠãã ããã
ïŒåºåïŒç§»è¡ã®åã«ãã©ãã§éããŠãã©ãã§å€æããã©ãã§åºããããæŽçããŠãããšãäžã®ã€ãŸããã®å€§åã¯äºåã«èŠããŸããå šäœå㯠ããŒã¿ãšã³ãžãã¢ãªã³ã°ã®åºç€ ããŸãšãŸã£ãŠããŸãã
6. ãã®è²»çšãæã£ãŠããçžæ
BigQuery ã®ä»£éãåãåã£ãŠããã®ã¯ Google Cloudãã€ãŸã Alphabet ã§ããã©ããªäŒç€Ÿã㯠BigQueryïŒGOOGLïŒã®æ ªäŸ¡ ã®ããŒãžã§æ±ºç®ãäºæ¥ã®å èš³ãšåãããŠèŠãããŸããæ¬èšäºã¯æè³å€æã®ææãæäŸãããã®ã§ã¯ãããŸããã
ãŸãšã
- BigQuery ã®è«æ±ã®äžå¿ã¯ã¹ãã£ã³éïŒ$6.25/TiBãæ1 TiB ãŸã§ç¡æïŒã
- äžã®åæã§ã¯ãèªåéçšïŒClickHouseã»1å°ïŒãå®ããªãã®ã¯æçŽ13 TiBïŒæéãæ°ããã°çŽ33 TiBïŒãè¶ ããŠããã
- ãŸã BigQuery å ã§ã¹ãã£ã³éãæžãããããã§ãåå²ç¹ãè¶ ãããªããDuckDB â ClickHouse ã®é ã«å°ãã詊ãã
æ¬èšäºã®æ å ±ã¯2026幎10æ29æ¥æç¹ã®ãã®ã§ãã