2013-03-26 2 views
2

우리는 Libgdx/Netty를 사용하여 2D MMORPG 공간 사수를 개발하고 있으며 우리는 데이터와 관련하여 해결할 수없는 질문에 직면했습니다.JPA 대 MMORPG 용 NoSQL

  • 우리가 JPA와 RDBMS를 사용하는 경우 우리는 ACID를 달성 할 수있는 우리는 우리가 우리가 더있는 데이터 관리 코드를
  • 을 속도에 도움이되지하지만 복잡하게 JDBC 봄의 지원 폭 사용하는 경우 데이터 관리 코드
  • 을 완화 NoSQL 개발 경험이 있지만, 속도면에서 이점은 매우 커서 쿼리를 쉽게 포기해야합니다.

우리는 결정을 내리는 데 도움을주십시오.

+1

최대 성능을 얻으려는 귀하의 목표는 무엇입니까? 아니면 쉬운 유지 보수 및 학습 곡선에 대한 balluch approuch 가질 수 있습니까? – rcdmk

+0

성능은 분명히 어느 시점에서 결정적으로 중요해질 것입니다. 많은 플레이어는 많은 데이터, 많은 업데이트, 많은 삽입, 많은 선택, 실제로 너무 많은 것을 보내고 있습니다. – OneMoreVladimir

+0

하지만 가장 자주 실행되는 쿼리의 일부가 전체보다 훨씬 작습니다. JPA와 NoSQL을 결합한다는 의미입니까? – OneMoreVladimir

답변

2
  1. 물론 JPA가 JDBC를 사용한다는 것을 알고 있습니다.
  2. 스프링은 JPA만큼이나 쉽게 ACID를 얻을 수 있습니다. 나는 당신이 말하는 "속도"에 대해 어떤 도움이되는지 모른다. 개발 속도? 거래 속도? Spring이 데이터 관리 코드를 복잡하게 만드는 이유는 무엇입니까? 이것은 다른 잘못된 진술입니다.
  3. NoSQL에 대해 어떤 속도로 질문하십니까? 개발? 실행 시간? NoSQL에는 ACID가 없습니다. 그것이 당신에게 중요하다면 왜 그것을 고려하고 있습니까? NoSQL은 "관계형이 아님"을 의미합니다. 데이터 관계형입니까? 그렇다면 NoSQL을 고려하는 이유는 무엇입니까?

기술 및 추측에 대해 이야기하여 성능 문제를 결정할 수 없습니다. 유일한 방법은 벤치마킹하고 실제로 관심있는 거래에 대한 실제 데이터를 얻는 것입니다.

인터페이스 기반 DAO를 작성하고 각 후보 기술을 사용하여 구현하고 실제 결과를 측정합니다. 이것이 어떤 퍼시스턴스 기술을 사용할 것인지 결정하는 방법입니다.

당신은 어느 것을 잘 알고 있습니까? 아무도 NoSQL을 모른다면, 그것을 사용하지 마십시오. JPA를 모르는 경우에는 사용하지 마십시오. Spring JDBC 템플릿을 사용하면 트랜잭션과 함께 커스텀 SQL을 작성할 수있다. 관계형 데이터베이스와 Spring을 이미 알고 있다면 왜 사용하지 않을까요?

+0

감사합니다 Duffymo, 다른 한편으로 ACID는 매우 중요합니다. 즉, 적절한 트랜잭션과 JPA와 JDBC를 결합하여 런타임 성능을 달성 할 수 있다는 것을 의미합니까? – OneMoreVladimir

+1

아니요, 성능이 뛰어난 스키마를 만들고 올바르게 인덱싱하고 효율적인 쿼리를 작성하여 런타임 성능을 얻을 수 있습니다. 당신은 기술 알파벳 수프를 뛰어 다니며 사로 잡혀있어 중요한 것에 대한 단서가 없습니다. – duffymo

2

Google에 문의 해주세요.

요구 사항에 따라 달라집니다. 그리고 지금 나는 생각합니다. 주요 목표가 성능 인 경우 쿼리를 완벽하게 제어 할 수 있기 때문에 자신의 ORM을 구현하는 것이 좋습니다. 주로 특정 요구 사항에 대한 모든 쿼리를 최적화 할 수 있습니다.

나는 응용 프로그램이 데이터 소스 유형에 독립적 그래서 JPAEclipseLink가 또는 다른 프레임 워크는 확실히 ORM 프레임 워크의 대부분은 주로 데이터베이스 계층에 독립적이어야하는 목표를 위해 지정되어 있지만를 잘못이라고하지 않지만 확실히 당신은 달성 할 수 적절한 데이터 소스의 디자인 패턴의 구현으로는, AbstractDAOFactoryMappers

나는 또한 언급해야 자신의 ORM의 주요 단점은 구현이 많은 시간을 소요하지만, 당신이 좋은 효율적으로 작업 프로젝트를 만들려면, 시간이 좀 걸릴거야. 이를 위해

많은 뷰, 누군가가 당신이 사용하는 것이 좋습니다 것입니다 JPA, Spring 또는 JDBC 누군가가 ORM 자신의 선호 ( JDBC 빠른 JPA로 확실히이다). 나는 더 많은 개발자들로부터 얻은 경험이 충분하다고 생각한다.

기술을 사용하려면 알고있는 기술을 사용하십시오.

+0

Sajmon에게 감사하며 NoSQL은 무엇입니까? – OneMoreVladimir

+1

@OneMoreVladimir noSQL에 대한 경험이 많지 않지만 noSQL을 사용하는 것이 승리가 아니라고 생각합니다. 데이터에 관계형 모델이 필요하다면 noSQL을 사용하는 것은 좋지 않습니다. – Sajmon