๐OID <-> ๐table_id
14554 ๋จ์ด yugabytedbdatabasesqldistributed
yb-admin
์ถ๋ ฅ์ ๋ณด๋ฉด table_id
๋๋ uuid
๋ก ์๋ณ๋๋ YSQL ํ
์ด๋ธ์ ๋ณผ ์ ์์ต๋๋ค. ๋ค์์ ์์
๋๋ค.์ด ํ ์ด๋ธ ID๋ YSQL ํ ์ด๋ธ ๋๋ ์ธ๋ฑ์ค ์ด๋ฆ์ด "ํ ์ด๋ธ ์ด๋ฆ"์ผ๋ก ํ์๋๊ณ YSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ "ํค์คํ์ด์ค"๋ก ํ์๋๋๋ผ๋ ํ ์ด๋ธ, ์ธ๋ฑ์ค ๋๋ ํํฐ์ ์ ์๋ณํ๊ธฐ์ ์ถฉ๋ถํ์ง ์๊ธฐ ๋๋ฌธ์ ์ค์ํฉ๋๋ค. DocDB์ ์ ์ฅ์๋ ๋ชจ๋ API์ ๊ณตํต์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. YSQL ์คํค๋ง ๋๋ ๊ด๊ณ ์ ํ์ ๋ชจ๋ฆ ๋๋ค. ๊ทธ๋ฆฌ๊ณ YCQL ํ ์ด๋ธ๋ ์์ต๋๋ค.
ํ ์ด๋ธ OID
์์ ์คํฌ๋ฆฐ์ท์์ "Table OID"๊ฐ ํ์๋๊ธฐ ๋๋ฌธ์ YSQL ํ ์ด๋ธ์ ์ฝ๊ฒ ์๋ณํ ์ ์์ต๋๋ค. ์ด ์์์ ํ ์ด๋ธ
00004001000030008000000000004002
์ OID๊ฐ categories
์ธ yb_demo_northwind
๋ฐ์ดํฐ๋ฒ ์ด์ค์ 16386
ํ
์ด๋ธ์์ ์ ์ ์์ต๋๋ค.yugabyte=# \c yb_demo_northwind
psql (13.5, server 11.2-YB-2.13.1.0-b0)
You are now connected to database "yb_demo_northwind" as user "yugabyte".
select
current_database(), schema, relname, relkind, am, owner, tablespace
from ( -- pg_class -> table or index
select relkind, relname, relnamespace, reltype, relowner, relam, reltablespace from pg_class
where oid=16386
) as c natural left join ( -- pg_namespace -> schema
select oid relnamespace, nspname as schema from pg_namespace
) as n natural left join ( -- pg_authid -> owner
select oid relowner, rolname as owner from pg_authid
) as o natural left join ( -- pg_am -> access method
select oid relam, amname am from pg_am
) as a natural left join ( -- spcname pg_tablespace -> tablespace
select oid reltablespace, spcname as tablespace from pg_tablespace
) as t;
current_database | schema | relname | relkind | am | owner | tablespace
-------------------+--------+------------+---------+----+----------+------------
yb_demo_northwind | public | categories | r | | yugabyte |
UUID
๊ทธ๋ฌ๋ YSQL ํ ์ด๋ธ์์
table_id
๋ฅผ ์ฐพ์์ผ ํ ์๋ ์์ต๋๋ค. ์ด๊ฒ์ ํค์คํ์ด์ค(YSQL์ ๊ฒฝ์ฐ PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค)์ ํ
์ด๋ธ(YSQL์ ๊ฒฝ์ฐ ๊ด๊ณ์ PostgreSQL OID ํฌํจ)์์ ๋น๋๋ UUID์
๋๋ค.์์ ๋ด
table_id
: 00004001000030008000000000004002
๋ฅผ ๋ถํดํ์ฌ ๋น๋ ๋ฐฉ๋ฒ์ ์ดํดํด ๋ด
์๋ค.00004001-0000-3000-8000-000000004002
^^^^ -> PostgreSQL Database OID
^ -> UUID Version 3 = name based MD5
^ -> UUID Variant = DCE 1.1, ISO/IEC
^^^^ -> PostgreSQL Relation OID
code์ Postgres oids๋ฅผ ํฌํจํ๊ธฐ ์ํด ์ด์ ์ด๋ฆ โโ๊ธฐ๋ฐ UUID v3์ ์ฉ๋ ๋ณ๊ฒฝ์ด๋ผ๊ณ ์ค๋ช ํฉ๋๋ค.
OID
๋ค์์ ํ์ฌ search_path๋ก ์ฐพ์ ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ด
table_id
ํ
์ด๋ธ์ ๋ํด PostgreSQL์์ categories
๋ฅผ ์ป๋ ๋ฐฉ๋ฒ์
๋๋ค.yb_demo_northwind=#
select format('0000%s00003000800000000000%s'
,lpad(to_hex(oid::int), 4, '0')
,lpad(to_hex('categories'::regclass::oid::int),4,'0')
) table_id from pg_database where datname=current_database()
table_id
----------------------------------
00004001000030008000000000004002
(1 row)
์๋ฅผ ๋ค์ด ํ๋ธ๋ฆฟ ์ ์๋ฅผ
http://yb-tmaster-0:7000/table?id=00004001000030008000000000004002
๋ก ์ง์ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ด๊ฒ์ ์ฌ์ฉํฉ๋๋ค.์ด ์๋ํฌ์ธํธ๋
keyspace_name
๋์ table_id
๋ฐ id
๊ฐ ์๋ ํ๋ธ๋ฆฟ๋ ์ฐพ์ ์ ์์ง๋ง ์คํค๋ง๊ฐ ์๋ YCQL์์๋ง ์๋ํฉ๋๋ค.yb ๊ด๋ฆฌ์
ํ ์ด๋ธ ID๋ฅผ ์๋ ๊ฒ์ UUID์
yb-admin
์ ๋์ด๋ฅผ ๋ถ์ด๋ tableid.
๋ช
๋ น์๋ ์ ์ฉํฉ๋๋ค.$ /home/opc/yugabyte-2.13.1.0/bin/yb-admin list_tablets tableid.00004001000030008000000000004002
Tablet-UUID Range Leader-IP Leader-UUID
e4216871ffd644c3b616d37668400212 partition_key_start: "" partition_key_end: "UU" 10.0.0.61:9100 1e6aa7f085d146e8b29207483592116a
85f1061e6f10410888cbbf6418d7047c partition_key_start: "UU" partition_key_end: "\252\252" 10.0.0.63:9100 9eec605aede445e98ad61bf833dbf6cc
2884fe988f304591b2905e5272a571f9 partition_key_start: "\252\252" partition_key_end: "" 10.0.0.62:9100 4729e36c42934175817c580b52ea6a18
list_tablets
๋ ํค์คํ์ด์ค์ ysql.
์ ๋์ฌ๋ฅผ ์ถ๊ฐํ์ฌ YSQL ํ
์ด๋ธ ์ด๋ฆ์ผ๋ก ์์
ํ ์๋ ์์ต๋๋ค.]$ /home/opc/yugabyte-2.13.1.0/bin/yb-admin list_tablets ysql.yb_demo_northwind categories
Tablet-UUID Range Leader-IP Leader-UUID
e4216871ffd644c3b616d37668400212 partition_key_start: "" partition_key_end: "UU" 10.0.0.61:9100 1e6aa7f085d146e8b29207483592116a
85f1061e6f10410888cbbf6418d7047c partition_key_start: "UU" partition_key_end: "\252\252" 10.0.0.63:9100 9eec605aede445e98ad61bf833dbf6cc
2884fe988f304591b2905e5272a571f9 partition_key_start: "\252\252" partition_key_end: "" 10.0.0.62:9100 4729e36c42934175817c580b52ea6a18
๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ด ์ด๋ฆ์ ๊ฐ์ง ํ ์ด๋ธ์ด ํ๋๋ง ์๋ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค. ๋ค๋ฅธ ์คํค๋ง์์ ๋ค๋ฅธ ์คํค๋ง๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ:
yb_demo_northwind=# create schema franck;
CREATE SCHEMA
yb_demo_northwind=# create table franck.categories (a int);
CREATE TABLE
yb_demo_northwind=#
๋์ผํ
yb-admin
๋ช
๋ น์ด ์ด์ ์ด๋ฆ์ผ๋ก DocDB ํ
์ด๋ธ์ ์๋ณํ์ง ๋ชปํฉ๋๋ค.$ /home/opc/yugabyte-2.13.1.0/bin/yb-admin -init_master_addrs=10.0.0.61:7100 list_tablets ysql.yb_demo_northwind categories
Error running list_tablets: Invalid argument (yb/tools/yb-admin_client.cc:406): Namespace 'ysql.yb_demo_northwind' has multiple tables named 'categories', specify table id instead
์์ปจ๋
ํค์คํ์ด์ค์ ํ ์ด๋ธ ์ด๋ฆ์ ์กฐํฉ์ YCQL์ ๋ํด์๋ง ํ ์ด๋ธ์ ์๋ณํ ์ ์์ต๋๋ค. YSQL์ ์ฌ์ฉํ๋ฉด PostgreSQL ์คํค๋ง์ธ ํ ์ด๋ธ ๋ด์ ์ฌ๋ฌ ๋ค์์คํ์ด์ค๊ฐ ์์ต๋๋ค. DocDB์์ YSQL ๊ด๊ณ๋ฅผ ์๋ณํ๋ ค๋ฉด PostgreSQL ๊ฐ์ฒด ์๋ณ์(OID)์์ ๊ตฌ์ฑ๋ UUID์ธ ํ ์ด๋ธ ID๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์์ ์ฟผ๋ฆฌ๋ฅผ ์ด ์ฉ๋๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฃผ๋ง์ 14์ด์ง๋ฆฌ ์์ด์ ์ํ์ ์ข ํ๊ณ , YSQL ํ ์ด๋ธ์ DocDB ํ ์ด๋ธ์ ์ด๋ฆ์ผ๋ก ๋งคํํ๋ ํจ์๊ฐ non-injective ์ด๋ผ๋ ๊ฒ์ ์ด์ ์ ์ ์์ต๋๋ค. ๋จ์ฌ ํจ์๋ฅผ ์ป์ผ๋ ค๋ฉด UUID๋ก ๋งคํํด์ผ ํฉ๋๋ค. YCQL์ ๋ํ ํ ์ด๋ธ๋ ๋ณด์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ DocDB์ ๋ชจ๋ UUID๋ฅผ ๊ณ ๋ คํ๋ค๋ฉด ์ฌ์ ํ non-surjective์ ๋๋ค. ๊ทธ๋ฌ๋ UUID ๋ฒ์ 3์์๋ bijection ์ด๋ฏ๋ก URL ๋ฐ
yb-admin
์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. YCQL ๋๋ ์์คํ
ํ
์ด๋ธ๊ณผ ๊ฐ์ ๋ค๋ฅธ ํ
์ด๋ธ์ UUID ๋ฒ์ 4์
๋๋ค. ์ด๊ฒ์ ํ
์ด๋ธ ID์ 16์ง์ ํํ์์ 13๋ฒ์งธ ์ซ์์ ์ฝ๊ฒ ๊ตฌ๋ณํ ์ ์์ต๋๋ค.
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐OID <-> ๐table_id), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/yugabyte/oid-tableid-53dhํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค