diff --git a/data-platform/data-development/ROCK_SCHEMA_DDL.sql b/data-platform/data-development/ROCK_SCHEMA_DDL.sql new file mode 100644 index 000000000..77f042a3e --- /dev/null +++ b/data-platform/data-development/ROCK_SCHEMA_DDL.sql @@ -0,0 +1,148 @@ +-- DDL for ROCK_USR schema (only "ROCK_" prefixed tables) +-------------------------------------------------------- + +-- Table: ROCK_ARTISTS +CREATE TABLE "ROCK_USR"."ROCK_ARTISTS" + ( "ARTIST_ID" NUMBER GENERATED BY DEFAULT AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE NOT NULL ENABLE, + "ARTIST_NAME" VARCHAR2(200) COLLATE "USING_NLS_COMP" NOT NULL ENABLE, + "FORMED_YEAR" NUMBER(4,0), + "ORIGIN_COUNTRY" VARCHAR2(100) COLLATE "USING_NLS_COMP", + "GENRE" VARCHAR2(100) COLLATE "USING_NLS_COMP", + "STATUS" VARCHAR2(50) COLLATE "USING_NLS_COMP", + "BIOGRAPHY" CLOB COLLATE "USING_NLS_COMP", + "WEBSITE_URL" VARCHAR2(300) COLLATE "USING_NLS_COMP", + "CREATED_DATE" DATE DEFAULT SYSDATE, + PRIMARY KEY ("ARTIST_ID") + USING INDEX PCTFREE 10 INITRANS 20 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "DATA" ENABLE + ) DEFAULT COLLATION "USING_NLS_COMP" SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 10 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "DATA" + LOB ("BIOGRAPHY") STORE AS SECUREFILE ( + TABLESPACE "DATA" ENABLE STORAGE IN ROW 4000 CHUNK 8192 + NOCACHE LOGGING NOCOMPRESS KEEP_DUPLICATES + STORAGE(INITIAL 262144 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)) ; + + +-- Table: ROCK_ALBUMS +CREATE TABLE "ROCK_USR"."ROCK_ALBUMS" + ( "ALBUM_ID" NUMBER GENERATED BY DEFAULT AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE NOT NULL ENABLE, + "ARTIST_ID" NUMBER NOT NULL ENABLE, + "ALBUM_TITLE" VARCHAR2(200) COLLATE "USING_NLS_COMP" NOT NULL ENABLE, + "RELEASE_YEAR" NUMBER(4,0), + "GENRE" VARCHAR2(100) COLLATE "USING_NLS_COMP", + "LABEL" VARCHAR2(100) COLLATE "USING_NLS_COMP", + "CREATED_DATE" DATE DEFAULT SYSDATE, + PRIMARY KEY ("ALBUM_ID") + USING INDEX PCTFREE 10 INITRANS 20 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "DATA" ENABLE, + CONSTRAINT "FK_ROCK_ALBUMS_ARTIST" FOREIGN KEY ("ARTIST_ID") + REFERENCES "ROCK_USR"."ROCK_ARTISTS" ("ARTIST_ID") ENABLE + ) DEFAULT COLLATION "USING_NLS_COMP" SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 10 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "DATA" ; + + +-- Table: ROCK_SONGS +CREATE TABLE "ROCK_USR"."ROCK_SONGS" + ( "SONG_ID" NUMBER GENERATED BY DEFAULT AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE NOT NULL ENABLE, + "ALBUM_ID" NUMBER NOT NULL ENABLE, + "SONG_TITLE" VARCHAR2(200) COLLATE "USING_NLS_COMP" NOT NULL ENABLE, + "DURATION" NUMBER(5,0), + "TRACK_NUMBER" NUMBER, + "CREATED_DATE" DATE DEFAULT SYSDATE, + "IS_SINGLE" CHAR(1) COLLATE "USING_NLS_COMP", + PRIMARY KEY ("SONG_ID") + USING INDEX PCTFREE 10 INITRANS 20 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "DATA" ENABLE, + CHECK (is_single IN ('Y','N')) ENABLE, + CONSTRAINT "FK_ROCK_SONGS_ALBUM" FOREIGN KEY ("ALBUM_ID") + REFERENCES "ROCK_USR"."ROCK_ALBUMS" ("ALBUM_ID") ENABLE + ) DEFAULT COLLATION "USING_NLS_COMP" SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 10 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "DATA" ; + + +-- Table: ROCK_CONCERTS +CREATE TABLE "ROCK_USR"."ROCK_CONCERTS" + ( "CONCERT_ID" NUMBER GENERATED BY DEFAULT AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE NOT NULL ENABLE, + "ARTIST_ID" NUMBER NOT NULL ENABLE, + "VENUE" VARCHAR2(200) COLLATE "USING_NLS_COMP", + "CITY" VARCHAR2(100) COLLATE "USING_NLS_COMP", + "COUNTRY" VARCHAR2(100) COLLATE "USING_NLS_COMP", + "CONCERT_DATE" DATE, + "TOUR_NAME" VARCHAR2(200) COLLATE "USING_NLS_COMP", + "ATTENDANCE" NUMBER, + "CONCERT_STATUS" VARCHAR2(50) COLLATE "USING_NLS_COMP", + "NOTES" CLOB COLLATE "USING_NLS_COMP", + "CREATED_DATE" DATE DEFAULT SYSDATE, + PRIMARY KEY ("CONCERT_ID") + USING INDEX PCTFREE 10 INITRANS 20 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "DATA" ENABLE, + CONSTRAINT "FK_ROCK_CONCERTS_ARTIST" FOREIGN KEY ("ARTIST_ID") + REFERENCES "ROCK_USR"."ROCK_ARTISTS" ("ARTIST_ID") ENABLE + ) DEFAULT COLLATION "USING_NLS_COMP" SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 10 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "DATA" + LOB ("NOTES") STORE AS SECUREFILE ( + TABLESPACE "DATA" ENABLE STORAGE IN ROW 4000 CHUNK 8192 + NOCACHE LOGGING NOCOMPRESS KEEP_DUPLICATES + STORAGE(INITIAL 262144 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)) ; + + +-- Table: ROCK_SETLIST_SONGS +CREATE TABLE "ROCK_USR"."ROCK_SETLIST_SONGS" + ( "SETLIST_ID" NUMBER GENERATED BY DEFAULT AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE NOT NULL ENABLE, + "CONCERT_ID" NUMBER NOT NULL ENABLE, + "SONG_ID" NUMBER, + "POSITION" NUMBER, + "NOTES" VARCHAR2(500) COLLATE "USING_NLS_COMP", + PRIMARY KEY ("SETLIST_ID") + USING INDEX PCTFREE 10 INITRANS 20 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "DATA" ENABLE, + CONSTRAINT "FK_ROCK_SETLIST_CONCERT" FOREIGN KEY ("CONCERT_ID") + REFERENCES "ROCK_USR"."ROCK_CONCERTS" ("CONCERT_ID") ENABLE, + CONSTRAINT "FK_ROCK_SETLIST_SONG" FOREIGN KEY ("SONG_ID") + REFERENCES "ROCK_USR"."ROCK_SONGS" ("SONG_ID") ENABLE + ) DEFAULT COLLATION "USING_NLS_COMP" SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 10 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "DATA" ; diff --git a/data-platform/data-development/globally-distributed-database/README.md b/data-platform/data-development/globally-distributed-database/README.md new file mode 100644 index 000000000..3106a0fe6 --- /dev/null +++ b/data-platform/data-development/globally-distributed-database/README.md @@ -0,0 +1,51 @@ +# Globally Distributed Database (GDD) + +A distributed database is a database scaling technique based on horizontal partitioning of data across multiple independent physical databases. Each physical database in such a configuration is called a shard. From the perspective of an application, a distributed database looks like a single database; the number of shards, and the distribution of data across those shards, are completely transparent to the application. + +A sharded table is partitioned across all shards of the distributed database. Table partitions on each shard are not different from partitions that could be used in an Oracle database that is not sharded. + +Key benefits of Oracle Globally Distributed Database: + +- Linear Scalability : The Oracle Globally Distributed Database shared–nothing architecture eliminates performance bottlenecks and provides unlimited scalability (up to 1000 shards scaling support); + +- Extreme Availability and Fault Isolation: The failure or slow-down of one shard does not affect the performance or availability of other shards. An unplanned outage or planned maintenance of a shard impacts only the availability of the data on that shard; + +- Geographical Distribution of Data: Globally Distributed Database enables you to deploy a global database, where a single logical db could be distributed over multiple geographies, making it possible to satisfy data privacy regulatory requirements (Data Sovreignity) as well as allows to store particular data close to its consumers (Data Proximity). + +Globally Distributed Database has a flexible deployment model, embracing the Shared-Nothing architecture. Because the database shards do not share any resources, the shards can exist anywhere on a variety of on-premises and cloud systems. + +You can choose to deploy all of the shards on-premises, have them all in the cloud, or you can split them up between cloud and on-premises systems to suit your needs. + +Shards can be deployed on all database deployment models such as single instance, Exadata, and Oracle RAC. + +Oracle Globally Distributed Database relies on replication for availability. Oracle Globally Distributed Database provides various means of replication depending on your needs: + +- Oracle Data Guard. + +- Raft Replication. + + +Replication provides high availability, disaster recovery, and additional scalability for reads. +A unit of replication can be a shard, a part of a shard, or a group of shards. You can choose either Oracle Data Guard or Raft replication to replicate your data. +Oracle Globally Distributed Database automatically deploys the specified replication topology to the procured systems, and enables data replication. Replication is declaratively specified using GDSCTL command syntax. + +Reviewed: 1.09.2025 + + +# Table of Contents + +1. [Useful Links](#useful-links) + + +# Useful Links + +- [Globally Distributed Database in 23ai](https://docs.oracle.com/en/database/oracle/oracle-database/23/shard/changes-oracle-database-23ai.html#GUID-BDC14D70-C513-4EC3-B1A4-AA0616290800) + + +# License + +Copyright (c) 2025 Oracle and/or its affiliates. + +Licensed under the Universal Permissive License (UPL), Version 1.0. + +See [LICENSE](https://github.com/oracle-devrel/technology-engineering/blob/main/LICENSE) for more details.