๐[Spring] ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ(Disk)์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ.
์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ(Disk) ์ ์ ์ฅํ๋ ๊ณผ์ ์ ์ํํธ์จ์ด์ ํ๋์จ์ด๊ฐ ํ๋ ฅํ์ฌ ์ด๋ฃจ์ด์ง๋๋ค.
์ผ๋ฐ์ ์ผ๋ก Java ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์
์์๋ ํ์ผ ์์คํ
์ ํ์ผ์ ์ ์ฅํ๊ฑฐ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ๋ ๋ ๊ฐ์ง ์ฃผ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ ์ ์์ต๋๋ค.
1๏ธโฃ ํ์ผ ์์คํ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ.
- ํ์ผ ์์คํ
์ ํตํด ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ ํ์ผ์ ์ง์ ์์ฑํ๊ณ , ๊ทธ ์์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๋ ๋ฐฉ์์
๋๋ค.
- ์ด๋ฅผ ํตํด ๋ก๊ทธ, ์ด๋ฏธ์ง ํ์ผ, ํ ์คํธ ํ์ผ ๋ฑ์ ๋์คํฌ์ ์ ์ฅํ ์ ์์ต๋๋ค.
ํ์ผ ์ ์ฅ ์์(Java)
Java์์๋ FileOutputStream
์ด๋ BuffereWriter
๋ฑ์ ์ฌ์ฉํ์ฌ ํ์ผ์ ๋์คํฌ์ ์ ์ฅํ ์ ์์ต๋๋ค.
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class FileStorageExample {
public static void main(String[] args) {
String filePath = "/path/to/file.txt"; // ์ ์ฅํ ํ์ผ ๊ฒฝ๋ก
String data = "This is the content to save in the file";
try (BufferWriter writer = BufferedWriter(new FileWriter(filePath))) {
writer.write(data); // ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ก
System.out.println("File saved successfully")
} catch (IOException e) {
e.printStackTrace();
}
}
}
์คํ ๊ณผ์
1. FileWriter
- Java์
FileWriter
๋ ์ง์ ๋ ๊ฒฝ๋ก์ ์ ํ์ผ์ ์์ฑํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๋ ํด๋์ค์ ๋๋ค. - ๋ง์ฝ ํ์ผ์ด ์ด๋ฏธ ์กด์ฌํ๋ค๋ฉด, ํด๋น ํ์ผ์ ๋ฎ์ด์ฐ๊ธฐ ๋๋ ์ถ๊ฐํ ์ ์์ต๋๋ค.
2. BufferedWriter
- ๋ฐ์ดํฐ์ ํจ์จ์ ์ธ ๊ธฐ๋ก์ ์ํด
BufferedWriter
๋ฅผ ์ฌ์ฉํ์ฌ, ๋ฉ๋ชจ๋ฆฌ์์ ๋์คํฌ๋ก ๋ฐ์ดํฐ๊ฐ ํจ๊ณผ์ ์ผ๋ก ์ ๋ฌ๋๋๋ก ํฉ๋๋ค.
3. ๋์คํฌ์ ๊ธฐ๋ก
- ์ด ์ฝ๋๊ฐ ์คํ๋๋ฉด, ํ์ผ์ ์ง์ ๋ ๋๋ ํ ๋ฆฌ์ ์์ฑ๋๊ณ , ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
2๏ธโฃ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ ๋ค๋ฅธ ์ฃผ์ ๋ฐฉ์์ ๋๋ค.
- ์๋ฒ์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (DBMS, Database Management System) ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, DBMS๋ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํฉ๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก Java ์ ํ๋ฆฌ์ผ์ด์ ์ JDBC(Java Database Connectivity) ๋๋ JPA(Java Persistence API) ๊ฐ์ ORM(Object Relational Mapping) ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ ์ ์ฅ ์์(JPA)
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
@Entity
public class User {
@Id
@GeneratedValue(staratege = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// Getters and Setters
// ...
}
public class DatabaseStorageExample {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("my-persistence-unit");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
User user = new User();
user.setName("Kobe");
user.setEmail("kobe@example.com");
em.persist(user); // ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ (๋์คํฌ๋ก ์ ์ฅ๋จ)
em.getTransaction().commit();
em.close;
emf.close();
System.out.printlsn("Data saved to database");
}
}
์คํ ๊ณผ์ .
1. Entity ์ ์.
-
User
ํด๋์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ๋งคํ๋ ์ํฐํฐ(Entity) ์ ๋๋ค. -
@Entity
์ ๋ํ ์ด์ ์ ํตํด JPA๋ ์ด ๊ฐ์ฒด๋ฅผ ํ ์ด๋ธ๊ณผ ์ฐ๊ฒฐํฉ๋๋ค.
๐โโ๏ธ ์ํฐํฐ(Entity)
2. EntityManage.
- JPA์
EntityManager
๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ๋ ์ธํฐํ์ด์ค๋ก, ๋ฐ์ดํฐ๋ฅผ ์ฝ์ , ์์ , ์ญ์ ํ ์ ์์ต๋๋ค.
3. ๋ฐ์ดํฐ ์ ์ฅ.
-
em.persist(user)
๋ฉ์๋๋ฅผ ํตํดUser
๊ฐ์ฒด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ณ , ์ด ๋ฐ์ดํฐ๋ ๊ฒฐ๊ตญ ๋์คํฌ์ ๊ธฐ๋ก๋ฉ๋๋ค.
4. ํธ๋์ญ์ ๊ด๋ฆฌ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋๋ ํธ๋์ญ์ ์ด ํ์ํฉ๋๋ค.
- ํธ๋์ญ์
์ด ์๋ฃ๋๋ฉด(
commit()
), ๋ฐ์ดํฐ๋ ์๊ตฌ์ ์ผ๋ก ๋์คํฌ์ ์ ์ฅ๋ฉ๋๋ค.
๐โโ๏ธ ํธ๋์ญ์ (Transaction)
3๏ธโฃ ๋์คํฌ์ ์ ์ฅ๋๋ ๋ฐฉ์.
- ์๋ฒ์์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ์ ์ฌ๋ฌ ํ๋์จ์ด์ ์ํํธ์จ์ด ๊ตฌ์ฑ ์์๊ฐ ํ๋ ฅํ์ฌ ์ด๋ฃจ์ด์ง๋๋ค.
- ์๋๋ ๋์คํฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ธฐ๋ณธ์ ์ธ ๊ณผ์ ์ ์ค๋ช ํฉ๋๋ค.
3.1 ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ดํฐ ์์ฑ.
- ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ์ผ ์์คํ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ค๊ณ ํ๋ฉด, ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ(RAM)์ ์์ฑํฉ๋๋ค.
3.2 ๋ฐ์ดํฐ ์ ์ฅ ์์ฒญ.
- ์ ํ๋ฆฌ์ผ์ด์
์ ์ด์ ์ฒด์ (OS)๋ฅผ ํตํด ๋์คํฌ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ผ๋ ์์ฒญ์ ๋ณด๋
๋๋ค.
- ์ด ์์ฒญ์ ์์คํ ์ฝ(System Call)์ ํตํด ํ์ผ ์์คํ ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์ ๋ฌ๋ฉ๋๋ค.
3.3 ๋์คํฌ์ ๊ธฐ๋ก (I/O ์์ ).
- ์ด์ ์ฒด์ ๋ ๋์คํฌ ์ปจํธ๋กค๋ฌ์๊ฒ ๋ฐ์ดํฐ ์ฐ๊ธฐ ์์ ์ ์์ฒญํฉ๋๋ค.
- ๋์คํฌ(HDD/SSD) ์ปจํธ๋กค๋ฌ๋ ๋์คํฌ์ ํน์ ๋ธ๋ก ๋๋ ์นํฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
- ์ด ๊ณผ์ ์์ ๋ฒ์ค๋ฅผ ํตํด ๋ฐ์ดํฐ๊ฐ CPU, RAM, ๋์คํฌ ๊ฐ์ ์ ์ก๋ฉ๋๋ค.
- SSD์ ๊ฒฝ์ฐ, ํ๋์ ๋ฉ๋ชจ๋ฆฌ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๊ณ , HDD์ ๊ฒฝ์ฐ ์๊ธฐ ๋์คํฌ ํ๋ํฐ์ ์์ฑ ๋ณํ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
3.4 ๋ฐ์ดํฐ ์บ์ ์ฒ๋ฆฌ.
- ๋์คํฌ ์ฐ๊ธฐ ์์
์ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์, ์ด์ ์ฒด์ ๋ ์บ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ธฐ๋กํ ํ, ์ผ์ ์ฃผ๊ธฐ๋ก ๋์คํฌ์ ์ฐ๋ ์์
์ ์ฒ๋ฆฌํฉ๋๋ค.
- ์ด๋ฅผ ๋ฒํผ๋ง์ด๋ผ๊ณ ํฉ๋๋ค.
3.5 ๋์คํฌ ์๋ฃ ๋ฐ ํ์ธ.
- ๋ฐ์ดํฐ๊ฐ ๋์คํฌ์ ์ฑ๊ณต์ ์ผ๋ก ๊ธฐ๋ก๋๋ฉด, ๋์คํฌ ์ปจํธ๋กค๋ฌ๋ ์ด์ ์ฒด์ ์ ์ฑ๊ณต์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค๋ ์ ํธ๋ฅผ ๋ณด๋
๋๋ค.
- ์ด ์ ํธ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊น์ง ์ ๋ฌ๋๋ฉด, ๋ฐ์ดํฐ ์ ์ฅ์ด ์๋ฃ๋์์์ ํ์ธํ ์ ์์ต๋๋ค.
4๏ธโฃ ํ๋์จ์ด์ ์ผ๋ก ์ผ์ด๋๋ ์ผ.
- ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์ ์ฅํ๋ ํ๋์จ์ด์ ์ธ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. CPU์ ๋ฉ๋ชจ๋ฆฌ ์ํธ์์ฉ.
- ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ฉด, CPU๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ(RAM)์ ์ ์ฅํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ์์ ๋์คํฌ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํด ์ด์ ์ฒด์ ๋ ์์คํ ์ฝ์ ํตํด I/O ์์ ์ ์์ฒญํฉ๋๋ค.
2. I/O ๋ฒ์ค ํต์ .
- CPU๋ I/O ๋ฒ์ค๋ฅผ ํตํด ๋์คํฌ ์ปจํธ๋กค๋ฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค.
- ์ด๋, ๋์คํฌ๊ฐ ๋ฐ์ดํฐ ์ฐ๊ธฐ ์์ฒญ์ ๋ฐ๊ฒ ๋ฉ๋๋ค.
3. ๋์คํฌ์ ๋ฐ์ดํฐ ๊ธฐ๋ก.
- HDD์ ๊ฒฝ์ฐ, ํ๋ํฐ ์์ ํน์ ์ํฐ์ ์ฝ๊ธฐ/์ฐ๊ธฐ ํค๋๋ฅผ ์ฌ์ฉํด ์์ฑ์ ๋ณํ์์ผ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
- SSD์ ๊ฒฝ์ฐ, ์ ๊ธฐ์ ํ๋ก๋ฅผ ์ด์ฉํด ํ๋์ ์
์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
- ์ด ๊ณผ์ ์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์ด๋ฃจ์ด์ง๋๋ค.
4. ๋์คํฌ ์บ์.
- ๋์คํฌ์ ์ฐ๊ธฐ ์์ ์ ์์ฒญํ ๋, ๋์คํฌ ๋ด๋ถ์๋ ์บ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์กด์ฌํด ์์ฒญ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ ๋ณด๊ดํ๊ณ , ์ค์ ๋ก ๋์คํฌ์ ๊ธฐ๋กํฉ๋๋ค.
- SSD๋ ์ด ์บ์๊ฐ HDD๋ณด๋ค ํจ์ฌ ๋น ๋ฆ ๋๋ค.
5. ๋ฐ์ดํฐ ๊ฒ์ฆ.
- ๋ฐ์ดํฐ๊ฐ ๋์คํฌ์ ๊ธฐ๋ก๋๋ฉด ๋์คํฌ ์ปจํธ๋กค๋ฌ๋ ์ ์ฅ์ด ์๋ฃ๋์์์ CPU์ ์๋ฆฝ๋๋ค.
- CPU๋ ์ด ์ ๋ณด๋ฅผ ์ด์ ์ฒด์ ์ ์ ๋ฌํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๊ณต์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์์์ ์๊ฒ ๋ฉ๋๋ค.
5๏ธโฃ ๋์คํฌ์ ์ ์ฅํ ๋ ๊ณ ๋ ค์ฌํญ.
1. ๋์์ฑ.
- ์ฌ๋ฌ ์์ฒญ์ด ๋์์ ๋ฐ์ํ ๋ ํ์ผ ์ ๊ธ(Locking) ์ด๋ ํธ๋์ญ์ ์ฒ๋ฆฌ๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ๋ฌด๊ฒฐ์ค์ ๋ณด์ฅํด์ผ ํฉ๋๋ค.
2. ์์ ์ฑ.
- ๋์คํฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ์์ค๋์ง ์๋๋ก ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํด์ผ ํ๋ฉฐ, ์ฅ์ ๋ ์ ์ ๋ฌธ์ ์ ๋๋นํด ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ ๋งค์ปค๋์ฆ์ ์ค๋นํด์ผ ํฉ๋๋ค.
3. ์๋.
- HDD๋ ๊ธฐ๊ณ์ ํน์ฑ ๋๋ฌธ์ ์ฐ๊ธฐ ์๋๊ฐ ๋๋ฆฌ์ง๋ง, SSD๋ ์ ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ์ ์ ์ฌ์ฉํ์ฌ ํจ์ฌ ๋น ๋ฅธ ์ฐ๊ธฐ ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ฑ๋ฅ์ด ์ค์ํ ์์คํ ์์๋ SSD๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค.
6๏ธโฃ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์ฉํ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์ ์ฅํ๋ ๋ฐฉ์.
- ์๋ฒ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์ ์ฅํ๋ ๊ณผ์ ์ ์ฌ๋ฌ ์ํํธ์จ์ด ๋ฐ ํ๋์จ์ด ๊ตฌ์ฑ ์์๊ฐ ํ๋ ฅํ์ฌ ์ด๋ฃจ์ด์ง๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , ์์ ์ ์ผ๋ก ๋์คํฌ์ ์ ์ฅํ ์ ์๋ ์์คํ ์ ์ ๊ณตํฉ๋๋ค.
- ์๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์ ์ฅํ๋ ๊ธฐ๋ณธ์ ์ธ ๊ณผ์ ์ ์ค๋ช ํฉ๋๋ค.
6.1 ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ดํฐ ์์ฑ.
- ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ค๊ณ ํ๋ฉด, ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ(RAM)์ ์์ฑํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ(SQL ๋ช
๋ น)๋ฅผ ์์ฑํฉ๋๋ค.
- ์ด ์ฟผ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ , ์์ , ์ญ์ ํ๋ ๋ช ๋ น์ผ ์ ์์ต๋๋ค.
6.2 ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฅ ์์ฒญ.
- ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ผ์ด๋ฒ(JDBC ๋ฑ)๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ SQL ์ฟผ๋ฆฌ๋ฅผ ์ ๋ฌํฉ๋๋ค.
- ์ด ์์ฒญ์ ์ด์ ์ฒด์ ๋ฅผ ๊ฑฐ์ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์ ๋ฌ๋ฉ๋๋ค.
6.3 ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง ์ฒ๋ฆฌ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง(DBMS)์ ์ ๋ฌ๋ ์ฟผ๋ฆฌ๋ฅผ ํด์ํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๋์คํฌ์ ์ ์ฅํ ์ง ๊ณํ์ ์ธ์๋๋ค.
- DBMS๋ ๋จผ์ ํธ๋์ญ์ ๊ด๋ฆฌ(ACID)๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ ์ฅํ ์ ์๋๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- InnoDB์ ๊ฐ์ ์คํ ๋ฆฌ์ง ์์ง์ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ์ ์ผ๋ก ๋์คํฌ์ ๊ธฐ๋กํ๊ธฐ ์ ์ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด ์์ ์ ์ค๋นํฉ๋๋ค.
6.4 ํธ๋์ญ์ ๊ณผ ๋ฐ์ดํฐ ์บ์ ์ฒ๋ฆฌ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ฅ๋๊ธฐ ์ ๊น์ง ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ์ ๋ณด๊ดํ๊ณ ํธ๋์ญ์
์ ๊ด๋ฆฌํฉ๋๋ค.
- ํธ๋์ญ์ ์ด ์ปค๋ฐ๋๋ฉด ๋ฐ์ดํฐ๋ ๋์คํฌ๋ก ๊ธฐ๋ก๋ฉ๋๋ค.
- ๋ง์ฝ ํธ๋์ญ์ ์ด ์คํจํ๊ฑฐ๋ ์ทจ์๋ ๊ฒฝ๋ฃจ, ๋ฐ์ดํฐ๋ ๋กค๋ฐฑ(rollback) ๋์ด ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์๋์ง ์๋๋ก ํฉ๋๋ค.
6.5 ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ์๋ฃ ํ์ธ.
- ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
- ๋์คํฌ์ ๋ฐ์ดํฐ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ๊ธฐ๋ก๋๋ฉด, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฑ๊ณต์ ์ผ๋ก ์ ์ฅ๋์์์ ์๋ฆฝ๋๋ค.
- ์ด๋ SQL ์ฟผ๋ฆฌ์ ๋ํ ์ฑ๊ณต ์๋ต์ผ๋ก ํ์ธ๋ฉ๋๋ค.
7๏ธโฃ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์ฉํ ๋ฐ์ดํฐ ์ ์ฅ ์ ํ๋์จ์ด์ ์ผ๋ก ์ผ์ด๋๋ ์ผ.
- ์๋ฒ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์ ์ฅํ๋ ๊ณผ์ ์ ํ๋์จ์ด์ ์ธ ์ธก๋ฉด์์ CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ, ๋คํธ์ํฌ ์นด๋๊ฐ ๋ชจ๋ ์ํธ์์ฉํ๋ฉฐ ์ด๋ฃจ์ด์ง๋๋ค.
- ์๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฅ ์ ํ๋์จ์ด์ ์ผ๋ก ์ผ์ด๋๋ ๊ณผ์ ์ ๋๋ค.
1. CPU์ ๋ฉ๋ชจ๋ฆฌ ์ํธ์์ฉ.
- ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฟผ๋ฆฌ๋ฅผ ์ ๋ฌํ๋ฉด, CPU๋ ์ด๋ฅผ ์ฒ๋ฆฌํ๊ณ SQL ๋ช ๋ น์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ก ์ ๋ฌํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์์ CPU๋ ์ฟผ๋ฆฌ๋ฅผ ํด์ํ๊ณ , ๋ฉ๋ชจ๋ฆฌ(RAM)์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ํธ๋์ญ์ ๋ฒํผ์ ๋ฉ๋ชจ๋ฆฌ ์บ์๋ก ๊ด๋ฆฌํฉ๋๋ค.
2. I/O ๋ฒ์ค ํต์ .
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ๋ก ๊ธฐ๋กํ๊ธฐ ์ํด CPU๋ I/O ๋ฒ์ค๋ฅผ ํตํด ๋์คํฌ ์ปจํธ๋กค๋ฌ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค.
- ์ด๋ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ๋์คํฌ์ ๊ธฐ๋ก๋ ์ค๋น๋ฅผ ๋ง์นฉ๋๋ค.
3. ๋์คํฌ์ ๋ฐ์ดํฐ ๊ธฐ๋ก.
- HDD์ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์คํ ๋ฆฌ์ง ์์ง์ ํ๋ํฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๊ธฐ ์ํด ๋์คํฌ ์ปจํธ๋กค๋ฌ๊ฐ ์ฐ๊ธฐ ์์ ์ ์ง์ํฉ๋๋ค.
- SSD์ ๊ฒฝ์ฐ, ํ๋์ ๋ฉ๋ชจ๋ฆฌ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๋ฉฐ, ์ด ๊ณผ์ ์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์ด๋ฃจ์ด์ง๋๋ค.
4. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์บ์.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ์์ฃผ ์ ๊ทผํ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ํฉ๋๋ค.
- ๋์คํฌ์ ๊ธฐ๋ก๋ ๋ฐ์ดํฐ๋ ์บ์์ ๋ณด๊ด๋์ด ๋น ๋ฅธ ์ฝ๊ธฐ ์์ ์ ์ง์ํ๋ฉฐ, ์ฐ๊ธฐ ์์ ์ ์ผ๊ด์ ์ผ๋ก ์ฒ๋ฆฌ๋ ์ ์์ต๋๋ค.
5. ๋ฐ์ดํฐ ๊ฒ์ฆ.
- ๋ฐ์ดํฐ๊ฐ ๋์คํฌ์ ๊ธฐ๋ก๋ ํ, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํธ๋์ญ์
์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์์ CPU์ ์๋ฆฝ๋๋ค.
- CPU๋ ์ด๋ฅผ ์ด์ ์ฒด์ ์ ์ ๋ฌํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๊ณต์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์์์ ์๋ต๋ฐ์ต๋๋ค.
8๏ธโฃ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ๊ณ ๋ ค์ฌํญ.
1. ๋์์ฑ ์ ์ด.
- ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฝํน(Locking) ๋๋ ํธ๋์ญ์ (Transaction) ๊ฒฉ๋ฆฌ ์์ค์ ํตํด ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ๋์์ฑ ์ ์ด๋ ๋ฐ์ดํฐ๊ฐ ์์๋๊ฑฐ๋ ์ถฉ๋ํ์ง ์๋๋ก ํ๋ ์ค์ํ ๋ฉ์ปค๋์ฆ์ ๋๋ค.
2. ํธ๋์ญ์ ๊ด๋ฆฌ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ACID(์์์ฑ, ์ผ๊ด์ฑ, ๊ณ ๋ฆฝ์ฑ, ์ง์์ฑ) ์์ฑ์ ํตํด ๋ฐ์ดํฐ๊ฐ ์์ ํ๊ฒ ์ฒ๋ฆฌ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ํธ๋์ญ์ ์ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ผ๋ จ์ ์์ ์ด ๋ชจ๋ ์ฑ๊ณตํ๊ฑฐ๋, ์คํจํ๋ฉด ๋ชจ๋ ๋กค๋ฐฑ๋๋๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
3. ์ฑ๋ฅ ์ต์ ํ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ์ ์ธ๋ฑ์ค, ์ฟผ๋ฆฌ ์ต์ ํ, ์บ์ ํ์ฉ ๋ฑ์ ํตํด ์ต์ ํ๋ฉ๋๋ค.
- ๋ํ, ๋์คํฌ ์ฑ๋ฅ(์: SSD)์ด ์ค์ํ ์ญํ ์ ํ๋ฉฐ, ์ฝ๊ธฐ/์ฐ๊ธฐ ์์ ์ด ๋ง์ ์์คํ ์์๋ SSD๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ์ ๋ฆฌํฉ๋๋ค.
4. ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ์ค์ํ ์์ฐ์ด๋ฏ๋ก, ์ ๊ธฐ์ ์ธ ๋ฐฑ์ ์ด ํ์ํฉ๋๋ค.
- ์ฅ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐฑ์ ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ณต๊ตฌํ ์ ์์ด์ผ ํ๋ฉฐ, ์ด๋ฅผ ์ํด ๋ก๊ทธ ํ์ผ ๋ฐ ์ค๋ ์ท ๋ฑ์ ๊ธฐ๋ฅ์ด ์ง์๋ฉ๋๋ค.
5. ๋ณด์ ๋ฐ ์ ๊ทผ ์ ์ด.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ถํ ๊ด๋ฆฌ์ ์ ๊ทผ ์ ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํฉ๋๋ค.
- ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ ์ํธํ๋์ด ์ ์ฅ๋ ์ ์์ผ๋ฉฐ, ํ๊ฐ๋์ง ์์ ์ฌ์ฉ์๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋๋ก ๋ณด์์ด ๊ฐํ๋ฉ๋๋ค.