ืฉืืื, ืืืจืืืืื. ืืืืคื ืืกืืจืชื, ืื ื ืืืฉืืืื ืืืืืง ืืืืจ ืืขื ืืื ืขืจื ืชืืืืชื ืฉื ืงืืจืกืื ืืืฉืื. ืืืื, ืืืืืื ืืฉืืืืื, ืชืจืืื ื ืืืืจ ืขื Google Cloud Spanner, ืฉืชืืื ื ืืืงืืื ืืืฉืงืช ืืงืืจืก
ืคืืจืกื ืืืงืืจ ื
ืืืืจื ืืืฆืืขื ืืืืื ืคืชืจืื ืืช POS ืืืืกืกื ืขื ื ืืงืืขืื ืืื, ืืกืขืื ืื ืืกืืืจืื ืืงืืื ืื ืืจืืื ืืขืืื, Lightspeed ืืฉืชืืฉืช ืืืกืคืจ ืกืืืื ืฉืื ืื ืฉื ืคืืืคืืจืืืช ืืกื ื ืชืื ืื ืขืืืจ ืืืืื ืืงืจื ืฉืืืืฉ ืืขืกืงืืืช, ื ืืชืืืื ืืืืคืืฉ. ืืื ืืืช ืืคืืืคืืจืืืช ืืกืื ืื ืชืื ืื ืืืื ืืฉ ืืช ืืืืืงืืช ืืืืืืฉืืช ืฉืื. ืืื, ืืฉืืืื ืืฆืืื ืืช Cloud Spanner ืืฉืืง - ืชืืื ืืช ืืืืืืืช ืฉืื ื ืจืื ืืขืืื ืฉื ืืกืื ื ืชืื ืื ืืืกืืื, ืืื ืืืจืืืืช ืืืคืงืืช ืืืขื ืืืชื ืืืืืืช ืืืกืื ืจืืช ืฉืืจืืช ืฉื 99,999% (SLA) , ืื ืืืืื ื ืืืืชืจ ืขื ืืืืืื ืืช ืืืืืืง ืืืชื ืืืืืื ืฉืื ื!
ืืื ืืชืช ืกืงืืจื ืืงืืคื ืฉื ืื ืืกืืื ืฉืื ื ืขื Cloud Spanner, ืืื ืื ืขื ืงืจืืืจืืื ื ืืืขืจืื ืฉืืื ืืฉืชืืฉื ื, ื ืชืืืืก ืื ืืฉืืื ืืืืื:
- ืงืจืืืจืืื ื ืืืขืจืื ืฉืื ื
- Cloud Spanner ืืงืฆืจื
- ืืืขืจืื ืฉืื ื
- ืืืืฆืืื ืฉืื ื
1. ืงืจืืืจืืื ื ืืืขืจืื ืฉืื ื
ืืคื ื ืฉื ืฆืืื ืืคืจืืื ืืกืคืฆืืคืืื ืฉื Cloud Spanner, ืืืืืื ืืืืืืืื ืฉืื ืขื ืคืชืจืื ืืช ืืืจืื ืืฉืืง, ืืืื ื ืืืจ ืชืืืื ืขื ืืงืจื ืืฉืืืืฉ ืืขืืงืจืืื ืฉืืฉืื ื ืืืฉืจ ืฉืงืื ื ืืืื ืืคืจืืก ืืช Cloud Spanner ืืชืฉืชืืช ืฉืื ื:
- ืืชืืืืฃ ืืคืชืจืื ืืกื ืื ืชืื ืื ืืืกืืจืชื (ืืจืืื) ืฉื SQL
- ืืคืชืจืื OLTP ืขื ืชืืืืช OLAP
ืืขืจื: ืืื ืืืงื ืขื ืืืฉืืืื, ืืืืจ ืื ืืฉืืื ืืช Cloud Spanner ืขื ืืจืกืืืช MySQL ืฉื โโืืฉืคืืืช ืืคืชืจืื ืืช GCP Cloud SQL ื-Amazon AWS RDS.
ืฉืืืืฉ ื-Cloud Spanner ืืชืืืืฃ ืืคืชืจืื ืืกื ื ืชืื ืื ืืกืืจืชื ืฉื SQL
ืืกืืืื ืึธืกืึนืจืชึดื ืืกืื ื ืชืื ืื, ืืืฉืจ ืืื ืืชืืืื ืืฉืืืืชืช ืืกื ื ืชืื ืื ืืชืงืจื ืื ืืคืืื ืืืจื ืืกืฃ ืืืฉืื ืืืืืจ ืืจืืฉ (ืืขืืงืจ ืขืงื ืขืืืื ืืืกืคืจ ืืืฉืชืืฉืื ื/ืื ืืืงืฉืืช), ืืฉื ื ืืกืคืจ ืืจืืื ืืฆืืฆื ืืช ืืื ืืชืืืื ืืจืืืช ืืงืืืืืช. ืขื ืืืช, ืจืื ืืคืชืจืื ืืช ืืืื ืืจืืืื ืืืชืขืจืืืช ืืื ืืช.
ืืืืืื, ืืฆืขื ืืจืืฉืื ืฉืฆืจืื ืืขืฉืืช ืืื ืืืกืชืื ืขื ืืืืจืืช ืืกื ืื ืชืื ืื ืืฉืื ืืช ืืงืฉืืจืืช ืืืืฆืืขืื ืืืืืื ื ืืืชื ืื ืฉืืชืืืื ืืฆืืจื ืืืืื ืืืืชืจ ืืืคืืกื ืชืจืืืฉื ืืฉืืืืฉ ืืืคืืืงืฆืื. ืื ืื ืื ืืกืคืืง, ืืชื ืืืื ืืืืืจ ืืฉื ืืช ืืช ืงื ื ืืืืื ืฉื ืืกื ืื ืชืื ืื ืื ืืืช ืื ืืืคืงืืช.
ืืืืื ืฉื ืืคืืืงืฆืื ืืจืืื ืืขืืืื ืืืคืข ืืฉืจืช, ืืืจื ืืื ืขื ืืื ืืืกืคืช ืืืชืจ ืืขืืืื/ืืืืืช, ืืืชืจ ืืืืจืื RAM, ืืืกืื ืืืืจ ืืืชืจ ืืื'. ืืืกืคืช ืืฉืืื ืืืืจื ื ืืกืคืื ืืืืื ืืืืฆืืขื ืืกื ื ืชืื ืื ืืืืืจืื, ืื ืืืืื ืืขืืงืจ ืืืจื ืืงืฆืืืช ืืฉื ืืื, ืืืฉืืืืช ืขืกืงืืืช ืขืืืจ ืืขืจืืืช OLTP. ืืขืจืืืช ืืกืื ื ืชืื ืื ืืืกืืื (ืืืฉืชืืฉืืช ืืืืฉื ืืจืืื ืืืืื) ืืืื MySQL ืืืจืืืช ืืืื ืื ืืืช.
ืืฉื ื ืืกืคืจ ืืกืจืื ืืช ืืืืฉื ืื, ืื ืืืจืืจ ืืืืชืจ ืืื ืืืื ืืฉืจืช ืืืงืกืืืื ืืฉืืง. ืืจืืข ืฉืืืืืื ืืืืืื ืืืืชืจ ืฉื ืืืคืขื ืฉืจืช ืืืฉืื, ื ืืชืจ ืจืง ื ืชืื ืืื: ืืืืื.
ืกืงืื-ืืืื ืืื ืืืฉื ืฉืืืกืืคื ืขืื ืฉืจืชืื ืืืฉืืื ืืื ืืืืืื ืืืืคื ืืืืืืื ืืช ืืืืฆืืขืื ืืืืคื ืืื ืืืจื ืืื ืฉืืชืืืกืคืื ืืืชืจ ืฉืจืชืื. ืจืึนื ืึธืกืึนืจืชึดื ืืขืจืืืช ืืกืื ื ืชืื ืื ืืื ื ืืฉื ืืช ืงื ื ืืืื ืืื ืื ืืื ื ืืชืจืืืืช ืืื. ืืืืืื, MySQL ืืืื ืืืจืืืง ืืช ืงื ื ืืืืื ืขืืืจ ืคืขืืืืช ืงืจืืื ืขื ืืื ืืืกืคืช ืงืืจืื ืขืืืื, ืื ืืื ื ืืืื ืืืจืืืง ืืช ืงื ื ืืืืื ืขืืืจ ืคืขืืืืช ืืชืืื.
ืืฆื ืฉื ื, ืืฉื ืืืขื, Cloud Spanner ืืืื ืืงืืืช ืืฉื ืืช ืืช ืงื ื ืืืืื ืืืคืงืืช ืขื ืืชืขืจืืืช ืืื ืืืืืช.
ืชืืื ืืช ืืืืืช DBMS ืืฉืืจืืช ืืฉ ืืืขืจืื ืื ืงืืืืช ืืื ืฉืื ืืช. ืืืกืืก, ืืงืื ื ืืช ื-DBMS ืืคืืคืืืจื ืืืืชืจ ืืขื ื - ืขืืืจ Google, GCP Cloud SQL ืืขืืืจ Amazon, AWS RDS. ืืืขืจืื ืฉืื ื, ืืชืืงืื ื ืืงืืืืจืืืช ืืืืืช:
- ืืืคืื ืชืืื ืืช: ืืืงืฃ SQL, DDL, DML; ืกืคืจืืืช ืืืืืจืื/ืืืืจืื, ืชืืืื ืืขืกืงืืืช ืืื ืืืื.
- ืชืืืื ืืคืืชืื: ืงืืืช ืคืืชืื ืืืืืงื.
- ืชืืืื ืื ืืืื: ื ืืืื ืืืคืขืื ืืืื ืืืืื/ืืงืื ื ืืฉืืจืื ืืืคืขืื; SLA, ืืืืื ืืฉืืืืจ; ืืืืื/ืืงืจืช ืืืฉื.
ืฉืืืืฉ ื-Cloud Spanner ืืคืชืจืื OLTP ืืืืคืฉืจ OLAP
ืืขืื ืฉืืืื ืืื ื ืืฆืืื ืช ืืืคืืจืฉ ืฉ-Cloud Spanner ืืืืขื ืื ืืชืื, ืืื ืืืืงืช ืืื ืชืืื ืืช ืขื ืื ืืขืื ืืืจืื ืืืื Apache Impala & Kudu ื-YugaByte ืืืืืขืืื ืืขืืืกื ืขืืืื ืฉื OLAP.
ืื ืื ืืื ืจืง โโืกืืืื ืงืื ืฉ-Cloud Spanner ืืืื ืื ืืข HTAP (Hybrid Transactional/Analytic Processing) ืืืจืืืช ืขืงืืืช ืขื ืืขืจื ืชืืื ืืช OLAP ืฉืืืฉ (ืคืืืช ืื ืืืชืจ), ืื ืื ื ืืืฉืืื ืฉืื ืืืื ืืชืฉืืืช ืืื ื.
ืขื ืืืช ืืืฉืืื, ืืืงื ื ืืช ืืงืืืืจืืืช ืืืืืช:
- ืืขืื ืช ื ืชืื ืื, ืืื ืืงืกืื ืืืืืฆืืช
- ืืืฆืืขื ืฉืืืืชืืช ื-DML
2. Cloud Spanner ืืงืฆืจื
Google Spanner ืืื ืืขืจืืช ื ืืืื ืืกืื ื ืชืื ืื ืืืกืืื ืืงืืืฆืื (RDBMS) ืฉ-Google ืืฉืชืืฉืช ืื ืขืืืจ ืืื ืืืฉืืจืืชืื ืฉืื. Google ืืคืื ืืืชื ืืืืื ืืฆืืืืจ ืืืฉืชืืฉื Google Cloud Platform ืืชืืืืช 2017.
ืื ื ืืื ืืืชืืื ืืช ืฉื Cloud Spanner:
- ืืฉืืื RDBMS ืขืงืื ืืืื, ื ืืชื ืืืจืืื: ืืฉืชืืฉ ืืกื ืืจืื ืืื ืืืืจื ืืื ืืืืืื ืขืงืืืืช ื ืชืื ืื.
- ืชืืืื ืืขืกืงืืืช ืืืฆืืช ืืืืืืช: ืขืกืงืืืช ืืืืืืช ืืืฉืชืจืข ืขื ืืืืืืช ืืจืืืืช - ืื ืืืืจื ืืืืืืืช ืืืืื ืืืืืช (ืื ืืืื ื- Apache HBase ืื Apache Kudu).
- ืืืืืืช ืืืืกืกืืช ืืคืชื ืจืืฉื: ืืื ืืืืืืืช ืืืื ืืืืืช ืืคืชื ืจืืฉื ืืืฆืืจ (PC), ืฉืืืื ืืืืืช ืืืจืื ืืืกืคืจ ืขืืืืืช ืืืื. ื ืชืื ืื ืืืืืืื ืืืืืกื ืื ืืกืืจ ืืืฉื, ืื ืฉืืืคื ืืืชื ืืืขืืืื ืืืืืจืื ืืืื ืขืืืจ ืืืคืืฉืื ืืืืฉื. ืืืืื ืืืขืจืืืช ืืืจืืช ืืืืืกืกืืช ืขื ืืืฉืืื ืืืฉืืื, ืืืืฉืื ืืืื ืืืืืช ืืืืกืก ืขื ืืงืจื ืฉืืืืฉ ืืืงืืืื ืขื ืื ืช ืืืฉืื
ืืืืคืขื ืืื ืืืื . - ืืืืืืช ืคืกืื: ืืืืืืืช ืืืืืืช ืืืืืช ืชืืืช ืคืืืืช ืื ืืื. ื ืืชื ืืืชืืื ืืช ืืฉืืจืืช ืฉื ืืืืช ืืฆืืฆื ืืฉืืจืืช ืฉื ืืืืช ืืื. ืืืฉื ืื ืืืจืืช ืืช ืืืืคืืฉ ืืืจ ืงืฉืจืื ืฉื ืืชื ืืงืืืข ืืฉืื ืืืื ืื ืชืื ืื, ืืืฉื, ืืขืช ืืฆืืช ืืืงืืืืช ืืืืฉืืื ืืืช ืฉืืื ืืื.
- ืืื ืืงืกืื: Cloud Spanner ืชืืื ืืืื ืืงืกืื ืืฉื ืืื. ืืื ืืงืก ืืืจืื ืืขืืืืืช ืืืื ืืงืก ืืื ืขืืืืืช ื-PC. ืืืคืฆืืื ืื, ืืืื ืืงืก ืืืื ืืืืื ืื ืขืืืืืช ืืืจืืช ืฉืืื ื ืฆืืืืืช ืืืื ืืงืก. ื ืืชื ืืฉืื ืืช ืืืื ืืงืก ืขื ืืืืช ืืื ืืื ืืืืืฅ ืฉืืืืชืืช. ืืกืคืจ ืืืืืืช ืืืืช ืขื ืืื ืืงืกืื, ืืืื ืืืกืคืจ ืืืจืื ืฉื ืขืืืืืช ื ืืกืคืืช ืฉื ืืชื ืืืืกื ืืืื ืืงืก. ืืื ืื, ืืืชืื ืฉืฉืืืืชืืช ืืจื ืืื ืืงืกืื ืื ืืืื ืคืฉืืืืช ืืื ื-RDBMS ืืืจืืช.
"Cloud Spanner ืืืืจ ืืื ืืงืก ืืืืคื ืืืืืืื ืจืง ืืืงืจืื ื ืืืจืื. ืืืืืื, Cloud Spanner ืืื ื ืืืืจ ืืืืืืืืช ืืื ืืงืก ืืฉื ื ืื ืืฉืืืืชื ืืืงืฉืช ืขืืืืืช ืฉืืื ื ืืืืืกื ืืช ื
- ืืกืื ืจืืช ืฉืืจืืช (SLA): ืคืจืืกื ืฉื ืืืืจ ืืืื ืขื 99,99% SLA; ืคืจืืกืืช ืืจืืืืช ืืืืจืื ืขื 99,999% SLA. ืืขืื ืฉื-SLA ืขืฆืื ืืื ืจืง ืืกืื ืืื ืขืจืืื ืืื ืกืื ืฉืืื, ืื ื ืืืืื ืฉืืื ืฉื ืืืื ืืฉ ืืื ื ืชืื ืื ืงืฉืื ืืืขืื ืืขื ื ืื ืืืงื. (ืืขืืื, 99,999% ืคืืจืืฉื 26,3 ืฉื ืืืช ืฉื ืืฉืืชืช ืฉืืจืืช ืืืืืฉ.)
- ืขืื:
https://cloud.google.com/spanner/
ืืขืจื: ืคืจืืืงื Apache Tephra ืืืกืืฃ ืชืืืื ืืชืงืืืช ืืขืกืงืืืช ื- Apache HBase (ืืืืฉื ืืขืช ืื ื- Apache Phoenix ืืืจืกืช ืืื).
3. ืืืขืจืื ืฉืื ื
ืื ืืืื ื ืงืจืื ื ืืช ืืืฆืืจืืช ืฉื ืืืื ืขื โโืืืชืจืื ืืช ืฉื Cloud Spanner - ืงื ื ืืืื ืืืคืงื ืืืขื ืืืชื ืืืืื ืชืื ืฉืืืจื ืขื ืขืงืืืืช ืืืืื ื-SLA ืืืื ืืืื. ืืืจืืช ืฉืืืขื ืืช ืืืื, ืืื ืืงืจื, ืงืฉืืช ืืืืชืจ ืืืฉืื, ืืืืจื ืฉืื ื ืื ืืืืชื ืืืคืจืื ืืืชื. ืืืงืื ืืืช, ืืืื ื ืชืืงื ืืืืจืื ืืืจืื ืฉืจืื ืืฉืชืืฉื ืืกื ืื ืชืื ืื ืืืืืื ืืื: ืืืืืืช ืืฉืืืืฉืืืช.
ืืืจืื ื ืืช Cloud Spanner ืืชืืืืฃ ื-Sharded MySQL
ื-Google Cloud SQL ื-Amazon AWS RDS, ืฉื ืืื ืืืกืื ืื ืชืื ืื ืืคืืคืืืจืืื ืืืืชืจ ืฉื OLTP ืืฉืืง ืืขื ื, ืืฉ ืืขืจื ืชืืื ืืช ืืืื ืืืื. ืขื ืืืช, ืขื ืื ืช ืืืจืืื ืืช ืืกืื ืื ืชืื ืื ืืืื ืืขืืจ ืืืืื ืฉื ืฆืืืช ืืืื, ืขืืื ืืืฆืข ืคืืฆืื ืืืฉืืืื. ืืืฉื ืื ืืืฆืจืช ืืืจืืืืช ื ืืกืคืช ืื ืืืืฉืืืื ืืื ืื ืืืื. ืืืงื ื ืืื Spanner ืืฉืชืื ืืชืจืืืฉ ืฉื ืฉืืืื ืฉื ืจืกืืกืื ืืจืืืื ืืืืคืข ืืื ืืืืื ืชืืื ืืช (ืื ืืืื) ืืฉ ืืืงืจืื.
ืชืืืื ื-SQL, DML ื-DDL, ืืื ืื ืืืืืจ ืืืกืคืจืืืช?
ืจืืฉืืช, ืืืฉืจ ืืชืืืืื ืขื ืื ืืกื ื ืชืื ืื, ืขืืื ืืืฆืืจ ืืืื ื ืชืื ืื. ืื ืืชื ืืืฉื ืฉืืชื ืืืื ืืืืจ ืืช JDBC Spanner ืืืื ื-SQL ืืืืขืืฃ ืขืืื, ืชืืื ืฉืืชื ืืืื ืืืฆืข ืฉืืืืชื ืขื ืื ืชืื ืื ืฉืื ืืืืฆืขืืชื, ืื ืืื ื ืืืื ืืืฉืชืืฉ ืื ืืื ืืืฆืืจ ืืืื ืื ืขืืืื (DDL) ืื ืื ืืืกืคื/ืขืืืื/ืืืืงื. ืคืขืืืืช (DML). ืื ื-JDBC ืืจืฉืื ืฉื ืืืื ืืื ื ืชืืื.
"ืื ืืื ืืชืงื ืื ืืื ื ืชืืืืื ืืจืืข ืืืฆืืจืืช DML ืื DDL."
ืชืืขืื ืืคืชื
ืืืฆื ืื ืืื ืืืชืจ ืขื ืงืื ืกืืืช GCP - ืืชื ืืืื ืืฉืืื ืจืง ืฉืืืืชืืช SELECT. ืืืจืื ืืืื, ืืฉ ืื ืื ืืชืงื JDBC ืขื ืชืืืื ื-DML ื-DDL ืืืงืืืื, ืืืื ืขืกืงืืืช
ืืฉืืืืฉ ืืืืขื ืืืื ืืืืฉืงื ื-API ืืืืชืืืื ืืืฉืืช ืฉื Cloud Spanner (ืืฉื ืืืขืืจ DDL ื-DML ื-JDBC) ืืืจื ืืืืืืืช ืืกืืืืืช ืขืืืจ ืชืืืื ืงืื ืงืฉืืจืื, ืืืื ืืืืืจ ืืืืืจืื ืื ืืกืืจืืช ืืืืืืืช ืืกื ื ืชืื ืื (ืืื Spring MVC). ืืืจื ืืื, ืืขืช ืฉืืืืฉ ื-JDBC, ืืชื ืืืคืฉื ืืืืืจ ืืช ืืืืจ ืืืืืืจืื ืืืืขืืฃ ืขืืื (ืืืฉื HikariCP, DBCP, C3PO ืืื') ืฉื ืืืง ืืขืืื ืืืื. ืืืงืจื ืฉื ืืืฉืงื API ืืืชืืืื ืืืฉืืช ืฉื Spanner, ืขืืื ื ืืืกืชืื ืขื ืืกืืจืืช/ืืืืจื ืืจืืื/ืืคืืฉืื ืฉืืฆืจื ื ืืขืฆืื ื.
ืืขืืฆืื ืืืืืื ืืืคืชื ืืจืืฉื (PC) ืืืคืฉืจ ื-Cloud Spanner ืืืืืช ืืืืจ ืืืื ืืขืช ืืืฉื ืื ืชืื ืื ืืจื ืืืืฉื ืืืืฉื, ืื ืื ืืฆืื ืืื ืืขืืืช ืฉืืืืชืืช.
- ืื ื ืืชื ืืขืืื ืืช ืืขืจื ืฉื ืืคืชื ืจืืฉื; ืชืืืื ืขืืื ืืืืืง ืืช ืขืจื ืืืืฉื ืืืงืืจื ืืืืื ืืก ืืืชื ืืืืฉ ืขื ืืขืจื ืืืืฉ. (ืื ืืืื ืืื ืืขื ืืกื ื ืชืื ืื/ืืืกืื ืืืจืื ืืืืืื ื PC.)
- ืื ืืฆืืจืืช UPDATE ื-DELETE ืืืืืืช ืืฆืืื ืืช ื-PC ื-WHERE, ืืื, ืื ืืืื ืืืืืช DELETE ืจืืง ืืื ืืืฆืืจืืช - ืชืืื ืืืืืช ืืืืืช ืฉืืืืชืช ืืฉื ื, ืืืฉื: UPDATE xxx WHERE id IN (SELECT id FROM table1)
- ืืืกืจ ืืคืฉืจืืช ืืืืืื ืืืืืืืืช ืื ืืฉืื ืืืื ืฉืงืืืข ืืช ืืจืฆืฃ ืขืืืจ ืฉืื ื-PC. ืืื ืฉืื ืืขืืื, ืืฉ ืืืฆืืจ ืืช ืืขืจื ืืืชืืื ืืฆื ืืืคืืืงืฆืื.
ืืืืื ืืฉื ืืื?
ื-Google Cloud Spanner ืชืืืื ืืืื ืืช ืืืื ืืงืกืื ืืฉื ืืื. ืืืื ืชืืื ื ื ืืืื ืืืื ืฉืื ืชืืื ืงืืืืช ืืืื ืืืืืืืช ืืืจืืช. Apache Kudu ืื ืชืืื ืืจืืข ืืืื ืืงืกืื ืืฉื ืืื ืืืื, ื- Apache HBase ืื ืชืืื ืืืื ืืงืกืื ืืฉืืจืืช, ืืื ืืืื ืืืืกืืฃ ืืืชื ืืจื Apache Phoenix.
ื ืืชื ืืขืฆื ืืื ืืงืกืื ื- Kudu ืื-HBase ืืืืื ื ืคืจืืช ืขื ืืจืื ืฉืื ื ืฉื ืืคืชืืืช ืจืืฉืืื, ืื ืืืืืืืืช ืฉื ืืคืขืืืืช ืืืืืฆืขืืช ืืืืืช ืืื ืืืืืืืช ืืื ืืงืก ืงืฉืืจืืช ืืืืืช ืืืชืืฆืข ืืจืืช ืืืคืืืงืฆืื ืืืื ื ืืจืืืืืืืืช ืืืืฉืื ื ืืื.
ืืคื ืฉืืืืืจ ืืกืงืืจืช Cloud Spanner, ืืืื ืืงืกืื ืฉืื ืขืฉืืืื ืืืืืช ืฉืื ืื ืืืื ืืงืกื MySQL. ืืคืืื, ืืฉ ืื ืงืื ืืืืจืืช ืืืืืืช ืืื ืืืช ืฉืืืืชืืช ืืืืฆืืจืช ืคืจืืคืืืื ืืื ืืืืืื ืฉืืืื ืืงืก ืื ืืื ืืืขืฉื ืืืงืื ืื ืืื ื ืืืฅ.
ืึดืฆืึผื?
ืืืืืืงื ืืืื ืคืืคืืืจื ืืฉืืืืฉื ืืืกื ื ืชืื ืื ืืื ืชืฆืืืืช. ืื ืืืืืื ืืืืืช ืฉืืืืฉืืื ืขืืืจ ืืกืคืจ ืจื ืฉื ืืงืจื ืฉืืืืฉ; ืฉื ื ืืืืขืืคืื ืขืืื ืื ืฉืืืช ืืืคืฉืื ืืืืืืช ืืฉืืืช ืืืืืื. ืืืจืื ืืฆืขืจ Cloud Spanner ืืื ื ืชืืื ืืชืฆืืืืช. ืขื ืืืช, ืื ืจืง ืืืืื ืืืชื ื ืืืืคื ืืืงื, ืืืืืื ืฉืืื ืคืืจืื ืืจืืช ืืขืืืื ืืืจืฉืืืช ืืืฉื ืฉืืื ืชืฆืืืืช ืืืืืืช ืืืืืช ืคืชืจืื ืืงืืื.
ืขืืื ืืชืืขืื ืฉื Cloud Spanner ืืงืืข ืืืคืจื ืืืกืืช ืืืืืืืช (
ืชืืืื ืืคืืชืื?
Cloud Spanner ืืฆืืข ืชืืืื ืื ืืืื ื ืืฉืคืช ืชืื ืืช ืืขืืืื ืขื ื-API ืฉืื. ืืกืคืจืืืช ืื ืชืืืืช ืจืฉืืืช ืื ืืืืืจ C#, Go, Java, node.js, PHP, Python ื-Ruby. ืืชืืขืื ืืคืืจื ืืืื, ืื ืืื ืืืื ืืืืืืืช ืืชืงืืืืช ืืืจืืช, ืืงืืืื ืงืื ื ืืืื ืืืฉืืืื ืืจืื ืืื ืืืืืืืช ืืกื ืื ืชืื ืื ืืคืืคืืืจืืืช, ืื ืฉืขืืื ืืืจืื ืืืืชืจ ืืื ืืืืื ืขื ืืงืจื ืฉืืืืฉ ืื ืืขืืืช ืคืืืช ื ืคืืฆืืช.
ืื ืื ืืืื ืชืืืื ืืคืืชืื ืืงืืื?
ืื ืืฆืื ื ืืจื ืืืฆืืจ ืืืคืข ืฉื Cloud Spanner ืืงืืื. ืืื ืงืจืื ืฉืืืขื ื ืืื ืชืืื ืช Docker
ืชืืืื ืืืื ืื?
ืืฆืืจืช ืืืคืข ืฉื Cloud Spanner ืืื ืคืฉืืื ืืืื. ืืชื ืจืง ืฆืจืื ืืืืืจ ืืื ืืฆืืจืช ืืืคืข ืืจืืื ืืืืจืื ืื ืืืคืข ืฉื ืืืืจ ืืืื, ืืฆืืื ืืช ืืืืืจ/ืื ืืืช ืืกืคืจ ืืฆืืชืื. ืชืื ืคืืืช ืืืงื, ืืืืคืข ืืคืขื.
ืืกืคืจ ืืืืื ืืกืืกืืื ืืืื ืื ืืฉืืจืืช ืืืฃ Spanner ื-Google Console. ืชืฆืืืืช ืืคืืจืืืช ืืืชืจ ืืืื ืืช ืืจื Stackdriver, ืฉื ืชืืื ืื ืืืืืืจ ืขืจืื ืกืฃ ืืืืื ืืืืื ืืืช ืืชืจืืืช.
ืืืฉื ืืืฉืืืื?
MySQL ืืฆืืข ืืืืจืืช ืืจืฉืืืช/ืชืคืงืืืื ื ืจืืืืช ืืืคืืจืืืช ืืืื. ืืชื ืืืื ืืงืืืช ืืืชืืื ืืืฉืืช ืืืฉื ืืืืื ืกืคืฆืืคืืช, ืื ืืคืืื ืจืง ืชืช-ืงืืืฆื ืฉื ืืขืืืืืช ืฉืื. Cloud Spanner ืืฉืชืืฉ ืืืื Google Identity & Access Management (IAM), ืืืืคืฉืจ ืจืง ืืืืืืจ ืืืื ืืืช ืืืจืฉืืืช ืืจืื ืืืืื ืืืื. ืืืคืฉืจืืช ืืืคืืจืืช ืืืืชืจ ืืื ืืจืฉืื ืืจืืช ืืกื ืื ืชืื ืื, ืฉืืื ื ืืชืืืื ืืจืื ืืงืจื ืืืืฆืืจ. ืืืืื ืื ืืืืฆืช ืืืชื ืืืืกืืฃ ืืืฆืขื ืืืืื ื ืืกืคืื ืืงืื, ืืชืฉืชืืช ืื ืืฉื ืืื ืืื ืืื ืืข ืฉืืืืฉ ืื ืืืจืฉื ืืืฉืืื Spanner.
ืืืืืืื?
ืืืืืื ืคืฉืืืืช, ืืื ืืืืืืื ื-Cloud Spanner. ืืื ื ืืจืืฉืืช ื-SLA ืืืืืืืช ืฉื ืืืื ืืืืืืช ืืืืืื ืฉืื ืชืืื ืฉืื ืืืืข ืขืงื ืืฉืื ืืืืจื ืื ืืกื ื ืชืื ืื, ืืขืืืืช ืื ืืฉ, ืคืืืื ืืืืฉืืืื ืืื'. ืืืื ื ืืืืจืื ืืช ืืืื: ืืืื ืืช ืืืืื ืืื ื ืชืืืืฃ ืืืกืืจืืืืืช ืืืืื ืืืื. ื ืืื ืืขืืฉืื, ืืืจื ืืืืืื ืืืืืช ื ืชืื ืื ืืื ืืืืจืื ืืืชื ืืืืคื ืคืจืืืจืืื ืืืกื ืื ืชืื ืื ืืกืืืืช ืืืกืื ื ืคืจืืช.
ืฉืืืืชื ืืืฆืืขืื?
ืืฉืชืืฉื ื ื-Yahoo! ืืื ืืืขืื ื ืชืื ืื ืืืืืืง ืืงืฉืืช. Benchmark ืืฉืจืช ืขื ื. ืืืืื ืฉืืืื ืืฆืืื ืืช ืขืืืก ืืขืืืื ืฉื B YCSB ืขื ืืืก ืืชืืื ืฉื 95% ืงืจืืื ื-5%.
* ืืืื ืืขืืืก ืืืคืขื ืขื n1-standard-32 Compute Engine (CE) (32 vCPUs, 120 GB ืืืืจืื) ืืืืคืข ืืืืืงื ืืขืืื ืื ืืื ืฆืืืืจ ืืืงืืืง ืืืืืงืืช.
** ืืืกืคืจ ืืืจืื ืฉื ืฉืจืฉืืจืื ืืืืคืข YCSB ืืื ืืื 400. ืืกื ืืื, ืืื ืฆืืจื ืืืจืืฅ ืฉืืฉื ืืืคืขืื ืืงืืืืื ืฉื ืืืืงืืช YCSB ืืื ืืงืื ืกื ืฉื 2400 ืฉืจืฉืืจืื.
ืืืกืชืืืืช ืขื ืชืืฆืืืช ืืืฉืืืื, ืืคืจื ืืฉืืืื ืฉื ืขืืืก ืืขืื ื-TPS, ืื ื ืืืืืื ืืจืืืช ืืืืจืืจ ืฉ-Cloud Spanner ืืชืงืื ืื ืืื. ืืขืืืก ืืืืื ืฉื ืืฆืจ ืขื ืืื ืืกืคืจ ืจื ืฉื ืืืืื ืืงืืื ืขื ืืื ืืกืคืจ ืจื ืฉื ืฆืืชืื ืืืฉืืื Cloud Spanner. ืืืจืืช ืฉืืฉืืืื ื ืจืืืช ืื ืืืืื, ืืืืืื ืืืฉืจ ืคืืขื ืขื 2400 ืฉืจืฉืืจืื, ืืืชืื ืฉืืืื ืฆืืจื ืืืฆืข ืืืืงื ืืืืจืช ืขื 6 ืืืคืขืื ืงืื ืื ืืืชืจ ืฉื ืื ืืข ืืืืฉืื ืืื ืืงืื ืืกืคืจืื ืืืืืงืื ืืืชืจ. ืื ืืืคืข ืืคืขืื ืืืืงืช YCSB ืืืช ืืืงืื ืืืคืข CE ืืื ืืืื ืขื 6 ืืืืงืืช ืืงืืืืืช. ืื ืืงื ืขื ืืืืื ื ืืื ืขืืืืืื ืืืงืฉืช Cloud Spanner ืืืื ืขืืืืืื ืฉื ืืกืคื ืขื ืืื ืืืืืจ ืืจืฉืช ืืื Cloud Spanner ืืืื ืืืคืข CE ืืืจืืฅ ืืช ืืืืืงื.
ืืืฆื ืืชืคืงื Cloud Spanner ื-OLAP?
ืืืืงื ืืืืืฆืืช?
ืืืืงืช ื ืชืื ืื ืืืงืืขืื ืขืฆืืืืื ืคืืืืช ื/ืื ืืืืืช, ืื ืงืจืืื ืืืืฆืืช, ืืื ืืืฉื ืคืืคืืืจื ืืืื ืฉื ืืฆื ืืจืื ืื ืืขื ื-OLAP. ืืืืฆืืช ืืืืืืช ืืฉืคืจ ืืืื ืืช ืืืฆืืขื ืืฉืืืืชืืช ืืชืืืืงืช ืืกื ืื ืชืื ืื. ืืชืขืืงืืช ื ืืกืคืช ืืืืืฆืืช ืชืืื ืืืืจ/ืื ื ืคืจืืื, ืื ืืืื ืจืง ื ืืืืจ ืืช ืืืฉืืืืช ืฉื ืกืืืืช ืืืืฆืืช ืืืืืงืช ืืฉื ื. ืืืืืืช ืืคืฆื ื ืชืื ืื ืืืืืฆืืช ืืืฃ ืืืชืจ ืืืืืฆืืช ืืฉื ื ืืื ืืืคืชื ืืืืฆืืขืื ืฉื ืฉืืืืชืืช ืื ืืืืืืช.
Cloud Spanner ืืื ื ืชืืื ืืืืืฆืืช ืืฉืืขืฆืื. ืื ืืคืจืื ื ืชืื ืื ืคื ืืืืื ืืื ืฉื ืงืจื ืืคืฆื-s ืืืืกืก ืขื ืืืืื ืืคืชื ืจืืฉืืื. ืืืืืงื ืืชืืฆืขืช ืืืืคื ืืืืืืื ืืื ืืืื ืืช ืืขืืืก ืขื ืืฉืืื ื-Cloud Spanner. ืชืืื ื ืฉืืืืฉืืช ืืืื ืฉื Cloud Spanner ืืื ืคืืฆืื ืขืืืก ืืืกืืก ืฉื ืืืื ืื (ืืืื ืฉืืื ื ืืฉืืืืช ืขื ืืืจ). Spanner ืืืื ืืืืืืืืช ืื ืืื ืืืื ืืคืฆื ื ืชืื ืื ืฉื ืงืจืืื ืืชืืืจืืช ืืืืื ืืืชืจ ืืืฉืจ ื ืชืื ืื ืืืจืื ืืคืฆื-ืื, ืืขืฉืืืื ืืืืืื ืขื ืืคืจืื ื ืืกืคืช. ืืคืืื, ืืืชืจ ืฆืืชืื ืืืืืื ืืืืืช ืืขืืจืืื ืืืงืฉื, ืื ืฉืื ืืืืื ืืืขืฉื ืืช ืืชืคืืงื.
ืืืขื ื ืชืื ืื?
ืฉืืืช Cloud Spanner ืขืืืจ ื ืชืื ืื ืืืืืช ืืืืื ืืื ืืฉืืืช ืืขืืื ืจืืืื. ืืืืฆืืขืื ืืงืกืืืืืื, ืขืืื ืืคืขืื ืืคื ืืื ืงืืืื ืื ืืื, ืืืื:
- ืืืื ืืช ืื ืชืื ืื ืฉืื ืืคื ืืคืชื ืจืืฉื.
- ืืืืงืื ืืืชื ื-10*ืืกืคืจ ืฆืืชืื ืกืขืืคืื ืืืืืื.
- ืฆืืจ ืงืืืฆื ืฉื ืืฉืืืืช ืขืืื ืืืืขื ืืช ื ืชืื ืื ืืืงืืื.
ืืขืื ืช ื ืชืื ืื ืื ืืฉืชืืฉืช ืืื ืฆืืชื Cloud Spanner.
ืืฉืชืืฉื ื ืืขืืืก ืืขืืืื A YCSB ืืื ืืืฆืืจ ืืขืจื ื ืชืื ืื ืฉื 10 ืืืืืื ืฉืืจืืช.
* ืืืื ืืขืืืก ืืืคืขื ืขื ืื ืืข ืืืืฉืื n1-standard-32 (32 vCPUs, 120 GB ืืืืจืื) ืืืืคืข ืืืืืงื ืืขืืื ืื ืืื ืฆืืืืจ ืืืงืืืง ืืืืืงืืช.
** ืืืืจืช ืฆืืืช 1 ืืื ื ืืืืืฆืช ืขืืืจ ืื ืขืืืก ืืืฆืืจ.
ืืคื ืฉืืืืืจ ืืขืื, Cloud Spanner ืืขืื ืืืืืืืืช ืคืืฆืืืื ืืืชืื ืืขืืืก ืฉืืื, ืื ืฉืืชืืฆืืืช ืืฉืชืคืจืืช ืืืืจ ืืกืคืจ ืืืืจืฆืืืช ืจืฆืืคืืช ืฉื ืืืืืงื. ืืชืืฆืืืช ืืืืฆืืืช ืืื ืื ืืชืืฆืืืช ืืืืืืช ืืืืชืจ ืฉืงืืืื ื. ืืืกืชืืืืช ืขื ืืืกืคืจืื ืืขืื, ืื ื ืืืืืื ืืจืืืช ืืืฆื Cloud Spanner ืืชืจืื (ืืื) ืืื ืฉืืกืคืจ ืืฆืืชืื ืืืฉืืื ืืื. ืืืกืคืจืื ืืืืืืื ืื ืืื ืืืืืจ ืืืืฆืข ื ืืื ืืืืืื, ืืื ืืื ืืชืืฆืืืช ืฉื ืขืืืกื ืขืืืื ืืขืืจืืื (95% ืงืืจืืื ื-5% ืืืชืืื) ืืืชืืืจ ืืกืขืืฃ ืืขืื.
ืึตืจืึผื?
ืืืืื ืืืงืื ื ืฉื ืืกืคืจ ืฆืืชืื ืฉื Cloud Spanner ืืื ืืฉืืื ืืืืืฆื ืืืช. ืื ืืชื ืจืืฆื ืืืขืื ื ืชืื ืื ืืืืืจืืช, ืืืื ืืืื ืืฉืงืื ืืืืืืจ ืืช ืืืืคืข ืืืงืกืืืื (ืืืงืจื ืฉืื ื ืื ืืื 25 ืฆืืชืื ืืืืืจ ืืจื"ื-ืืืจื) ืืื ืืืคืืืช ืืช ืืกืคืจ ืืฆืืชืื ืืืชืืืืื ืืขืืืก ืืจืืื ืฉืื ืืืืจ ืื ืื ืชืื ืื ืืืกื ืื ืชืื ืื, ืชืื ืืชืืฉืืืช ืืืืืื ืฉื 2 TB/ืฆืืืช.
ื ืืืจื ื ืืืืืื ืืื ืืคืืื ืขื ืืกื ื ืชืื ืื ืงืื ืืืจืื. ืืืืจ ืืกืคืจ ืจืืฆืืช ืืืืงืช ืขืืืก, ืืกื ืื ืชืื ืื ืฉืื ื ืืื ืืืืื ืฉื ื-155 ื'ืืื-ืืืื, ืืืืฉืจ ืืงืื ื ืืืชื ืืืืคืข ืฉื ืฆืืืช ืืื, ืงืืืื ื ืืช ืืฉืืืื ืืืื:
ืืฆืืื ื ืืืงืืื ื-25 ื-2 ืืงืจืื, ืืื ืื ืื ื ืชืงืืขืื ืืฉื ื ืฆืืชืื.
ืืขืืื ืืืคืืชื ืฉื ืืกืคืจ ืืฆืืชืื ืืืฉืืื Cloud Spanner ืืืืื ืืืืืช ืืืืืืืืช ืืืืฆืขืืช REST API. ืื ืืืื ืืืืืช ืฉืืืืฉื ืืืืืื ืืืคืืชืช ืืขืืืก ืืืืืืจ ืขื ืืืขืจืืช ืืฉืขืืช ืขืืืกืืช.
ืืืฆืืขื ืฉืืืืชืช OLAP?
ืืืงืืจ ืชืื ื ื ืืืงืืืฉ ืืื ืื ืืืืื ืืืขืจืืช Spanner ืื ืืฉื ืื. ืืืืจ ืืื ืกืคืืจืืช SELECT, ืืื ื ืืื ืฉืืืืืงื ืชืืื ืงืฆืจื ืืฉSpnner ืื ืืืื ืื ืืข ืืชืืื ื-OLAP. ืืื ืงืฉืจ ืืืกืคืจ ืืฆืืชืื ืืืฉืืื, ืคืฉืื ืืืืจืช ืืกืคืจ ืืฉืืจืืช ืืืืืช ืฉืืจืืช ืฉื 10 ืืืืืื ืืจืื 55 ืขื 60 ืฉื ืืืช. ืืื ืื, ืื ืฉืืืืชื ืฉืืจืฉื ืืืชืจ ืืืืจืื ืืืืกืื ืชืืฆืืืช ืืื ืืื ื ืืฉืื ืขื ืฉืืืืช OOM.
SELECT COUNT(DISTINCT(field0)) FROM usertable; โ (10M distinct values)-> SpoolingHashAggregateIterator ran out of memory during new row.
ืืกืคืจืื ืืกืืืืื ืขืืืจ ืฉืืืืชืืช TPC-H ื ืืชื ืืืฆืื ืืืืืจ ืฉื ืืื ืืืคืงืื
4. ืืืืฆืืื ืฉืื ื
ืืืชืืฉื ืืืฆื ืื ืืืื ืฉื ืืชืืื ืืช ืฉื Cloud Spanner, ืงืฉื ืืจืืืช ืื ืชืืืืฃ ืคืฉืื ืืคืชืจืื OLTP ืงืืื, ืืืืืื ืืืฉืจ ืืฆืจืืื ืฉืื ืขืืืื ืขืืื. ืืืงื ืืจืื ืืื ืืื ืืช ืคืชืจืื ืกืืื ืืืกืจืื ืืช ืฉื Cloud Spanner.
ืืฉืืชืืื ื ืืืขืจืื ืืช Cloud Spanner, ืฆืืคืื ื ืฉืชืืื ืืช ืื ืืืื ืฉืื ืืืื ืืืืืช, ืื ืืคืืืช ืื ืจืืืงืืช ืืคืชืจืื ืืช ืืืจืื ืฉื Google SQL. ืืื ืืืคืชืขื ื ืืืืืกืจ ืืืืืื ืฉื ืืืืืืื ืืืงืจืช ืืืฉื ืืืืืืช ืืืื ืืืฉืืืื. ืฉืื ืืืืจ ืขื ืืื ืชืฆืืืืช, ืืื ืกืืืืช ืคืืชืื ืืงืืืืช, ืจืฆืคืื ืื ื ืชืืืื, JDBC ืืื ืชืืืื ื-DML ื-DDL, ืืื ืืืื.
ืื, ืืื ืืคื ืืช ืืืืฉืื ืฉืฆืจืื ืืืืืื ืืกื ื ืชืื ืื ืขืกืงื? ื ืจืื ืฉืขืืืื ืืื ืคืชืจืื ืืื ืืฉืืง ืฉืืชืืื ืืื ืืงืจื ืืฉืืืืฉ. ืืฉื ื ืคืชืจืื ืืช ืงืื ืกืืืจ ืืคืชืื ืจืืื (ืืืงื ืืืืืจืื ืืืืืจ ืื), ืื ืืื ืขื ื ืงืืืืช ืืืืืง ืืืืืืฉื ืฉืื, ืื ืืฃ ืืื ืืื ืื ืืฆืืข SaaS ืขื 99,999% SLA ืืืจืื ืืืืื ืฉื ืขืงืืืืช. ืื SLA ืืืื ืืื ืืืืจื ืืขืืงืจืืช ืฉืื ืืืชื ืื ื ืืื ืืื ืืช ืคืชืจืื ืืฉืื ืขืืืจ ืขื ื ืื ืืจืืืื, Cloud Spanner ืขืฉืื ืืืืืช ืืคืชืจืื ืฉืืชื ืืืคืฉ. ืืื ืืชื ืฆืจืื ืืืืืช ืืืืข ืืื ืืืืืืืช ืฉืื.
ืืืขื ืืืืื ืืช, Cloud Spanner ืฉืืืจืจ ืืฆืืืืจ ืจืง ืืืืื 2017, ืื ืฉืกืืืจ ืืฆืคืืช ืฉืืืง ืืืคืืืื ืื ืืืืืื ืฉืื ืขืืืืื ืืกืืคื ืฉื ืืืจ ืืืืขืื (ืื ื ืืงืืื), ืืืฉืื ืืงืจื, ืื ืืืื ืืืืืช ืืืืืฃ ืืฉืืง. ืืืจื ืืื, Cloud Spanner ืืื ืื ืจืง ืคืจืืืงื ืฆืืื ืฉื ืืืื. Google ืืฉืชืืฉืช ืื ืืืกืืก ืืืืฆืจืื ืืืจืื ืฉื Google. ืืืืฉืจ ืืืื ืืืืืคื ืืืืจืื ื ืืช Megastore ื-Google Cloud Storage ื-Cloud Spanner, ืืื ืืคืฉืจื ื-Google Cloud Storage ืืืืืช ืขืงืื ืืืืชืจ ืขืืืจ ืจืฉืืืืช ืืืืืืงืืื ืืงื ื ืืืื ืขืืืื (ืื ืฉืขืืืื ืื ืงืืื ืขืืืจ
ืื, ืขืืืื ืืฉ ืชืงืืื... ืื ืื ื ืืงืืืื.
ืื ืืื. ืืื ืืืชื ืืืืืจ, ืื ืื ืื ื ืืืฉืืืื ืืงืืืช, ืืื ืื ืืขืชืื ืขื ืื? ืืชืื ืืชืืืืืช
ืื ื ืืืืื ืื ืืช ืืืื ืืืงืจ ืืฆืื ื
ืืงืืจ: www.habr.com