범위(range) a-m /n-r / s-z
해시(hash) 해시함수 파티션별로 크기를 비슷하게 나눔
리스트(list) 특정한 컬럼을 기준
컴포지트(composite) range-hash/range-list
mariadb 다운로드
docker pull mariadb:10.1
docker run -d -e MYSQL_ROOT_PASSWORD=sample --name=spider mariadb:10.1
docker exec -it spider bash
docker run -d -e MYSQL_ROOT_PASSWORD=sample --name=sample1 mariadb:10.1
docker run -d -e MYSQL_ROOT_PASSWORD=sample --name-sample2 mariadb:10.1
docker ps -a
docker exec -it sample1 bash
docker exec -it sample2 bash
docker inspect spider | grep "IPAddress"
docker inspect sample1 | grep "IPAddress"
docker inspect sample2 | grep "IPAddress"
docker exec -it spider bash
docker exec -it sample1 bash
docker exec -it sample2 bash
cd /user/share/mysql
mysql -u root < /usr/share/mysql/install_spider.sql
show engines;
https://mariadb.com/kb/en/mariadb/spider-storage-engine-overview/
use mysql;
create user 'spider-test'@'%' identified by 'sample';
grant all on . to 'spider-test'@'%' with grant option;
flush privileges;
create server sample1
foreign data wrapper mysql
options(
host '172.17.0.x',
database 'sampleDB',
user 'spider-test',
password 'sample',
port 3306
);
create server sample2
foreign data wrapper mysql
options(
host '172.17.0.x',
database 'sampleDB',
user 'spider-test',
password 'sample',
port 3306
);
select * from mysql.servers;
create database sampleDB;
user sampleDB;
create table shardingTest(id int not null auto_increment, name varchar(255) not null, address varchar(255) not null, primary key(id) engine=spider comment='wrapper "mysql", talbe "shardingTest"' partition by key(id) (partition sample1 comment = 'srv "sample1"', partition sample2 comment = 'srv "sample2"' );
create database sampleDB;
user sampleDB;
create table shardingTest
(
id int not null auto_increment,
name varchar(255) not null,
address varchar(255) not null,
primary key(id)
);
spider 접속 후
user sampleDB;
insert into shardingTest(name, address) values ('kim', 'seoul');
insert into shardingTest(name, address) values ('lee', 'seoul');
insert into shardingTest(name, address) values ('park', 'seoul');
insert into shardingTest(name, address) values ('kim', 'busan');
insert into shardingTest(name, address) values ('lee', 'daegu');
insert into shardingTest(name, address) values ('park', 'jeju');
select * from shardingTest;
sample1,2에서도 각각 확인
select * from shardingTest;
VLDB Very Large DBMS