답변:
MySQL은 관계형 데이터베이스의 예입니다. ORM을 사용하여 코드의 객체와 데이터의 관계형 표현간에 변환 할 수 있습니다.
ORM의 예로는 nHibernate , Entity Framework , Dapper 등이 있습니다.
MongoDB는 문서 데이터베이스의 예입니다. ODM을 사용하여 코드의 객체와 데이터의 문서 표현 (필요한 경우)간에 변환 할 수 있습니다.
Mandango 는 MongoDB 용 ODM의 예입니다.
ORM은 오브젝트 모델과 관계형 데이터베이스 사이를 맵핑합니다. ODM은 개체 모델과 문서 데이터베이스간에 매핑됩니다. MySQL은 ORM이 아니며 관계형 데이터베이스,보다 구체적으로 SQL 데이터베이스입니다. MongoDB는 ODM이 아니며 문서 데이터베이스입니다.
본질적으로 ORM은 ODBC, JDBC 또는 OLEDB와 같은 SQL 데이터베이스 드라이버를 사용하여 객체 표기법을 관계형 표기법으로 변환하고 ODM은 JSON 또는 JSONB API를 사용하여 객체 표기법을 문서 표기법으로 변환합니다.
후드 아래에는 다른 종류의 구현이 있습니다.
PS : JSONB는 MongoDB에서 사용하는 이진 형식으로 저장된 JSON 텍스트 문서 표기법입니다.
데이터베이스 작업을 처음 배우면 ORM (오브젝트 관계 매핑)과 ODM (오브젝트 문서 매핑)의 두 가지 유형의 데이터베이스 설정으로 나옵니다.
객체를 관계형 세계와 매핑하는 ORM은 기본적으로 객체 지향 프로그래밍 언어에서 호환되지 않는 유형간에 데이터를 변환합니다. ORM은 스토리지 드라이버의 구현 특정 세부 사항을 API (application program interface)로 랩핑하고 관계형 필드를 오브젝트 멤버에 맵핑합니다. 예를 들어 직원 테이블이 있으면 모든 직원에 대한 단일 개체에 매핑되고 다양한 방법이 연결됩니다.
반면에 ODM은 MongoDB와 같은 문서 데이터베이스로 개체를 매핑하는 개체 문서 매퍼입니다.
주된 차이점은 ORM은 MySQL 데이터베이스 용이며 ODM은 데이터의 문서 표현을위한 매핑입니다. ORM이하는 일을 기억하는 가장 좋은 방법은 행과 열이있는 Excel 스프레드 시트로 생각하는 것입니다. 이 설정을 사용하는 경우 현재 응용 프로그램을 처리하는 방법에 대한 훌륭한 계획을 세우고 싶지만 ODM처럼 많은 수정을 허용하지 않습니다. ODM을 사용하면 새 필드와 속성을 쉽게 추가 할 수 있지만 ORM을 사용하면 새 필드를 추가 할 때 아무것도 비워 둘 필요가 없으므로 각 필드에 들어가서 수정하지 않는 한 기본값으로 설정해야합니다.
Mongoose는 MongoDB 용 ODM (Object Data Model)의 좋은 예입니다. 여기서 객체를 사용하여 작업을 직접 수행 할 수 있으며 적절한 쿼리 및 스키마로 변환됩니다. https://mongoosejs.com/ 에서 찾을 수 있습니다.