meta.sql 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. -- create database
  2. CREATE DATABASE if not exists milvus_meta CHARACTER SET utf8mb4;
  3. /*
  4. create tables script
  5. Notices:
  6. 1. id, tenant_id, is_deleted, created_at, updated_at are 5 common columns for all collections.
  7. 2. Query index in community version CANNOT includes tenant_id, since tenant_id is not existed and will miss query index.
  8. */
  9. -- collections
  10. CREATE TABLE if not exists milvus_meta.collections (
  11. id BIGINT NOT NULL AUTO_INCREMENT,
  12. tenant_id VARCHAR(128) DEFAULT NULL,
  13. collection_id BIGINT NOT NULL,
  14. collection_name VARCHAR(256),
  15. description VARCHAR(2048) DEFAULT NULL,
  16. auto_id BOOL DEFAULT FALSE,
  17. shards_num INT,
  18. start_position TEXT,
  19. consistency_level INT,
  20. status INT NOT NULL,
  21. properties VARCHAR(512),
  22. ts BIGINT UNSIGNED DEFAULT 0,
  23. is_deleted BOOL DEFAULT FALSE,
  24. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  25. updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP on update current_timestamp,
  26. PRIMARY KEY (id),
  27. UNIQUE KEY uk_tenant_id_collection_id_ts (tenant_id, collection_id, ts)
  28. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  29. -- collection aliases
  30. CREATE TABLE if not exists milvus_meta.collection_aliases (
  31. id BIGINT NOT NULL AUTO_INCREMENT,
  32. tenant_id VARCHAR(128) DEFAULT NULL,
  33. collection_id BIGINT NOT NULL,
  34. collection_alias VARCHAR(128),
  35. ts BIGINT UNSIGNED DEFAULT 0,
  36. is_deleted BOOL DEFAULT FALSE,
  37. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  38. updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP on update current_timestamp,
  39. PRIMARY KEY (id),
  40. UNIQUE KEY uk_tenant_id_collection_alias_ts (tenant_id, collection_alias, ts),
  41. INDEX idx_tenant_id_collection_id_ts (tenant_id, collection_id, ts)
  42. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  43. -- channels
  44. CREATE TABLE if not exists milvus_meta.collection_channels (
  45. id BIGINT NOT NULL AUTO_INCREMENT,
  46. tenant_id VARCHAR(128) DEFAULT NULL,
  47. collection_id BIGINT NOT NULL,
  48. virtual_channel_name VARCHAR(256) NOT NULL,
  49. physical_channel_name VARCHAR(256) NOT NULL,
  50. removed BOOL DEFAULT FALSE,
  51. ts BIGINT UNSIGNED DEFAULT 0,
  52. is_deleted BOOL DEFAULT FALSE,
  53. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  54. updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP on update current_timestamp,
  55. PRIMARY KEY (id),
  56. UNIQUE KEY uk_tenant_id_collection_id_virtual_channel_name_ts (tenant_id, collection_id, virtual_channel_name, ts),
  57. INDEX idx_tenant_id_collection_id_ts (tenant_id, collection_id, ts)
  58. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  59. -- fields
  60. CREATE TABLE if not exists milvus_meta.field_schemas (
  61. id BIGINT NOT NULL AUTO_INCREMENT,
  62. tenant_id VARCHAR(128) DEFAULT NULL,
  63. field_id BIGINT NOT NULL,
  64. field_name VARCHAR(256) NOT NULL,
  65. is_primary_key BOOL NOT NULL,
  66. description VARCHAR(2048) DEFAULT NULL,
  67. data_type INT UNSIGNED NOT NULL,
  68. type_params VARCHAR(2048),
  69. index_params VARCHAR(2048),
  70. auto_id BOOL NOT NULL,
  71. collection_id BIGINT NOT NULL,
  72. ts BIGINT UNSIGNED DEFAULT 0,
  73. is_deleted BOOL DEFAULT FALSE,
  74. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  75. updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP on update current_timestamp,
  76. PRIMARY KEY (id),
  77. UNIQUE KEY uk_tenant_id_collection_id_field_name_ts (tenant_id, collection_id, field_name, ts),
  78. INDEX idx_tenant_id_collection_id_field_id_ts (tenant_id, collection_id, field_id, ts)
  79. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  80. -- partitions
  81. CREATE TABLE if not exists milvus_meta.`partitions` (
  82. id BIGINT NOT NULL AUTO_INCREMENT,
  83. tenant_id VARCHAR(128) DEFAULT NULL,
  84. partition_id BIGINT NOT NULL,
  85. partition_name VARCHAR(256),
  86. partition_created_timestamp bigint unsigned,
  87. collection_id BIGINT NOT NULL,
  88. status INT NOT NULL,
  89. ts BIGINT UNSIGNED DEFAULT 0,
  90. is_deleted BOOL DEFAULT FALSE,
  91. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  92. updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP on update current_timestamp,
  93. PRIMARY KEY (id),
  94. UNIQUE KEY uk_tenant_id_collection_id_partition_name_ts (tenant_id, collection_id, partition_name, ts),
  95. INDEX idx_tenant_id_collection_id_partition_id_ts (tenant_id, collection_id, partition_id, ts)
  96. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  97. -- indexes
  98. CREATE TABLE if not exists milvus_meta.`indexes` (
  99. id BIGINT NOT NULL AUTO_INCREMENT,
  100. tenant_id VARCHAR(128) DEFAULT NULL,
  101. field_id BIGINT NOT NULL,
  102. collection_id BIGINT NOT NULL,
  103. index_id BIGINT NOT NULL,
  104. index_name VARCHAR(256),
  105. index_params VARCHAR(2048),
  106. user_index_params VARCHAR(2048),
  107. is_auto_index BOOL DEFAULT FALSE,
  108. create_time bigint unsigned,
  109. is_deleted BOOL DEFAULT FALSE,
  110. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  111. updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP on update current_timestamp,
  112. PRIMARY KEY (id),
  113. INDEX idx_tenant_id_collection_id_index_id (tenant_id, collection_id, index_id)
  114. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  115. -- index file paths
  116. CREATE TABLE if not exists milvus_meta.index_file_paths (
  117. id BIGINT NOT NULL AUTO_INCREMENT,
  118. tenant_id VARCHAR(128) DEFAULT NULL,
  119. index_build_id BIGINT NOT NULL,
  120. index_file_path VARCHAR(256),
  121. is_deleted BOOL DEFAULT FALSE,
  122. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  123. updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP on update current_timestamp,
  124. PRIMARY KEY (id),
  125. INDEX idx_tenant_id_index_build_id (tenant_id, index_build_id)
  126. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  127. -- segments
  128. CREATE TABLE if not exists milvus_meta.segments (
  129. id BIGINT NOT NULL AUTO_INCREMENT,
  130. tenant_id VARCHAR(128) DEFAULT NULL,
  131. segment_id BIGINT NOT NULL,
  132. collection_id BIGINT NOT NULL,
  133. partition_id BIGINT NOT NULL,
  134. num_rows BIGINT NOT NULL,
  135. max_row_num INT COMMENT 'estimate max rows',
  136. dm_channel VARCHAR(128) NOT NULL,
  137. dml_position TEXT COMMENT 'checkpoint',
  138. start_position TEXT,
  139. compaction_from VARCHAR(4096) COMMENT 'old segment IDs',
  140. created_by_compaction BOOL,
  141. segment_state TINYINT UNSIGNED NOT NULL,
  142. last_expire_time bigint unsigned COMMENT 'segment assignment expiration time',
  143. dropped_at bigint unsigned,
  144. is_deleted BOOL DEFAULT FALSE,
  145. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  146. updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP on update current_timestamp,
  147. PRIMARY KEY (id),
  148. INDEX idx_tenant_id_collection_id_segment_id (tenant_id, collection_id, segment_id)
  149. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  150. -- segment indexes
  151. CREATE TABLE if not exists milvus_meta.segment_indexes (
  152. id BIGINT NOT NULL AUTO_INCREMENT,
  153. tenant_id VARCHAR(128) DEFAULT NULL,
  154. collection_id BIGINT NOT NULL,
  155. partition_id BIGINT NOT NULL,
  156. segment_id BIGINT NOT NULL,
  157. field_id BIGINT NOT NULL,
  158. index_id BIGINT NOT NULL,
  159. index_build_id BIGINT,
  160. enable_index BOOL NOT NULL,
  161. create_time bigint unsigned,
  162. index_file_keys VARCHAR(4096),
  163. index_size BIGINT UNSIGNED,
  164. `version` INT UNSIGNED,
  165. is_deleted BOOL DEFAULT FALSE COMMENT 'as mark_deleted',
  166. recycled BOOL DEFAULT FALSE COMMENT 'binlog files truly deleted',
  167. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  168. updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP on update current_timestamp,
  169. PRIMARY KEY (id),
  170. UNIQUE KEY uk_tenant_id_segment_id_index_id (tenant_id, segment_id, index_id),
  171. INDEX idx_tenant_id_collection_id_segment_id_index_id (tenant_id, collection_id, segment_id, index_id)
  172. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  173. -- binlog files info
  174. CREATE TABLE if not exists milvus_meta.binlogs (
  175. id BIGINT NOT NULL AUTO_INCREMENT,
  176. tenant_id VARCHAR(128) DEFAULT NULL,
  177. field_id BIGINT NOT NULL,
  178. segment_id BIGINT NOT NULL,
  179. collection_id BIGINT NOT NULL,
  180. log_type SMALLINT UNSIGNED NOT NULL COMMENT 'binlog、stats binlog、delta binlog',
  181. num_entries BIGINT,
  182. timestamp_from BIGINT UNSIGNED,
  183. timestamp_to BIGINT UNSIGNED,
  184. log_path VARCHAR(256) NOT NULL,
  185. log_size BIGINT NOT NULL,
  186. is_deleted BOOL DEFAULT FALSE,
  187. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  188. updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP on update current_timestamp,
  189. PRIMARY KEY (id),
  190. INDEX idx_tenant_id_segment_id_log_type (tenant_id, segment_id, log_type)
  191. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  192. -- users
  193. CREATE TABLE if not exists milvus_meta.credential_users (
  194. id BIGINT NOT NULL AUTO_INCREMENT,
  195. tenant_id VARCHAR(128) DEFAULT NULL,
  196. username VARCHAR(128) NOT NULL,
  197. encrypted_password VARCHAR(256) NOT NULL,
  198. is_super BOOL NOT NULL DEFAULT false,
  199. is_deleted BOOL NOT NULL DEFAULT false,
  200. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  201. updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP on update current_timestamp,
  202. PRIMARY KEY (id),
  203. INDEX idx_tenant_id_username (tenant_id, username)
  204. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  205. -- role
  206. CREATE TABLE if not exists milvus_meta.role (
  207. id BIGINT NOT NULL AUTO_INCREMENT,
  208. tenant_id VARCHAR(128) DEFAULT NULL,
  209. name VARCHAR(128) NOT NULL,
  210. is_deleted BOOL NOT NULL DEFAULT false,
  211. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  212. updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP on update current_timestamp,
  213. INDEX idx_role_tenant_name (tenant_id, name, is_deleted),
  214. PRIMARY KEY (id)
  215. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  216. -- user-role
  217. CREATE TABLE if not exists milvus_meta.user_role (
  218. id BIGINT NOT NULL AUTO_INCREMENT,
  219. tenant_id VARCHAR(128) DEFAULT NULL,
  220. user_id BIGINT NOT NULL,
  221. role_id BIGINT NOT NULL,
  222. is_deleted BOOL NOT NULL DEFAULT false,
  223. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  224. updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP on update current_timestamp,
  225. INDEX idx_role_mapping_tenant_user_role (tenant_id, user_id, role_id, is_deleted),
  226. PRIMARY KEY (id)
  227. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  228. -- grant
  229. CREATE TABLE if not exists milvus_meta.grant (
  230. id BIGINT NOT NULL AUTO_INCREMENT,
  231. tenant_id VARCHAR(128) DEFAULT NULL,
  232. role_id BIGINT NOT NULL,
  233. object VARCHAR(128) NOT NULL,
  234. object_name VARCHAR(128) NOT NULL,
  235. is_deleted BOOL NOT NULL DEFAULT false,
  236. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  237. updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP on update current_timestamp,
  238. INDEX idx_grant_principal_resource_tenant (tenant_id, role_id, object, object_name, is_deleted),
  239. PRIMARY KEY (id)
  240. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  241. -- grant-id
  242. CREATE TABLE if not exists milvus_meta.grant_id (
  243. id BIGINT NOT NULL AUTO_INCREMENT,
  244. tenant_id VARCHAR(128) DEFAULT NULL,
  245. grant_id BIGINT NOT NULL,
  246. grantor_id BIGINT NOT NULL,
  247. privilege VARCHAR(128) NOT NULL,
  248. is_deleted BOOL NOT NULL DEFAULT false,
  249. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  250. updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP on update current_timestamp,
  251. INDEX idx_grant_id_tenant_grantor (tenant_id, grant_id, grantor_id, is_deleted),
  252. PRIMARY KEY (id)
  253. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;