228.6. MongoDB 작업 - 생산자 끝점


228.6.1. 쿼리 작업

228.6.1.1. findById

이 작업은 _id 필드가 IN 메시지 본문의 콘텐츠와 일치하는 컬렉션에서 하나의 요소만 검색합니다. 들어오는 오브젝트는 BSON 유형과 동일한 모든 개체가 될 수 있습니다. http://bsonspec.org//specification[http://bsonspec.org//specification] 및 http://www.mongodb.org/display/DOCS/Java+Types 를 참조하십시오.

from("direct:findById")
    .to("mongodb:myDb?database=flights&collection=tickets&operation=findById")
    .to("mock:resultFindById");
작은 정보

선택적 매개변수를 지원합니다. 이 작업은 필드 필터를 지정할 수 있습니다. 선택적 매개변수 지정을 참조하십시오.

228.6.1.2. findOneByQuery

MongoDB 쿼리와 일치하는 컬렉션에서 하나의 요소만 검색하려면 이 작업을 사용합니다. 쿼리 오브젝트는 IN 메시지 본문에서 추출됩니다. 즉 DBObject 형식이거나 DBObject 로 변환할 수 있어야 합니다. JSON 문자열 또는 Hashmap일 수 있습니다. 자세한 내용은 #Type Conversion 을 참조하십시오.

쿼리가 없는 예제(컬렉션의 모든 오브젝트 반환):

from("direct:findOneByQuery")
    .to("mongodb:myDb?database=flights&collection=tickets&operation=findOneByQuery")
    .to("mock:resultFindOneByQuery");

쿼리의 예(한 가지 일치 결과 반환):

from("direct:findOneByQuery")
    .setBody().constant("{ \"name\": \"Raul Kripalani\" }")
    .to("mongodb:myDb?database=flights&collection=tickets&operation=findOneByQuery")
    .to("mock:resultFindOneByQuery");
작은 정보

선택적 매개변수를 지원합니다. 이 작업은 필드 필터 및/또는 정렬 절을 지정할 수 있습니다. 선택적 매개변수 지정을 참조하십시오.

228.6.1.3. findAll

findAll 작업은 쿼리와 일치하는 모든 문서를 반환하거나 컬렉션에 포함된 모든 문서가 반환됩니다. 쿼리 오브젝트는 IN 메시지 본문에서 추출됩니다. 즉 DBObject 형식이거나 DBObject 로 변환할 수 있어야 합니다. JSON 문자열 또는 Hashmap일 수 있습니다. 자세한 내용은 #Type Conversion 을 참조하십시오.

쿼리가 없는 예(컬렉션의 모든 오브젝트 반환):

from("direct:findAll")
    .to("mongodb:myDb?database=flights&collection=tickets&operation=findAll")
    .to("mock:resultFindAll");

쿼리가 있는 예: 일치하는 모든 결과를 반환합니다.

from("direct:findAll")
    .setBody().constant("{ \"name\": \"Raul Kripalani\" }")
    .to("mongodb:myDb?database=flights&collection=tickets&operation=findAll")
    .to("mock:resultFindAll");

페이징 및 효율적인 검색은 다음 헤더를 통해 지원됩니다.

Expand
헤더 키빠른 상수설명 (Mongo API doc에서 추가됨)예상 유형

CamelMongoDbNumToSkip

MongoDbConstants.NUM_TO_SKIP

커서가 시작될 때 지정된 수의 요소를 삭제합니다.

int/Integer

CamelMongoDbLimit

MongoDbConstants.LIMIT

반환된 요소 수를 제한합니다.

int/Integer

CamelMongoDbBatchSize

MongoDbConstants.BATCH_SIZE

하나의 일괄 처리로 반환되는 요소 수를 제한합니다. 일반적으로 커서는 결과 오브젝트의 배치를 가져와서 로컬에 저장합니다. batchSize가 양수이면 검색된 오브젝트의 각 배치의 크기를 나타냅니다. 성능을 최적화하고 데이터 전송을 제한하도록 조정할 수 있습니다. batchSize가 음수이면 반환된 수 개체가 제한되며 최대 배치 크기 제한(일반적으로 4MB)에 적합하며 커서가 종료됩니다. 예를 들어 batchSize가 -10인 경우 서버는 최대 10개의 문서와 4MB에 맞게 할 수 있는 문서 수를 반환한 다음 커서를 닫습니다. 이 기능은 해당 문서의 limit()과 최대 크기에 적합해야 하며 커서 서버 측을 종료하기 위해 요청을 보낼 필요가 없습니다. 커서가 반복된 후에도 배치 크기를 변경할 수 있으며 이 경우 다음 배치 검색에 설정이 적용됩니다.

int/Integer

또한 outputType=DBCursor (Camel 2.16+)를 위 헤더 설정보다 간단하게 설정할 수 있는 엔드 포인트 옵션으로 서버에서 반환된 문서를 경로로 "스트림"할 수 있습니다. 이렇게 하면 Mongo 쉘 내에서 findAll()를 실행하는 것과 마찬가지로 Mongo 드라이버의 DBCursor를 사용하여 경로를 반복할 수 있습니다. 기본적으로 이 구성 요소는 드라이버의 커서의 문서를 목록으로 로드하고 이를 경로로 반환하므로 많은 메모리 내 개체가 발생할 수 있습니다. DBCursor에서 일치하는 문서 수를 요청하지 않음 - 자세한 내용은 MongoDB 문서 사이트를 참조하십시오.

option outputType=DBCursor 및 일괄 크기가 있는 예:

from("direct:findAll")
    .setHeader(MongoDbConstants.BATCH_SIZE).constant(10)
    .setBody().constant("{ \"name\": \"Raul Kripalani\" }")
    .to("mongodb:myDb?database=flights&collection=tickets&operation=findAll&outputType=DBCursor")
    .to("mock:resultFindAll");

또한 findAll 작업은 페이징을 사용하는 경우 결과 페이지를 반복할 수 있도록 다음 OUT 헤더를 반환합니다.

Expand
헤더 키빠른 상수설명 (Mongo API doc에서 추가됨)데이터 유형

CamelMongoDbResultTotalSize

MongoDbConstants.RESULT_TOTAL_SIZE

쿼리와 일치하는 오브젝트 수입니다. 이는 limit/skip를 고려하지 않습니다.

int/Integer

CamelMongoDbResultPageSize

MongoDbConstants.RESULT_PAGE_SIZE

쿼리와 일치하는 오브젝트 수입니다. 이는 limit/skip를 고려하지 않습니다.

int/Integer

작은 정보

선택적 매개변수를 지원합니다. 이 작업은 필드 필터 및/또는 정렬 절을 지정할 수 있습니다. 선택적 매개변수 지정을 참조하십시오.

228.6.1.4. count

컬렉션의 총 오브젝트 수를 반환하고 OUT 메시지 본문으로 Long을 반환합니다.
다음 예제에서는 "dynamicCollectionName" 컬렉션의 레코드 수를 계산합니다. 동적성이 활성화되어 있고 결과적으로 작업은 "notableScientists" 컬렉션에 대해 실행되지 않고 "dynamicCollectionName" 컬렉션에 대해 실행됩니다.

// from("direct:count").to("mongodb:myDb?database=tickets&collection=flights&operation=count&dynamicity=true");
Long result = template.requestBodyAndHeader("direct:count", "irrelevantBody", MongoDbConstants.COLLECTION, "dynamicCollectionName");
assertTrue("Result is not of type Long", result instanceof Long);

Camel 2.14 부터 메시지 본문에 com.mongodb.DBObject 오브젝트를 쿼리로 제공할 수 있으며, 작업은 이 기준과 일치하는 문서의 양을 반환합니다.

DBObject query = ...
Long count = template.requestBodyAndHeader("direct:count", query, MongoDbConstants.COLLECTION, "dynamicCollectionName");

228.6.1.5. 필드 필터 지정(프로젝션)

기본적으로 쿼리 작업은 일치하는 오브젝트 전체(모든 필드 포함)를 반환합니다. 문서가 크고 필드의 하위 집합만 검색해야 하는 경우 CamelMongo DbConstants.FIELDS_FILTER 에서 관련 DBObject (또는 JSON 문자열, Map 등)를 설정하여 모든 쿼리 작업에서 필드 필터 를 지정할 수 있습니다.

다음은 MongoDB의 BasicDBObjectBuilder를 사용하여 DBObject 생성을 단순화하는 예제입니다. _id 및keygen Field 를 제외한 모든 필드를 검색합니다.

// route: from("direct:findAll").to("mongodb:myDb?database=flights&collection=tickets&operation=findAll")
DBObject fieldFilter = BasicDBObjectBuilder.start().add("_id", 0).add("boringField", 0).get();
Object result = template.requestBodyAndHeader("direct:findAll", (Object) null, MongoDbConstants.FIELDS_FILTER, fieldFilter);

228.6.1.6. 정렬 절 지정

특정 필드의 정렬을 기반으로 컬렉션에서 min/max 레코드를 가져와야 하는 경우가 많습니다. Mongo에서 이 작업은 다음과 유사한 구문을 사용하여 수행됩니다.

db.collection.find().sort({_id: -1}).limit(1)
// or
db.collection.findOne({$query:{},$orderby:{_id:-1}})

Camel 경로에서 SORT_BY 헤더를 findOneByQuery 작업과 함께 사용하여 동일한 결과를 얻을 수 있습니다. FIELDS_FILTER 헤더도 지정되면 작업에서 다른 구성 요소로 직접 전달할 수 있는 단일 필드/값 쌍(예: 매개 변수가 있는 MyBatis SELECT 쿼리)을 반환합니다. 이 예제에서는 컬렉션에서 임시 최신 문서를 가져와서 documentTimestamp 필드를 기반으로 결과를 단일 필드로 줄이는 방법을 보여줍니다.

.from("direct:someTriggeringEvent")
.setHeader(MongoDbConstants.SORT_BY).constant("{\"documentTimestamp\": -1}")
.setHeader(MongoDbConstants.FIELDS_FILTER).constant("{\"documentTimestamp\": 1}")
.setBody().constant("{}")
.to("mongodb:myDb?database=local&collection=myDemoCollection&operation=findOneByQuery")
.to("direct:aMyBatisParameterizedSelect")
;

228.6.2. 생성/업데이트 작업

228.6.2.1. 삽입

IN 메시지 본문에서 가져온 MongoDB 컬렉션에 새 오브젝트를 삽입합니다. 유형 변환은 DBObject 또는 List 로 전환하려고 시도합니다.
두 가지 모드가 지원됩니다. 단일 삽입과 여러 개의 삽입입니다. 여러 삽입의 경우 끝점에는 모든 유형의 개체의 List, Array 또는 Collections가 있거나 - DBObject 로 변환될 수 있습니다. 모든 개체는 한 번에 삽입됩니다. 엔드포인트는 입력에 따라 호출할 백엔드 작업(단일 또는 여러 삽입)을 지능적으로 결정합니다.

예제:

from("direct:insert")
    .to("mongodb:myDb?database=flights&collection=tickets&operation=insert");

이 작업은 WriteResult를 반환하고 WriteConcern 또는 invokeGetLastError 옵션의 값에 따라 getLastError() 가 이미 호출되었을 수 있습니다. 쓰기 작업의 궁극적인 결과에 액세스하려면 WriteResult 에서 getLastError() 또는 getCachedLastError() 를 호출하여 CommandResult 를 검색해야 합니다. 그런 다음 CommandResult.ok(), CommandResult.getErrorMessage() 및/또는 CommandResult.getException() 을 호출하여 결과를 확인할 수 있습니다.

새 오브젝트의 _id 는 컬렉션에서 고유해야 합니다. 값을 지정하지 않으면 MongoDB에서 자동으로 값을 생성합니다. 그러나 이를 지정하고 고유하지 않은 경우 삽입 작업이 실패하고 Camel이 알림을 받으려면 invokeGetLastError를 활성화하거나 쓰기 결과를 기다리는 WriteConcern을 설정해야 합니다.

이는 구성 요소의 제한 사항은 아니지만 더 높은 처리량을 위해 MongoDB에서 작동하는 방법입니다. 사용자 지정 _id 를 사용하는 경우 애플리케이션 수준이 고유한 애플리케이션 수준(예: 좋은 사례)을 확인해야 합니다.

Camel 2.15 이후 : 삽입된 레코드의 OID는 CamelMongoOid 키(MongoDbConstants.OID 상수) 아래의 메시지 헤더에 저장됩니다. 저장된 값은 단일 삽입의 경우 org.bson.types.ObjectId 이며 여러 레코드가 삽입된 경우 java.util.List<org.bson.types.ObjectId >입니다.

228.6.2.2. 저장

저장 작업은 upsert (UPdate, inSERT) 작업과 동일합니다. 여기서 레코드가 업데이트되고 존재하지 않으면 하나의 원자 작업으로 삽입됩니다. MongoDB는 _id 필드를 기반으로 일치를 수행합니다.

업데이트 시 오브젝트가 완전히 교체되고 MongoDB $modifiers 사용은 허용되지 않습니다. 따라서 이미 존재하는 경우 오브젝트를 조작하려면 다음 두 가지 옵션이 있습니다.

  1. 모든 필드와 함께 먼저 전체 오브젝트를 검색하고 Camel 내에서 변경한 후 저장합니다.
  2. 대신 서버 측에서 업데이트를 실행하는 $modifiers 와 함께 업데이트 작업을 사용합니다. upsert 플래그를 활성화할 수 있습니다. 이 경우 삽입이 필요한 경우 MongoDB는 $modifiers를 필터 쿼리 오브젝트에 적용하고 결과를 삽입합니다.

예를 들면 다음과 같습니다.

from("direct:insert")
    .to("mongodb:myDb?database=flights&collection=tickets&operation=save");

228.6.2.3. 업데이트

컬렉션에서 하나 이상의 레코드를 업데이트합니다. 정확히 2개의 요소가 포함된 IN 메시지 본문으로 List<DBObject>가 필요합니다.

  • 요소 1 (index 0) Cryostat 필터 쿼리는 일반적인 쿼리 오브젝트와 동일하게 영향을 받을 오브젝트를 결정합니다.
  • 요소 2(index 1): 일치하는 오브젝트가 어떻게 업데이트되는지를 업데이트합니다. MongoDB의 모든 수정자 작업이 지원됩니다.
참고

Multiupdates . 기본적으로 MongoDB는 여러 오브젝트가 필터 쿼리와 일치하는 경우에도 1개의 오브젝트만 업데이트합니다. MongoDB에서 일치하는 모든 레코드를 업데이트하도록 지시하려면 CamelMongoDbMultiUpdate IN 메시지 헤더를 true 로 설정합니다.

CamelMongoDbRecordsAffected 가 있는 헤더가 반환되고(MongoDbConstants.RECORDS_AFFECTED 상수) 업데이트( WriteResult.getN()에서 복사됨)가 반환됩니다.

다음 IN 메시지 헤더를 지원합니다.

Expand
헤더 키빠른 상수설명 (Mongo API doc에서 추가됨)예상 유형

CamelMongoDbMultiUpdate

MongoDbConstants.MULTIUPDATE

업데이트를 일치하는 모든 오브젝트에 적용해야 하는 경우 http://www.mongodb.org/display/DOCS/Atomic+Operations에서 참조하십시오.

부울/부울

CamelMongoDbUpsert

MongoDbConstants.UPSERT

If the database should create the element if it does not exist

부울/부울

예를 들어 다음은 "scientist" 필드의 값을 "Darwin"으로 설정하여 filterField 필드가 true인 모든 레코드를 업데이트합니다.

// route: from("direct:update").to("mongodb:myDb?database=science&collection=notableScientists&operation=update");
DBObject filterField = new BasicDBObject("filterField", true);
DBObject updateObj = new BasicDBObject("$set", new BasicDBObject("scientist", "Darwin"));
Object result = template.requestBodyAndHeader("direct:update", new Object[] {filterField, updateObj}, MongoDbConstants.MULTIUPDATE, true);

228.6.3. 작업 삭제

228.6.3.1. 제거

컬렉션에서 일치하는 레코드를 제거합니다. IN 메시지 본문은 제거 필터 쿼리 역할을 하며 DBObject 유형 또는 변환할 수 있는 유형이 될 것으로 예상됩니다.
다음 예제에서는 'conditionField' 필드가 true인 모든 개체를 Science 데이터베이스에서 notableScientists 컬렉션에서 제거합니다.

// route: from("direct:remove").to("mongodb:myDb?database=science&collection=notableScientists&operation=remove");
DBObject conditionField = new BasicDBObject("conditionField", true);
Object result = template.requestBody("direct:remove", conditionField);

CamelMongoDbRecordsAffected 가 있는 헤더가 반환됩니다(MongoDbConstants.RECORDS_AFFECTED 상수) 삭제된 레코드 수를 포함하는 int ( WriteResult.getN()에서 복사됨)가 반환됩니다.

228.6.4. 대량 쓰기 작업

228.6.4.1. bulkWrite

Camel 2.21부터 사용 가능

실행 순서에 대한 제어를 사용하여 대량으로 쓰기 작업을 수행합니다. 삽입, 업데이트 및 삭제 작업을 위한 명령을 포함하는 IN 메시지 본문으로 List<WriteModel<DBObject >>가 필요합니다.

다음 예제에서는 "scientist" 필드의 값을 "Marie Curie"로 설정하고 id "3"로 레코드를 삭제하여 ID "5"를 가진 새 event를 삽입합니다.

// route: from("direct:bulkWrite").to("mongodb:myDb?database=science&collection=notableScientists&operation=bulkWrite");
List<WriteModel<DBObject>> bulkOperations = Arrays.asList(
            new InsertOneModel<>(new BasicDBObject("scientist", "Pierre Curie")),
            new UpdateOneModel<>(new BasicDBObject("_id", "5"),
                                 new BasicDBObject("$set", new BasicDBObject("scientist", "Marie Curie"))),
            new DeleteOneModel<>(new BasicDBObject("_id", "3")));

BulkWriteResult result = template.requestBody("direct:bulkWrite", bulkOperations, BulkWriteResult.class);

기본적으로 목록에 남아 있는 쓰기 작업을 처리하지 않고 첫 번째 쓰기 오류에서 작업이 실행되고 중단됩니다. MongoDB가 목록에 남아 있는 쓰기 작업을 계속 처리하도록 지시하려면 CamelMongoDbBulkOrdered IN 메시지 헤더를 false 로 설정합니다. 정렬되지 않은 작업은 병렬로 실행되며 이 동작은 보장되지 않습니다.

Expand
헤더 키빠른 상수설명 (Mongo API doc에서 추가됨)예상 유형

CamelMongoDbBulkOrdered

MongoDbConstants.BULK_ORDERED

순서가 지정되거나 순서가 지정되지 않은 작업 실행을 수행합니다. 기본값은 true입니다.

부울/부울

228.6.5. 기타 작업

228.6.5.1. 집계

Camel 2.14 사용 가능

본문에 포함된 지정된 파이프라인으로 집계를 수행합니다. 집계는 길고 많은 작업이 될 수 있습니다. 주의해서 사용하십시오.

// route: from("direct:aggregate").to("mongodb:myDb?database=science&collection=notableScientists&operation=aggregate");
from("direct:aggregate")
    .setBody().constant("[{ $match : {$or : [{\"scientist\" : \"Darwin\"},{\"scientist\" : \"Einstein\"}]}},{ $group: { _id: \"$scientist\", count: { $sum: 1 }} } ]")
    .to("mongodb:myDb?database=science&collection=notableScientists&operation=aggregate")
    .to("mock:resultAggregate");

다음 IN 메시지 헤더를 지원합니다.

Expand
헤더 키빠른 상수설명 (Mongo API doc에서 추가됨)예상 유형

CamelMongoDbBatchSize

MongoDbConstants.BATCH_SIZE

일괄 처리당 반환할 문서 수를 설정합니다.

int/Integer

CamelMongoDbAllowDiskUse

MongoDbConstants.ALLOW_DISK_USE

집계 파이프라인 단계를 통해 임시 파일에 데이터를 쓸 수 있습니다.

부울/부울

효율적인 검색은 outputType=DBCursor를 통해 지원됩니다.

또한 outputType=DBCursor (Camel 2.21+)를 위 헤더 설정보다 간단하게 설정할 수 있는 엔드 포인트 옵션으로 서버에서 반환된 문서를 경로로 "스트림"할 수 있습니다. 이렇게 하면 Mongo 쉘 내에서 aggregate()를 실행하는 것과 마찬가지로 Mongo 드라이버의 DBCursor를 사용하여 경로를 반복할 수 있습니다. 기본적으로 이 구성 요소는 드라이버의 커서의 문서를 목록으로 로드하고 이를 경로로 반환하므로 많은 메모리 내 개체가 발생할 수 있습니다. DBCursor에서 일치하는 문서 수를 요청하지 않음 - 자세한 내용은 MongoDB 문서 사이트를 참조하십시오.

option outputType=DBCursor 및 일괄 크기가 있는 예:

// route: from("direct:aggregate").to("mongodb:myDb?database=science&collection=notableScientists&operation=aggregate");
from("direct:aggregate")
    .setHeader(MongoDbConstants.BATCH_SIZE).constant(10)
    .setBody().constant("[{ $match : {$or : [{\"scientist\" : \"Darwin\"},{\"scientist\" : \"Einstein\"}]}},{ $group: { _id: \"$scientist\", count: { $sum: 1 }} } ]")
    .to("mongodb:myDb?database=science&collection=notableScientists&operation=aggregate&outputType=DBCursor")
    .to("mock:resultAggregate");

228.6.5.2. getDbStats

MongoDB 쉘에서 db.stats() 명령을 실행하는 것과 동일합니다. 이 명령은 데이터베이스에 대한 유용한 통계 숫자를 표시합니다.
예를 들면 다음과 같습니다.

> db.stats();
{
    "db" : "test",
    "collections" : 7,
    "objects" : 719,
    "avgObjSize" : 59.73296244784423,
    "dataSize" : 42948,
    "storageSize" : 1000058880,
    "numExtents" : 9,
    "indexes" : 4,
    "indexSize" : 32704,
    "fileSize" : 1275068416,
    "nsSizeMB" : 16,
    "ok" : 1
}

usage 예:

// from("direct:getDbStats").to("mongodb:myDb?database=flights&collection=tickets&operation=getDbStats");
Object result = template.requestBody("direct:getDbStats", "irrelevantBody");
assertTrue("Result is not of type DBObject", result instanceof DBObject);

이 작업은 OUT 메시지 본문의 DBObject 형태로 쉘에 표시된 것과 유사한 데이터 구조를 반환합니다.

228.6.5.3. getColStats

MongoDB 쉘에서 db.collection.stats() 명령을 실행하는 것과 마찬가지로 컬렉션에 대한 유용한 통계 수치가 표시됩니다.
예를 들면 다음과 같습니다.

> db.camelTest.stats();
{
    "ns" : "test.camelTest",
    "count" : 100,
    "size" : 5792,
    "avgObjSize" : 57.92,
    "storageSize" : 20480,
    "numExtents" : 2,
    "nindexes" : 1,
    "lastExtentSize" : 16384,
    "paddingFactor" : 1,
    "flags" : 1,
    "totalIndexSize" : 8176,
    "indexSizes" : {
        "_id_" : 8176
    },
    "ok" : 1
}

usage 예:

// from("direct:getColStats").to("mongodb:myDb?database=flights&collection=tickets&operation=getColStats");
Object result = template.requestBody("direct:getColStats", "irrelevantBody");
assertTrue("Result is not of type DBObject", result instanceof DBObject);

이 작업은 OUT 메시지 본문의 DBObject 형태로 쉘에 표시된 것과 유사한 데이터 구조를 반환합니다.

228.6.5.4. command

Camel 2.15부터 사용 가능

데이터베이스에서 본문을 명령으로 실행합니다. 호스트 정보, 복제 또는 샤딩 상태를 가져오는 것으로 관리자 작업에 유용합니다.

컬렉션 매개변수는 이 작업에 사용되지 않습니다.

// route: from("command").to("mongodb:myDb?database=science&operation=command");
DBObject commandBody = new BasicDBObject("hostInfo", "1");
Object result = template.requestBody("direct:command", commandBody);

228.6.6. 동적 작업

교환은 MongoDbConstants.OPERATION_HEADER 상수에서 정의한 CamelMongoDbOperation 헤더를 설정하여 끝점의 수정된 작업을 재정의할 수 있습니다.
지원되는 값은 MongoDbOperation 열거에 의해 결정되며 엔드포인트 URI에서 작업 매개변수에 대해 허용되는 값과 일치합니다.

예를 들면 다음과 같습니다.

// from("direct:insert").to("mongodb:myDb?database=flights&collection=tickets&operation=insert");
Object result = template.requestBodyAndHeader("direct:insert", "irrelevantBody", MongoDbConstants.OPERATION_HEADER, "count");
assertTrue("Result is not of type Long", result instanceof Long);
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동