[EF Core] ASP.NET Core 프로젝트에서 Maria DB 사용

2020. 4. 21. 09:44Database

이 포스트는 ASP.NET Core 3.0 프로젝트에서 EF Core를 사용하여 Maria DB와 연동하는 방법에 대해 소개합니다.

참고: Maria DB란?
MySQL은 오라클에 인수된 후 상업적인 이용에 대해서는 유료로 제공되고 있습니다. MySQL의 핵심 개발자였던 마이클 몬티 와이드니어스(Michael Monty Widenius)는 이에 반발하여 기존 MySQL 소스를 기반으로 Maria DB를 개발하여 오픈소스(GPL v2)로 제공하고 있습니다. Maria DB는 MySQL과 동일한 소스코드를 바탕으로 하므로 구조나 사용방법, API들이 상당 부분 호환됩니다.

MySQL이나 MariaDB는 과거와 다르게 상당부분 안정성이 검증된 상태이며 삼성, CGV, 카카오 등 수많은 기업들에 의해 사용되고 있습니다. 특히 카카오뱅크에서는 오라클이 아닌 MySQL을 사용하여 금융 서비스를 제공할 만큼 엔터프라이즈 환경에서도 널리 오픈소스 DB가 사용되고 있습니다.

Maria DB 설치

  1. Maria DB 공식 사이트 https://downloads.mariadb.org/에서 Maria DB를 다운로드합니다. 여기에서는 MariaDB 10.4.12 (x64) 버전을 다운로드 하였습니다.
  2. 설치는 간단하게 진행할 수 있습니다. root 계정 비밀번호를 입력하고, 원격접속을 활성화하지 선택해주세요.
    Maria DB 설치화면
  3. 추가적으로 포트나 서비스명을 설정할 수 있는데, 대게는 기본설정 그대로 사용합니다.
    포트 설정화면

DB 관리도구 설치

Maria DB는 MySQL과 호환되기 때문에 여러 오픈소스 관리도구를 지원합니다. 토드 등 유명 DB관리도구가 많지만 여기에서는 DBeaver를 소개합니다. 무료로 사용가능하고, ER 다이어그램 등 개발에 필요한 대부분의 기능을 제공합니다.

  1. 공식 사이트 https://dbeaver.io/download/에 접속하여 설치파일을 다운로드하여 설치합니다. 무료로 사용가능한 Community Edition을 설치하였습니다.
  2. 설치가 완료되면 Maria DB를 선택하여 DB에 연결할 수 있습니다.
    Maria DB 연결 선택

ASP.NET Core프로젝트 설정

  1. 설치가 완료되면 ASP.NET Core 프로젝트에 Maria DB 연결을 위한 DB프로바이더를 설치해야 합니다. MS에서 공식적으로 제공하지 않기 때문에 Pomelo 재단에서 제공 중인 DB프로바이더를 사용해야 합니다. NuGet Package Manager를 열고 Pomelo.EntityFrameworkCore.MySql 패키지를 검색하여 설치합시다.
    NuGt Package Manager에서 DB 프로바이더 설치
  2. 이제 Startup.cs 파일을 열고 ConfigureServices에 아래와 같이 MySql 서비스를 추가합니다.
    public void ConfigureServices(IServiceCollection services)
    {
        //Maria DB 서비스 추가
        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseMySql(Configuration.GetConnectionString("DefaultConnection")
            mySqlOptionsAction: sqlOptions =>
            {
                //DB 연결에 실패할 경우 재시도 설정
                sqlOptions.EnableRetryOnFailure(
                    maxRetryCount: 5,
                    maxRetryDelay: TimeSpan.FromSeconds(30),
                    errorNumbersToAdd: null);
            }));
    
        ...
    }
    
  3. Connection String은 아래와 같은 패턴으로 생성합니다.
    {
      "ConnectionStrings": {
        "DefaultConnection": "server=localhost;port=3306;database=DbName;uid=root;password=비밀번호"
      },
      ...
    }
    
  4. EF Core에서 Model의 생성과 사용은 동일합니다.
    ASP.NET Core 프로젝트 구조

'Database' 카테고리의 다른 글

[EntityFramework.Core] Migration 오류 대응  (0) 2020.03.19
[DB] MS SQL - XML 데이터 조회하기  (0) 2016.05.14
ASP.NET 2.0 DB  (0) 2016.04.23
[DB] MS SQL 대용량 SQL파일 실행  (0) 2015.08.25
[DB] c#으로 SQLite 연결하기  (0) 2015.07.25