Today I Learned

[아티클 DB] Things I Wished More Developers Knew About Databases

아이리스 Iris 2023. 2. 13. 19:57

https://medium.com/@rakyll/things-i-wished-more-developers-knew-about-databases-2d0178464f78

 

Things I Wished More Developers Knew About Databases

A large majority of computer systems have some state and are likely to depend on a storage system. My knowledge on databases accumulated…

rakyll.medium.com


  • 99.999%의 time network가 문제가 되지 않는다면 당신은 운이 좋은 것이다. (?)
  • ACID는 많은 의미를 가지고 있다.
    • ACID
      • Atomicity(원자성)
      • Consistency(일관성)
      • Isolation(독립성)
      • Durability(지속성)
  • 데이터베이스마다 일관성(Consistency)과 독립성(Isolation)의 성능이 다르다.
  • 낙관적 잠금(Optimistic locking)은 잠금을 유지할 수 없을 때 선택할 수 있는 옵션이다.
💡 낙관적 잠금: 동시에 동일한 데이터에 대한 여러 업데이트가 서로 간섭하지 않도록 방지하는 version 이라는 속성을 확인하여 Entity의 변경사항을 감지하는 메커니즘
  • Dirty read와 데이터 손실 외에도 이상 현상들이 있다.
  • 나의 데이터베이스와 나는 항상 정렬에 동의하지 않는다. (?)
  • Application-level sharding은 어플리케이션 외부에 있을 수 있다.
  • AUTOINCREMENT 설정은 위험할 수 있다.
  • Stale data는 유용하고 잠금이 필요하지 않다.
  • 클럭 소스마다 클럭 스큐가 발생한다.
  • 대기 시간에는 여러 가지 의미가 있다.
  • 각 트랜잭션마다 성능 평가가 필요하다.
  • 중첩된 트랜잭션은 위험할 수 있다.
  • 트랜잭션이 활성 상태를 유지하면 안 된다.
  • 쿼리를 설계하는 사람들은 데이터베이스에 대해 많은 것을 알려줄 수 있다.
  • 온라인 마이그레이션은 복잡하지만 가능하다.
  • 급격한 데이터베이스의 증가는 예측 불가능성을 초래한다.

데이터베이스 관련 용어들도 잘 모르는 상태에서 영문 아티클을 읽으니 더 헷갈렸다.
그래도 정처기 공부하며 봤던 단어(ex. ACID, 트랜잭션 등)들이 많아서 교재 참고해서 복습해야겠다고 생각했다.
이론으로는 대강 알고 있는 지식들이 실무에서는 어떤 상황에 적용되는지 알아보며 학습해야겠다.

 

🤔 DB 관련 개념 숙지