Spis treściKliknij link, aby przejść do wybranego miejsca
Ta treść została automatycznie przetłumaczona z ukraińskiego.
DDL (Definicja Danych Language) oraz DML (Dane Manipulacyjne Language) - to dwa kluczowe pojęcia w dziedzinie relacyjnych baz danych.
DDL (Definicja Danych)
DDL (Definicja Danych) - język opisu danych. Język ten jest używany do opisu struktury bazy danych, tworzenia, modyfikowania i usuwania obiektów bazy danych. Tutaj mamy do czynienia z takimi obiektami, jak tabele, indeksy, schematy itp.
Na przykład, aby stworzyć nową tabelę w bazie danych w SQL, można użyć następującego kodu:
CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
W tym przykładzie użyliśmy operacji DDL CREATE TABLE, aby stworzyć nową tabelę o nazwie "users". Pola "id", "username" oraz "email" są opisane z ich typami danych i ograniczeniami, takimi jak NOT NULL oraz UNIQUE. Ponadto, określiliśmy, że wartość dla pola "created_at" będzie domyślnie aktualnym czasem (czas w momencie tworzenia).
W DDL istnieje kilka podstawowych operacji, które są używane do definiowania i zmiany struktury bazy danych:
CREATE: Ta operacja jest używana do tworzenia nowych obiektów bazy danych, takich jak tabele, indeksy itp.
ALTER: Za pomocą operacji ALTER można zmieniać strukturę już istniejących obiektów bazy danych, na przykład dodawać, zmieniać lub usuwać kolumny w tabeli.
DROP: Ta operacja jest używana do usuwania istniejących obiektów bazy danych, takich jak tabele, indeksy itp.
TRUNCATE: Operacja TRUNCATE jest używana do usuwania wszystkich rekordów z tabeli, zachowując samą tabelę.
RENAME: jest używana do zmiany nazw już istniejących obiektów bazy danych, takich jak tabele, kolumny, indeksy itp.
DML (Manipulacja Danymi)
DML (Manipulacja Danymi) - język manipulacji danymi. Jest używany do pracy z zawartością bazy danych, czyli do tworzenia, aktualizacji, usuwania i wybierania (wyszukiwania) danych z tabel.
Przyjrzyjmy się przykładom użycia operacji DML w SQL:
-- Dodanie nowego użytkownika
INSERT INTO users (username, email)
VALUES ('user_name', '[email protected]');
-- Aktualizacja danych użytkownika
UPDATE users
SET username = 'new_user_name'
WHERE id = 1;
-- Usunięcie użytkownika
DELETE FROM users
WHERE id = 1;
-- Wybór danych z tabeli
SELECT * FROM users;
W tych przykładach używamy operacji DML INSERT, UPDATE, DELETE oraz SELECT do tworzenia nowego rekordu w tabeli, aktualizacji informacji o użytkowniku, usunięcia użytkownika oraz uzyskania wszystkich użytkowników z tabeli odpowiednio.
Podstawowe operacje DML:
INSERT: Ta operacja jest używana do dodawania (tworzenia) nowych rekordów w bazie danych.
UPDATE: Operacja UPDATE pozwala na zmianę danych już istniejących rekordów w tabeli.
DELETE: Ta operacja jest używana do usuwania rekordów z tabeli bazy danych.
SELECT: Używana do wybierania (wyszukiwania) danych z tabel bazy danych.
Różnica między DML a DDL
Aby utrwalić materiał, powtórzmy różnicę między tymi dwoma terminami.
DDL (Definicja Danych) | DML (Manipulacja Danymi)
Definicja i Manipulacja - główne różnice terminów. Pierwszy (definicja) dotyczy tabel (opisu, tworzenia, konfiguracji tabel). Drugi (manipulacja) dotyczy danych, a konkretnie manipulacji nimi (tworzenie, aktualizacja, usuwanie i wyszukiwanie danych w tabeli).
DDL i DML w migracjach w Ruby on Rails
Przykład migracji DML w Ruby on Rails do dodania nowej kolumny do tabeli:
class AddNameToUsers < ActiveRecord::Migration[7.0]
def change
add_column :users, :name, :string
end
end
W tej migracji używamy metody add_column, aby dodać nową kolumnę o nazwie "name" i typie "string" do tabeli "users".
Przykład migracji DDL w Ruby on Rails do stworzenia nowej tabeli:
class CreateProducts < ActiveRecord::Migration[7.0]
def change
create_table :products do |t|
t.string :name
t.decimal :price
t.timestamps
end
end
end
W tej migracji używamy metody create_table, aby stworzyć nową tabelę "products" z kolumnami "name", "price" oraz znacznikami czasu "created_at" i "updated_at".
Przykład migracji w Ruby on Rails z disable_ddl_transaction!
class AddIndexesToProducts < ActiveRecord::Migration[7.0]
disable_ddl_transaction!
def change
add_index :products, :name
add_index :products, :price
end
end
W tej migracji używamy disable_ddl_transaction!, aby wyłączyć transakcję DDL dla tworzenia indeksów na tabeli "products". Może to być przydatne w sytuacjach, gdy tworzenie indeksów zajmuje dużo czasu i chcesz wykonać tę operację bez oczekiwania na zakończenie transakcji. Ale co to jest transakcja i dlaczego należy ją wyłączyć?
Transakcje DDL (Definicja Danych) - to transakcje, które obejmują operacje zmieniające strukturę bazy danych. Takie operacje mogą obejmować tworzenie, modyfikowanie lub usuwanie tabel, kolumn, indeksów i innych obiektów bazy danych.
Kiedy wykonujesz operacje DDL (na przykład tworzenie tabeli lub dodawanie nowej kolumny), te operacje zazwyczaj są wykonywane w ramach kontekstu transakcyjnego. Oznacza to, że będą one realizowane jako jedna atomowa operacja - albo zostaną wykonane w całości, albo nie zostaną wykonane wcale.
Jednak w niektórych przypadkach, szczególnie gdy wykonujesz masowe operacje DDL, takie jak dodawanie indeksów do dużych tabel, włączenie kontekstu transakcyjnego może prowadzić do problemów z wydajnością (ponieważ tabela będzie zablokowana na czas transakcji, na przykład użytkownicy nie będą mogli składać nowych zamówień). W takich przypadkach można używać disable_ddl_transaction! w migracjach Ruby on Rails, aby wyłączyć kontekst transakcyjny dla operacji DDL. W ten sposób te operacje będą wykonywane bez oczekiwania na zakończenie transakcji.
disable_ddl_transaction! jest wygodne do używania, gdy chcesz uniknąć blokowania tabel podczas dużych operacji tworzenia lub zmiany schematu bazy danych. Ale musisz być pewny, że tę operację naprawdę można bezpiecznie wykonać poza transakcją.
Ten post nie ma jeszcze żadnych dodatków od autora.