2013-04-07 3 views
1

내 의미에 대한 액세스 권한을 제공해야합니다. 현재는 RDBMS이지만 나중에 RDBMS 이외의 추가 데이터 소스 (그래프, hadoop 등)를 사용할 것입니다.DB를 보호하는 방법?

내 의미의 소비자는 회사 도메인/인트라넷 내에 있지만 원격 서버에서 실행됩니다. 또한 설계 단계에 있으므로 비즈니스 로직 (Java/C 또는 기타)을 구현하는 데 어떤 기술을 사용할 것인지 명확하지 않습니다. SW의 외부 모듈에 JDBC/ODBC를 통한 데이터 모델에 대한 직접 액세스를 제공하는 것은 좋지 않을 것이라고 생각합니다 (RDBMS에만 전념하기를 원하지 않기 때문에).

내 의미에 액세스하기위한 API를 만드는 것이 계획입니다. API는 기본적으로 CRUD입니다. 현재 후보는 Spring을 사용하는 REST API입니다.

REST를 통한 액세스 속도가 느릴 수 있습니다. 이 기술은 Java 기반의 것이 바람직합니다. 그러나, C 기반 및 기타도 환영합니다.

나는 REST의 대안을 고려해야한다고 생각합니다. 액세스 속도를 제외하고는 구현 및 유지 관리가 쉬워야한다는 유일한 요구 사항이 있습니다.

의견을 보내 주시면 감사하겠습니다.

답변

0

회사 방화벽 뒤의 내부 호출의 경우 RMI는 복잡한 데이터 구조를 수락하고 반환하는 여러 가지 방법으로 임의의 복잡한 API를 만들 수 있습니다. CORBA도 그렇게 할 것입니다. 이러한 기술은 JavaSE의 일부입니다.

최신 기술의 경우 Google protocol buffers은이 작업에 좋지 않을 수 있습니다.

+1

익명 downvoter - 지옥에 타지 마! – aviad

+0

나는 protobuf (팁을위한 감사합니다)를 조사 할 것이다! – aviad

0

데이터 모델에서 도메인 모델을 보호하려는 경우 인터페이스 (예 : 인터페이스) 사이에 추상화 레이어를 넣을 수 있습니다. 왜 리모팅 경계가 필요하다고 생각하니? REST를 통해 원격으로 액세스 할 수있는 API를 제공하는 것은 도메인과 데이터 모델 간의 결합을 제거하는 것과 완전히 직각입니다.

API 소비자는 항상 개인 도메인 모델로부터 보호됩니다. Java API를 작성하는 경우 인터페이스를 공개하고 원격 및 직교 REST 인터페이스를 사용하면 HTTP 자원이 노출됩니다.

+0

질문에 명확하지 않을 수도 있지만 내 의미에 원격으로 액세스해야합니다. 따라서 "... REST를 통해 원격으로 액세스 할 수있는 API를 제공하는 것은 사용자의 관심사와 완전히 직결됩니다 ..."는 정확하지 않습니다. 구체적인 제안이나 "단지 추상화 계층을 ..."에 대한 일반적인 성명서가 있습니까? (IMO)별로 기여하지 않는 것은 무엇입니까? – aviad

+0

특정 답변을 원하면 더 자세하게 질문을 작성하는 것이 좋습니다. API의 목적은 무엇입니까? 소비자는 누구입니까? 예를 들어 API가 다양한 유형의 클라이언트를 수용해야하는 경우 REST를 선택합니다. 모든 클라이언트가 Java이고 API를 변경했을 때 클라이언트 용 바이너리를 번들로 묶는 데 어려움을 겪고 있습니다. Java RMI를 선택할 수 있습니다. 이러한 선택은 맥락 적이며 신중하게 선택해야합니다. 나는 올바른 방향으로 너를 밀어 붙이며 문제에 대해 생각하게하는 일반적인 제안을했다. –

+0

필자의 의미를 원격으로 액세스해야하고 API가 CRUD라는 사실을 강조하기 위해 내 질문을 편집했습니다. 나는 이제 당신이 당신의 대답에서 더 구체적 일 수 있다고 믿습니다. – aviad