2016-10-14 2 views
2

akka-persistence-jdbc 플러그인과 postgresql을 백엔드로 사용하여 실행중인 프로젝트가 있습니다.Akka Persistence : jdbc (postgres)에서 cassandra로 마이그레이션

이제 akka-persistence-cassandra로 마이그레이션하려고합니다. 하지만 기존 이벤트 (postgres에서 4GB 이상)를 cassandra로 어떻게 변환 할 수 있습니까?

수동 마이그레이션 프로그램을 작성해야합니까? 포스트 그레스에서 읽기와 카산드라에서 올바른 형식으로 글쓰기?

답변

3

이것은 일반적인 마이그레이션 문제입니다. 이를위한 여러 가지 솔루션이 있습니다. (스파크 Dataframe, 스파크 SQL로 불리는)

  1. Spark SQL and Spark Cassandra Connector: 스파크 JDBC는 API는 어떤 JDBC 소스에서 읽을 수 있습니다. 분할하지 않으면 덩어리로 읽을 수 있습니다. 그렇지 않으면 메모리가 부족합니다. 세분화는 또한 이주를 평행하게 만듭니다. 그런 다음 Cassandra Spark Connector가 작성한 데이터를 Cassandra에 씁니다. 이것은 내가 작업에서 사용한 가장 단순하고 효율적인 방법입니다.

  2. Java Agents: Java Agent는 일반 JDBC 또는 다른 라이브러리를 기반으로 작성한 후 Datastax 드라이버와 함께 Cassandra에 쓸 수 있습니다. 스파크 프로그램은 멀티 머신 - 멀티 스레드 방식으로 실행되며, 문제가 자동으로 해결되면 복구됩니다. 그러나 이와 같이 수동으로 에이전트를 작성하면 에이전트는 단일 시스템에서만 실행되며 멀티 스레딩은 코딩해야합니다.

  3. Kafka Connectors : Kafka는 메시징 중개인입니다. 그것은 간접적으로 마이그레이션에 사용될 수 있습니다. Kafka에는 다른 데이터베이스를 읽고 쓸 수있는 커넥터가 있습니다. JDBC 커넥터를 사용하여 PostGres 및 Cassandra 커넥터에서 읽고 Cassandra에 쓸 수 있습니다. 설치가 쉽지는 않지만 "코딩 불필요"라는 이점이 있습니다.

  4. ETL Systems: 일부 ETL 시스템은 Cassandra를 지원하지만 개인적으로 시도하지 않았습니다.

내가 마이그레이션 스파크 카산드라와 스파크 SQL을 사용하여 몇 가지 장점을보고, 그들 중 일부는 다음과 같습니다

  1. 코드가 간결했다. 그것은 스파크 노드가 다운
  2. 오류 tolerance- 경우 스파크 마스터 UI 40 개 라인
  3. 멀티 시스템 (각 시스템에 다시 멀티 스레드)
  4. 작업 진행 상황과 통계 또는 스레드가/노동자가 다음 작업이 거기에 실패 거의 없었다 자동으로 다른 노드에서 시작 - 매우 긴 작업을 수행하는 데 적합합니다.

스파크를 알지 못하면 4GB 데이터를 작성할 수 있습니다.

관련 문제