이번에 진행하는 프로젝트가 처음엔 C#에서 SQLite를 채택을 했었습니다.
물론 파일기반 DB라서 제약사항은 많지만,
사용에 있어서는 다른 DB와 큰 차이는 없는데다가 이전에도 많이 사용해왔던 DB이기에
DB 자체에 대한 불평은 없습니다.
그런데 나름 C#이라고 MS가 만든 신박한 EntityFramework라는 ORM이 버텨주고 계시니
수고를 덜기위해 적극적으로 활용하면 좋겠다는 생각이 들은 바
구글링을 통해 여러가지 사용 방법들을 적용시켜 보았지만, 결국 엔티티 프레임워크에 SQLite를 인식시키는데 실패하였습니다.
실제 코딩하기도 바쁜데 SQLite를 프레임워크에 인식시켜야 한다는 그 생각만으로 5일을 훌러덩 날려버렸더군요.
다행히 ConnectionString을 이용한 코드 내부에서의 접속은 잘 되기때문에
결국 직접 Model 생성하고 컨트롤러 부분도 직접 쿼리 문을 작성하여 진행하긴 했는데
늘 하던 짓 반복하는 것 뿐임에도 개발하는 사람 입장에서 ORM의 달콤함도 나름 알고있어서
프레임워크에 SQLite 인식 못시킨게 너무 답답하더군요.
아예 ORM에 열광할 필요없는 NoSQL 계열 DB로 전환을 할까 생각하다가
업무요건 자체가 여러 사람이 보아도 RDBMS의 사용이 적합한 요건이였기에
미처 컨트롤러를 작성하지 못한 부분에 대해선 데이터 보조를 위해 잠시 NoSQL을 사용했습니다.
그러면서도 결국 이유를 못찾고있다가 오픈소스 관계형 데이터베이스 시장에서 2인자라고 불리는 PostgreSQL로
SQLite 데이터를 이관시켜 프레임워크에 인식시키자라는 생각을 했습니다.
많이 오르내리는 DBMS인 만큼 EntityFramework에 인식시키는데에도 무리가 없을 것이라고 생각했는데
기대는 절망으로 바뀌더군요.
비주얼 스튜디오 닷넷 개발에서의 EDM을 MS-SQL이 아닌 다른 DB에서 사용해보겠다고 이 난리를 떠는건데도
상용의 공개버전으로 나온 Provider는 아예 돈주고 안사면 EDM은 없을거라고 하질 않나
오픈소스 Provider는 단순히 프로바이더 설치만을 강조하다가 한참을 찾은 뒤에야
겨우 VS의 DB 접속 리스트에 올릴 방법을 찾았는데도 현재 해결되지 않고있다는 버그로 인해 연결은 되었으나 사용은 실패...
(해당 프로젝트의 깃허브 페이지에서 아예 해결중인 버그로 올라와 있더군요.)
* EDM: 엔티티 프레임워크의 모델 생성 기능
그렇다고 이런 고생없이 확실하게 지원될 것이 뻔한 MS-SQL이나 Oracle DB를 쓸 수 있는 상황도 아닌데
단념하고 상당히 친숙한 MariaDB(MySQL)을 써볼까 해서 설치하고 VS를 위한 셋팅도 해보았습니다.
이것 역시 Provider(Connector) 설치와 별도로 VS 설정을 위한 내용은 따로 설치를 해줘야 했지만 순조롭게 흘러가더군요.
이후 Nuget으로 필요한 Data 패키지 설치도 마치고 확인을 해보는데
맙소사.... 다른 DB 사용하여 근 한달은 고민하며 끙끙 앓았던 문제를 1시간 안에 다 해결해 주시더군요.
다른 DB를 어떻게든 EntityFramework에 연결시켜 보겠다는 집념과 노력과정이 다 허무해질 정도로요.....
한편으로는, SQLite나 PostgreSQL이나 최근 들어서는 절대 마이너한 DB가 아니라는 생각이 드는데
MS에서 제공하는 ORM 하나 연결하는데도 왜이리 애를 먹게 되는지 한편으로는 이해가 안되더군요.
실력 부족이라고 말할 수도 있겠지만, 그래도 C# 프로젝트에서 주력 DB로 채택될만한 적절한 연동난이도가 있는거지...
단순히 DBMS 선택에 따라 연동과정을 최소 한시간만에 해결하거나 최대 며칠이 걸려도 포기하기 되는 차이는
너무 수용할 수 있는 범위를 벗어나 있는 것 같더군요.
웹에서는 MySQL 많이 해봤으니까 데스크탑용 어플리케이션임에도 다른 DB 기반으로 가보겠다고 하다가
개발일정만 지연됬다고 욕 엄청 먹고 몸사리고 있게 되었네요....