• • • • • • • • •
• • • • • • • • • • • • • • • •
§ E § § C M § § E CE- 5 CE E 7 40 -3 40 21 E
C C / C IT R / / / / / / …… / / / / O / / / /
TB PB PC TB
• • • • • •
MySQL PostgreSQL SparkSQL JSON S3 Posix
Catalog Data Data Data Catalog Data Data Data Catalog Data Data Data Coord Data Data Data Data Data Data Coord Data Data Data 1181011800 11820 11830 11840 11820 11830 11840 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 192.168.1.6 datagroup1 datagroup2 datagroup3 datagroup4 datagroup5 datagroup6 Coord MySQL MySQL MySQL 3306 APP/JDBC
3 CPU 2 48C 2 32C 2 24C 256GB 256GB 128GB 6 x 512GB SSD 12 x 2TB SAS 12 x 4TB SATA CentOS 7.4 CentOS 7.4 CentOS 7.4
TargetPartition = DHT ( Row->PartitionKey ) datagroup1 datagroup2 datagroup3
• • 2 • 2 •
Data Data Data Data Data Data Data Data Data 11820 11830 11840 192.168.1.1 192.168.1.2 192.168.1.3 datagroup1 datagroup2 datagroup3 MySQL Coord MySQL Coord MySQL Coord 3306 11810 192.168.1.4 192.168.1.5 192.168.1.6 Catalog Catalog Catalog11800 Catalog Catalog Catalog 11800 Data Data Data Data Data Data Data Data Data 11820 11830 11840 datagroup4 datagroup5 datagroup6
• • • • • • • •
• SQL DML • DDL DCL • • MySQL • JDBC • MySQL • MySQL • MySQL
• mydumper/myloader • Kettle • sdbimprt/sdbexprt • Oracle Golden Gate • IBM CDC • MySQL Binlog Replication
o rS e d p i T fL A6 4C B T a ih 10 0 MO Iy n c x 5 o t 2B6 6C 2B6 / 1 + + / 1 // / 1 / B D +6 1E430 G m lQ p e c QO Oracle DB2 Informix MySQL
b N d P V b N N C + V N S 3 124F N O b N + N d i J T Oracle DB2 Informix MySQL
• • / • / • • / •
1 n 1 T P Q o O 2 4 2D ySB M 3 Q o 0 % I L
G 1 M J 2 3 P S Q LH N
k k1 Q 2 3 2 a kT L S Q E 2
N O 4J M 2 M B M D M 1 3
1 S2 S S 4 A S 5 3 S 5
bash ls …… Linux Kernel vfs fuse libfuse 1 4 1 1 3 2 L
MySQL 1 MySQL 2 MySQL 3 MySQL 4 SparkSQL 1 SparkSQL 2 MySQL
MySQL 1 MySQL 2 S3 Posix
I4 P3 2 1
File Header Space Management Extent Data Segment Metadata CS Metadata page1 page2 ... offset1 offset2 key2 key1
Insert into T1 values ( 1, ‘hello’ ) ;JDBC MySQL Select * from T1 where c1=1 ;
S3 SDK Bucket.put ( objectID, fileName ) ; objectID File = Bucket.get ( objectID ) ; objectID
MySQL GTM 1 insert 1 2 3 insert 1 4 1 5 insert 2 6 insert 2 7 2 8 commit 9 pre-commit 10 confirm 11 commit 12 commit 13 commit 14
1 r C O w O % y p I D P D 1 U OT 1 1 9 1 U A – m t % / 1 U 3 255 3 l U 4 24 co o A A o o – m % // / / s / 0 A t o U s i o w a – % A S o
MySQL sequoiadb_use_partition on sequoiadb_use_bulk_insert on sequoiadb_bulk_insert_size 100 sequoiadb_use_autocommit on sequoiadb_replica_size -1 -1 auto.cnf
maxpool 50 numpreload 0 sortbuf 256MB preferedinstance M plancachelevel 0 /conf/local/ /sdb.conf
transactionon true transactiontimeout 60s transisolation 0 UR translockwait false transautocommit false transautorollback true transuserbs true /conf/local/ /sdb.conf
MySQL SequoiaDB MySQL InnoDB SequoiaDB stock order item MySQL item SequoiaDBorderstock
MySQL binlog replication 100% MySQL SequoiaDB MySQL MySQL SequoiaDB F5 Binlog Replication
S3 API PUT Bucket Create User DELETE Bucket Create AccessKey GET Service DELETE User GET Bucket location GET AccessKey HEAD Bucket LIST Regions PUT Object PUT Region GET Bucket (List Objects) Version 2 DELETE Region GET Bucket Object versions GET Region GET Object HEAD Region HEAD Object DELETE Object PUT Bucket versioning GET Bucket versioning
CollectionSpace String -- collection collection space Collection String -- collection collection space CreateTime NumberLong 0 SampleRecords NumberLong 0 TotalRecords NumberLong 10 dmsMBStatInfo _totalRecords TotalDataPages NumberInt 1 TotalDataSize NumberLong dmsMBStatInfo _totalDataLen AvgNumFields NumberInt 10
CollectionSpace String -- collection collection space Collection String -- collection collection space CreateTime NumberLong 0 Index String -- Index KeyPattern BSONObj -- {a:1, b:-1} SampleRecords NumberLong 0 TotalRecords NumberLong 10 SYSSTAT.SYSCOLLECTIONSTAT TotalRecords dmsMBStatInfo _totalRecords IndexPages NumberInt 1 IndexLevels NumberInt 1 IsUnique BOOL FALSE Index DistinctValues NumberLong 0 Collection TotalRecords NullFrac NumberInt 0 null NullFrac / 10000 UndefinedFrac NumberInt 0 $undefined UndefinedFrac / 10000 MCV Object undefined Most Common Values MCV: { Values: [ {a:1,b:1}, {a:2, b:2}, ... ], Frac: [ 1000, 1000, ... ] } MCV.Values Array MCV MCV.Frac Array MCV 0 ~ 10000 Frac / 10000 Histogram Object undefined Histogram.Frac NumberDouble 0 0 ~ 10000 Frac / 10000 Histogram.Bounds Array TypeSet Object undefined TypeSet.Types Array TypeSet.Frac Array 0 ~ 10000 Frac / 10000
MySQL MySQL Protocol Query Parser Query Optimizer Query Execution Storage Plugin Coord SDB Protocol Query Parser Transaction Mgmt Runtime Network Data SDB Protocol Runtime Data Management Index Management Log Management
4 1 S n 2e2 0 dA3 3 1 aS 1 3 1 D v D i hr D m 3 3 1 3 1 1 aS 43 o2 1 D D o2 aS
k8s sequoiadb Coord Data Catalog sequoisql-mysql MySQL
SequoiaDB Distributed Relational Database

SequoiaDB Distributed Relational Database