2012-08-14 2 views
1

NoSQL 데이터베이스를 백엔드로 사용하지만 (예 : couchDB에서 mongoDB로) 백엔드를 변경할 수있는 유연성이있는 웹 응용 프로그램 (Java, C# 또는 JavaScript 사용)을 만드는 방법 많은 코드를 다시 작성합니다.NoSQL 독립적 인 응용 프로그램 아키텍처

Java 용 Spring과 JavaScript 용 Wakanda와 같은 프레임 워크를 사용하는 것이 가장 좋을 것이라고 가정합니다. 이 방법이 있다면 몇 가지 프레임 워크를 명명하십시오.

서로 다른 유형의 NoSQL 데이터베이스 간에는 큰 차이가 있으며, 해결해야 할 문제에 따라 다르다는 것도 알고 있습니다. 그러나 이것은 이론적 인 질문이므로 다른 문제를 해결하는 데 사용할 수있는 다양한 옵션을 얻고 싶습니다. NoSQL을 사용하는 응용 프로그램 (예 : 그래프 기반의 경우에만)과는 독립적입니다.

답변 해 주셔서 감사합니다.

+0

* "적절한 프레임 워크가 아닙니다."* 이것은 적절한 장소가 아닙니다. 목록이나 의견을 묻는 질문, 투표 질문 등은 스택 오버플로에 대한 주제가 아닙니다. 나머지 질문에 대해서는 반드시 프레임 워크를 사용할 필요는 없습니다. NoSQL 데이터베이스를 추상화하는 것은 데이터 지속성 계층을 추상화하는 것과 같습니다. 일반적으로 프리젠 테이션 로직, 비즈니스 로직 및 지속성 로직을 분리합니다. 이 경우 당신의 퍼시스턴스 로직은 Mongo와 같은 것을 사용하지만 다른 로직을 변경하지 않고 Couch를 사용하도록 변경할 수 있습니다. – David

+0

예, 알고 있습니다. 그러나 여전히 많은 쿼리가 있다면 별도의 로직을 사용하더라도 여전히 많은 코드를 다시 작성해야합니다. SQL을 사용한다면 MySQL에서 PostgreSQL으로 마이그레이션하는 것이 큰 문제는 아니지만 NoSQL 데이터베이스를 다른 데이터베이스로 마이그레이션한다는 것은 많은 코드를 다시 작성한다는 것을 의미합니다. 가능한 옵션을 쉽게 줄이기 위해 어떤 옵션이 필요한지 알고 싶습니다. – Ben

답변

0

정말로 데이터베이스 독립적 인 경우 모든 엔터티와 데이터베이스 액세스를 추상화해야합니다. 가장 일반적인 방법은 저장소 패턴을 구현하는 것입니다.

OR/Ms (및 NoSQL 클라이언트)는 일반적으로 캡슐화를 위반할 것을 요구합니다 (공용 설정자 또는 수집 속성에 IEnumerable<T> 대신 List<T> 사용).

희생이 있다면 기꺼이 도메인 엔터티를 데이터베이스 엔터티로 사용할 수 있습니다. (작은 프로젝트에서는 이미 괜찮지 만 중형/대형에서는 그렇지 않음)

관련 문제