Monday, February 13, 2017

Migrar documentos de MongoDB a Couchbase con jmoordb

Migrar documentos de MongoDB a Couchbase con jmoordb

Los pasos son:

  • Definir el Entity
  • Definir el Facade MongoDB
  • Definir el Facade Couchbase
  • Definir el Provider para MongoDB
  • Definir el Provider para Couchbase




Definimos el Entity
@Getter
@Setter
public class Planetas {

    @Id
    private String idplaneta;
    private String planeta;
    @Ignore
    private Date fecha;

    public Planetas() {
    }

    public Planetas(String idplaneta, String planeta, Date fecha) {
        this.idplaneta = idplaneta;
        this.planeta = planeta;
        this.fecha = fecha;
    }

 

}


Definir el facade MongoDB

public class PlanetasFacade extends AbstractFacade<Planetas> {
 MongoClientProvider mongoclientProvider = new MongoClientProvider();
    public PlanetasFacade() {
        super(Planetas.class, "fantasy", "planetas");
    }

    @Override
    protected MongoClient getMongoClient() {
       return mongoclientProvider.getMongoClient();
    }

   @Override
    public Object findById(String key, String value) {
       return search(key,value);
    }

    @Override
    public Object findById(String key, Integer value) {
        return search(key,value);
    }

}


Definir el Facade Couchbase

public class PlanetasFacade extends CouchbaseAbstractFacade<Planetas> {
 CouchbaseClientProvider couchbseclientProvider = new  CouchbaseClientProvider();
    public PlanetasFacade() {
        super(Planetas.class, "planetas", "planetas");
    }

    @Override
    protected Cluster getCluster() {
    return  couchbseclientProvider.getCluster();
    }

     @Override
    public Object findById(String key, String value) {
        return search(key, value);
    }

    @Override
    public Object findById(String key, Integer value) {
        return search(key, value);
    }


}


Definir la clase MongoClientProvider

public class MongoClientProvider {

    private MongoClient mongoClient = null;

    public MongoClient getMongoClient() {
        mongoClient = new MongoClient();
        try {
       
        } catch (Exception e) {
            System.out.println("getMongoClient() " + e.getLocalizedMessage());
        }
        return mongoClient;
    }

}

Definir la clase CouchbaseClientProvider

public class CouchbaseClientProvider {
private Cluster cluster;


    public Cluster getCluster() {
           CouchbaseEnvironment env = DefaultCouchbaseEnvironment.builder()
                    .connectTimeout(10000) //10000ms = 10s, default is 5s
                    .build();
            cluster = CouchbaseCluster.create("localhost");
        return cluster;
    }


}


Código para ejecutar la migración


  com.migrador.couchbase.ejb.PlanetasFacade planetascouchbaseFacade = new PlanetasFacade() ;
            com.migrador.mongodb.ejb.PlanetasFacade planetasmongodbFacade = new com.migrador.mongodb.ejb.PlanetasFacade() ;
            
            List<Planetas> list = planetasmongodbFacade.findAll();
            if(!list.isEmpty()){
                list.forEach((p) -> {
                    planetascouchbaseFacade.save(p,false);
                });
            }

Base de datos en MongoDB



Couchbase después de la migración:






Friday, February 03, 2017

jmoordb 0.1.9.2


jmoordb

Libro:
https://avbravo.gitbooks.io/jmoordb/content/

Jmoordb es un Object Document Mapper para Java que soporta bases de datos NoSQL (MongoDB ,OrientDB,Couchbase).

Es un Framework orientado a desarrolladores Java, ya que pueden interactuar con bases de datos NoSQL desde su código Java, para los expertos en NoSQL permite interactuar desde Java con la sintaxis de NoSQL de la base de datos que utiliza, para los expertos que vienen del mundo relacional permite ejecutar instrucciones SQL que son convertidas a instrucciones NoSQL.


  • Ofrece una sintaxis similar a JPA
  • Permite el uso de Objetos java para operaciones CRUD
  • Permite el uso de Document para operaciones con las colecciones de documentos
  • Ofrece un soporte para SQL
  • Soporta Java 8
  • Soporta Anotaciones
  • Soporta Beans Validation (JSR 349)
  • Soporta documentos embebidos
  • Soporta documentos referenciados
  • Definición sencilla de Entitys
  • Métodos para operaciones de creación, eliminación, actualización , búsquedas avanzadas.

Esta basado en: Driver Java para MongoDB, Couchbase, OrientDB
Forma de uso muy sencillo:
Definir un Entity:
@Getter
@Setter
public class Planetas {
  @Id
  private String idplaneta;
  private String planeta;
  @Ignore
  private Date fecha;
  public Planetas() {
  }
}
En el controller invocar los métodos del facade:

planetasFacade.save(planetas);
Con esto generados el documento que es almacenado en la base de datos NoSQL
Planetas{ "_id" : ObjectId("587cf876a6cca92842bf2ea9"),
"idplaneta" : "tr",
"planeta" : "Tierra"
}