NoSQL 데이터베이스에 데이터 저장
데이터는 잘 구조화된 관계형 데이터의 형태만 취하는 것이 아닙니다. 때로는 테이블에 깔끔하게 들어맞지 않는 데이터를 저장해야 할 때가 있습니다. 예를 들어, 각각 다른 스키마를 가진 항목 목록이 포함된 문서를 저장하고 싶을 수 있습니다. 이 경우 NoSQL 데이터베이스는 관계형 데이터베이스보다 더 나은 선택입니다. 가장 인기 있는 NoSQL 데이터베이스 중 하나는 MongoDB입니다.
.NET Aspire MongoDB 구성 요소 사용
이전과 동일한 패턴이 MongoDB에 적용됩니다. 앱 호스트와 각 사용 중인 프로젝트를 모두 구성해야 합니다.
앱 호스트 구성
MongoDB 호스팅 구성 요소를 설치합니다.
dotnet add package Aspire.Hosting.MongoDB --prerelease
그런 다음, 앱 호스트의 Program.cs 파일에서 이 코드를 추가하여 컨테이너를 등록하고 데이터베이스를 만듭니다.
var mongo = builder.AddMongoDB("mongo");
var mongodb = mongo.AddDatabase("mongodb");
데이터베이스 서비스를 사용하는 모든 프로젝트에 전달합니다.
var northernTradersCatalogAPI = builder.AddProject<Projects.NorthernTraders_CatalogAPI>()
.WithReference(mongodb);
소비 프로젝트 구성
데이터베이스를 사용하는 모든 마이크로 서비스 프로젝트에 .NET Aspire MongoDB 구성 요소를 추가해야 합니다. .NET CLI 또는 Visual Studio NuGet 패키지 관리자를 사용하여 데이터 액세스가 필요한 프로젝트에 Aspire.MongoDB.Driver
NuGet 패키지를 추가합니다.
dotnet add package Aspire.MongoDB.Driver --prerelease
AppHost Program.cs 파일에서 MongoDB 드라이버를 등록합니다. 예를 들어 코드는 다음과 같이 표시될 수 있습니다.
var mongoDB = builder.AddMongoDB("mongo")
.WithMongoExpress()
.AddDatabase("BasketDB");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(mongoDB);
PostgeSQL 및 MySQL과 같은 MongoDB 구성 요소는 Mongo Express라는 데이터베이스 관리 도구를 제공합니다. 위의 코드는 컨테이너를 추가합니다.
MongoDB 데이터베이스 사용
MongoDB 데이터베이스에 액세스해야 하는 솔루션의 모든 프로젝트는 MongoDB 클라이언트를 추가해야 합니다. 그런 다음 MongoDB 클라이언트를 사용하여 데이터베이스에 데이터를 읽고 씁니다.
builder.AddMongoDBClient("BasketDB");
AddMongoDBClient
메서드는 프로젝트에 클라이언트를 추가합니다. 이를 사용하는 예제 코드를 참조하세요.
using MongoDB.Driver;
using MongoDB.Driver.Linq;
public class MongoBasketStore
{
public async Task<CustomerBasket?> GetBasketAsync(IMongoClient mongoClient, string customerId)
{
var basketCollection = mongoClient.GetDatabase("BasketDB").GetCollection<CustomerBasket>("basketitems");
var filter = Builders<CustomerBasket>.Filter.Eq(r => r.BuyerId, customerId);
return await basketCollection.Find(filter).FirstOrDefaultAsync();
}
}
위의 코드는 메서드가 일치하는 BuyerId
이(가) 있는 개체를 찾기 위해 모든 CustomerBasket
개체를 쿼리할 수 있도록 하는 MongoDB 컬렉션을 만듭니다.
MongoDB 구성 요소 구성
이전 데이터베이스 구성 요소와 마찬가지로 MongoDB 구성 요소는 .NET Aspire의 서비스 검색 및 종속성 주입을 지원합니다. 따라서 AppHost
및 프로젝트에 정의된 동일한 데이터베이스 이름을 사용하는 경우 연결 문자열을 관리할 필요가 없습니다. 그러나 .NET Aspire에서 관리되지 않는 기존 MongoDB 데이터베이스를 이미 사용 중인 경우 다른 방법으로 구성할 수 있습니다.
연결 문자열 사용
프로젝트 appsettings.json 파일에서 MongoDB 데이터베이스에 연결 문자열을 추가합니다. 예시:
{
...
"ConnectionStrings": {
"MongoConnectionString": "mongodb://localhost:27017/test",
}
}
이전 연결 문자열은 포트 27017에서 수신 대기하는 로컬 MongoDB 데이터베이스 서버에서 테스트 데이터베이스에 대한 지원을 추가합니다. MongoDB 클라이언트를 만들 때 Program.cs 파일에서 이 연결 문자열을 사용합니다.
builder.AddMongoDBClient("MongoConnectionString");
기타 옵션
Microsoft.Extensions.Configuration
버전의 MongoDB에 대한 태그는 Aspire:MongoDB:Driver
입니다. 따라서 다음 JSON 구성을 사용하여 MongoDB 데이터베이스에 연결할 수 있습니다.
{
"Aspire": {
"MongoDB": {
"Driver": {
"ConnectionString": "mongodb://localhost:27017/test",
"HealthChecks": true,
"HealthCheckTimeout": 10000,
"Tracing": true
},
}
}
}
이전 구성에서는 더 이상 연결 문자열을 추가할 필요가 없으며 builder.AddMongoDBClient();
을(를) 사용합니다.
마지막 옵션은 인라인 구성을 사용하여 코드에서 연결을 구성하는 것입니다. 예시:
builder.AddMongoDBClient("mongodb", static settings =>
{
settings.ConnectionString = "mongodb://localhost:27017/test";
settings.HealthChecks = true;
});