MongoDB를 C#에서 CRUD 형태로 조작해보는 간단한 샘플 예제이다. Visual Studio 2019에서 .NET Core 콘솔 프로젝트를 생성하고 Nuget에서 MongoDB.Driver 패키지를 추가한다. 대상 프레임워크는 3.1이며 Visual Studio 버전은 16.5.3이다.
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
namespace ConsoleMongo
{
//[BsonIgnoreExtraElements]
public class BoardModel
{
[BsonId]
// [BsonIgnoreIfDefault]
[BsonElement("_id")]
public ObjectId ID { get; set; }
public string UserID { get; set; }
public string UserName { get; set; }
//[BsonElement("userkind")]
public string UserKind { get; set; }
public AddressModel Address { get; set; }
}
public class AddressModel
{
public string StreetAddress { get; set; }
public string ZipCode { get; set; }
}
}
AMM(Auto Memory Management)이란 오라클에서 인스턴스 메모리를 관리하는 가장 간단한 방법이다. 오라클에는 PGA(System Global Area), SGA(Program Global Area) 불리는 메모리 영역이 존재한다. 11g 이상에서 도입한 AMM 관리 기법은 SGA+PGA를 자동으로 관리하는 방식이다. 이때 전체 메모리를 설정하는 memory_max_target, memroy_target 파라미터를 설정해 주어야 하는 데 리눅스 운영체제의 /dev/shm 크기가 최대치가 된다. 리눅스는 기본적으로 전체 메모리의 50%를 ‘/dev/shm’에 할당하는 데 필요한 경우 이 영역을 변경하고 오라클 파라미터를 설정해야 오류가 나지 않는다. CentOS 8, Database 설치 글을 참고하여 필요한 만큼 설정(fstab, size)한다.
AMM 기능을 사용하면 SGA_TARGET, PGA_AGGREGATE_TARGET의 값을 0으로 지정하는 것이 좋다. 0이 아닌 경우 그 값을 최솟값으로 인식하기 때문이다.
su - oracle
sqlplus /nolog
SQL> conn / as sysdba
SQL> show parameter target
# 현재 설정되어 있는 memory_max_target, memory_target,
# pga_aggregate_target, sga_target 값을 확인한다.
빅데이터, IoT, 인공지능과 같은 용어를 요즘은 주변에서 쉽게 볼 수 있다. 데이터베이스 분야도 전통적인 RDBMS뿐만 아니라 NoSQL, 메모리 데이터베이스, 시계열 데이터베이스 또한 관심 분야로 떠오르고 있다. 이제는 단순한 개념적 학습이 아닌 실무에서 방대한 데이터 처리를 실시간으로 처리해야 하는 상황에 직면한 것이다. 참고로 국산 시계열 데이터베이스인 마크베이스(MACHBASE)를 살펴볼 필요가 있는데 초당 104만 건 정도의 데이터를 처리할 수 있다고 한다.
In-Memory OLTP는 SQL Server에서 트랜잭션 처리, 데이터 로드 및 일시적인 데이터 시나리오의 성능 최적화하기 위해 사용할 수 있는 뛰어난 기술이다(In-Memory OLTP is the premier technology available in SQL Server and SQL Database for optimizing performance of transaction processing, data ingestion, data load, and transient data scenarios). 전통 방식인 디스크 테이블보다 실제로 5~30배의 성능 향상이 있다고 한다.
아래의 글은 Channel9에서 동영상 강좌로 소개한 SQL Server 2016 In-Memory OLTP를 정리한 것이다. 여기에 필요한 몇 가지 관련 내용을 추가하였다.