전체 글
-
[MySQL] ST_Distance_Sphere 함수Database/데이터베이스 2024. 11. 11. 02:41
ST_Distance_Sphere 함수란?MySQL의 ST_Distance_Sphere 함수는 두 지점 간의 대권 거리(Greate Circle Distance) 를 계산하는데 사용됩니다.이 함수는 지구를 완벽한 구(sphere)로 간주하고 두 지점의 위도와 경도를 기반으로 두 지점 사이의 거리를 미터(meter) 단위로 반환합니다.함수 정의ST_Distance_Sphere(point1, point2)point1: 첫번째 지점의 위치(Point 객체, 위도와 경도를 포함)point2: 두번째 지점의 위치(Point 객체)반환 값: 두 지점 간의 거리 (미터 단위)특징구형 지구 모델: ST_Distance_Sphere는 지구를 구(sphere)로 가정하고 계산하기 때문에 지표면의 실제 곡률을 반영하지 않음..
-
[Real MySQL] 4장 아키텍처독서노트/Real MySQL 8.0 2024. 11. 9. 02:12
MySQL 엔진 아키텍처MySQL 서버는 사람의 머리 역할을 담당하는 MySQL 엔진과 손발 역할을 담당하는 스토리지 엔진으로 구분MySQL 서버는 크게 MySQL 엔진과 스토리지 엔진으로 구분그리고 이 둘을 모두 합쳐서 MySQL 또는 MySQL 서버라고 표현MySQL 엔진클라이언트로부터의 접속 및 쿼리 요청을 처리하는 커넥션 핸들러, SQL 파서, 전처리기, 쿼리의 최적화된 실행을 위한 옵티마이저가 중심MySQL은 표준 SQL(ANSI SQL) 문법을 지원하기 때문에 표준 문법에 따라 작성된 쿼리는 타 DBMS와 호환되어 실행 가능스토리지 엔진MySQL 엔진: 요청된 SQL 문장을 분석하거나 최적화하는 등 DBMS의 두뇌에 해당하는 처리를 수행스토리지 엔진: 실제 데이터를 디스크 스토리지에 저장하거나..
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초독서노트/가상 면접 사례로 배우는 대규모 시스템 설계 기초 (1,2) 2024. 11. 4. 20:21
1장사용자 수에 따른 규모 확장성수백만 사용자를 지원하는 시스템을 설계하는 것은 도전적인 과제이며, 지속적인 개량과 끝없는 개선이 요구되는 여정단일 서버웹 앱, 데이터베이스, 캐시 등이 전부 서버 한 대에서 실행되는 시스템사용자의 요청이 처리되는 과정사용자는 도메인 이름(api.mysite.com)을 이용하여 웹사이트에 접속한다. 이 접속을 위해서는 도메인 이름을 도메인 이름 서비스(DNS)에 질의하여 IP주소로 변환하는 과정이 필요하다. DNS는 보통 제3 사업자 (third party)가 제공하는 유료 서비스를 이용하게 되므로, 우리 시스템의 일부는 아니다.DNS 조회 결과로 IP주소가 반환된다.해당 IP주소로 HTTP(HyperText Transfer Protocol) 요청이 전달된다.요청을 받은 ..
-
[MySQL] 스토어드 프로시저(Stored Procedure)Database/데이터베이스 2024. 8. 28. 21:43
개요평소 SQL문을 사용할 때 쿼리문을 자주 사용하는데 특정한 경우 프로시저를 사용하면 편리성 면에서 효과가 있음MySQL 프로시저(Procedure)는 저장된 프로시저로도 알려져 있으며, 서버에 저장된 하나 이상의 SQL 문장의 집합프로시저는 여러 SQL문을 모아서 재사용할 수 있는 방법을 제공하며 데이터베이스 작업의 자동화, 코드 재사용성 향상, 그리고 복잡한 로직을 캡슐화하는데 유용함프로시저의 주요 특징1.입력 및 출력 매개변수 지원프로시저는 'IN', 'OUT', 'INOUT' 매개변수를 사용할 수 있음IN: 호출할 때 전달되는 입력 매개변수OUT: 프로시저가 반환하는 출려 ㄱ매개변수INOUT: 입력과 출력을 모두 담당하는 매개변수2. SQL 문장의 집합여러 SQL 문을 포함할 수 있으며, 복잡한..
-
[Spring] The best way to use the Spring Transactional annotationProgramming Language/Spring 2023. 8. 12. 23:40
안녕하세요. 이번 포스팅에서는 스프링의 @Transactional 애노테이션의 적절한 사용 방법에 대해 좋은 글이 있어서 해당 글을 번역하고 추가적인 설명을 작성해보았습니다. 해당 포스팅에서 참조한 원문은 여기를 참조하실 수 있습니다. 우선 Spring에서 사용하는 @Transaction 에 대해 알아보겠습니다. @Transactional @Transactional은 스프링에서 제공하는 애노테이션으로, 트랜잭션 경계를 정의하는데 사용됩니다. 트랜잭션은 여러 데이터베이스 연산을 한 단위로 묶어, 모든 연산이 성공적으로 완료되거나 아무것도 실행되지 않도록 하는 것 (All or Nothing)을 의미합니다. 스프링은 1.0 버전부터 개발자가 트랜잭션 경계를 선언적으로 정의할 수 있도록 AOP 기반의 트랜잭션..
-
[Spring In Action] 14. 클라우드 구성 관리Programming Language/Spring 2023. 8. 6. 04:22
요약 스프링 클라우드 구성 서버는 중앙 집중화된 구성 데이터 소스를 마이크로서비스 기반의 더 큰 애플리케이션을 구성하는 모든 마이크로서비스에 제공한다. 구성 서버가 제공하는 속성들은 백엔드 Git이나 Vault 리퍼지터리에서 유지, 관리된다. 모든 구성 서버 클라이언트에 제공되는 전역적인 속성들에 추가하여 구성 서버는 프로파일에 특정된 속성과 애플리케이션에 특정된 속성도 제공할 수 있다. 보안에 민감한 속성들은 백엔드 Git 리퍼지터리에 암호화하여 저장하거나 Vault 백엔드의 보안 속성으로 저장하여 보안을 유지할 수 있다. 구성 서버 클라이언트는 새로운 속성으로 리프레시할 수 있다. 이때 액추에이터 엔드포인트를 통해 수동으로 리프레시하거나, 스프링 클라우드 버스와 Git 웹훅을 사용해서 자동으로 리프레..
-
[Spring In Action] 12. 리액티브 데이터 퍼시스턴스Programming Language/Spring 2023. 6. 5. 21:54
요약 스프링 데이터는 카산드라, 몽고DB, 카우치베이스, 레디스 데이터베이스의 리액티브 리퍼지터리를 지원한다. 스프링 데이터의 리액티브 리퍼지터리는 리액티브가 아닌 리퍼지터리와 동일한 프로그래밍 모델을 따른다. 단, Flux나 Mono와 같은 리액티브 타입을 사용한다. JPA 리퍼지터리와 같은 리액티브가 아닌 리퍼지터리는 Mono나 Flux를 사용하도록 조정할 수 있다. 그러나 데이터를 가져오거나 저장할 때 여전히 블로킹이 생긴다. 관계형이 아닌 데이터베이스를 사용하려면 해당 데이터베이스에서 데이터를 저장하는 방법에 맞게 데이터를 모델링하는 방법을 알아야 한다.
-
대용량 처리를 위한 MySQL 이해Programming Language/Spring 2023. 5. 25. 02:03
대용량 서버를 구축하기 위해서는 어떤 것들을 알아야할까 Spring, MySQL, MongoDB, Redis, Kafka, MSA, ... 서버 개발자의 핵심은 데이터다. 대용량 시스템이 어려운 이유는 결국 많은 양의 데이터에서 시작된다. 어떻게 많은 양의 데이터를 안정적으로 삽입, 갱신, 조회할 것이냐? 정규화, 인덱스, 트랜잭션, 동시성 제어 웹의 기본 아키텍처 클라이언트 서버 데이터베이스 웹의 요구 사항이 점점 복잡해짐 클라이언트 웹 서버 웹 애플리케이션 서버 데이터베이스 웹 서버, 웹 애플리케이션 서버는 왜 나누어져 있을까? 태초에는 웹 서버만 있는 형태에서 웹의 복잡도가 증가함에 따라... 관심사의 분리 / 관측 가능한 시스템 / 효율적인 리소스 사용 대용량 시스템의 모습 왜 데이터베이스가 병목..