NoSQL ডেটাবেস কি?
NoSQL ডেটাবেসগুলি এমন ডেটাবেস যা রিলেশনাল ডেটাবেসের কাঠামো ব্যবহার করে না, এবং এর মধ্যে ডেটা সংরক্ষণের জন্য বিভিন্ন মডেল থাকে (যেমন, ডকুমেন্ট-ভিত্তিক, কী-ভ্যালু স্টোর, কলাম-ভিত্তিক, এবং গ্রাফ ডেটাবেস)। জনপ্রিয় NoSQL ডেটাবেসের মধ্যে MongoDB, Cassandra, Redis, Couchbase ইত্যাদি অন্তর্ভুক্ত। স্প্রিং ব্যাচের সাহায্যে আপনি সহজেই NoSQL ডেটাবেস থেকে ডেটা পড়তে এবং লেখতে পারেন।
স্প্রিং ব্যাচে NoSQL ডেটাবেস ব্যবহারের জন্য বিশেষভাবে ItemReader এবং ItemWriter কাস্টমাইজ করা হয়, যা MongoItemReader, CassandraItemReader অথবা অন্য NoSQL ভিত্তিক ডেটাবেসের জন্য কাস্টম ক্লাস হতে পারে।
NoSQL ডেটাবেসে ডেটা পড়া
স্প্রিং ব্যাচে NoSQL ডেটাবেস থেকে ডেটা পড়তে, আপনি সাধারণত ItemReader ইন্টারফেস ব্যবহার করবেন। নিচে MongoDB থেকে ডেটা পড়ার জন্য একটি MongoItemReader কনফিগারেশনের উদাহরণ দেওয়া হয়েছে।
MongoDB থেকে ডেটা পড়ার উদাহরণ
MongoDB থেকে ডেটা পড়ার জন্য স্প্রিং ব্যাচে MongoItemReader ব্যবহার করা যেতে পারে, যা MongoDB ডেটাবেসের মধ্যে থেকে ডেটা রিড করতে ব্যবহৃত হয়।
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
import org.springframework.batch.item.database.MongoItemReader;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class BatchConfig {
@Bean
public MongoItemReader<MyDocument> mongoItemReader() {
MongoItemReader<MyDocument> reader = new MongoItemReader<>();
reader.setTemplate(mongoTemplate());
reader.setQuery("{}"); // Query to fetch all documents
reader.setTargetType(MyDocument.class);
reader.setPageSize(10); // Define page size for batch processing
return reader;
}
@Bean
public MongoTemplate mongoTemplate() {
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
MongoDatabase database = mongoClient.getDatabase("mydatabase");
return new MongoTemplate(mongoClient, "mydatabase");
}
}
এখানে:
MongoItemReaderব্যবহার করা হয়েছে MongoDB থেকে ডেটা রিড করার জন্য।setQuery("{}")দ্বারা MongoDB ডেটাবেস থেকে সকল ডকুমেন্ট রিড করার জন্য কুয়েরি দেওয়া হয়েছে।MyDocumentএকটি কাস্টম ডকুমেন্ট ক্লাস, যা MongoDB এর ডেটার কাঠামোকে প্রতিনিধিত্ব করে।
MongoTemplate ব্যবহৃত হয়েছে MongoDB থেকে ডেটা রিড করার জন্য এবং MongoItemReader এর সাথে সংযুক্ত করার জন্য।
NoSQL ডেটাবেসে ডেটা লেখা
NoSQL ডেটাবেসে ডেটা লেখার জন্য, ItemWriter ইন্টারফেস ব্যবহার করা হয়। আপনি কাস্টম ItemWriter তৈরি করতে পারেন যা MongoDB বা অন্য NoSQL ডেটাবেসে ডেটা লেখার কাজ করবে।
MongoDB তে ডেটা লেখার উদাহরণ
MongoDB তে ডেটা লেখার জন্য স্প্রিং ব্যাচে MongoItemWriter ব্যবহার করা যায়, বা কাস্টম ItemWriter তৈরি করা যেতে পারে।
import org.springframework.batch.item.ItemWriter;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class MongoItemWriter implements ItemWriter<MyDocument> {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public void write(List<? extends MyDocument> items) throws Exception {
for (MyDocument item : items) {
mongoTemplate.save(item); // Save each document in MongoDB
}
}
}
এখানে:
MongoTemplateব্যবহার করা হয়েছে MongoDB ডেটাবেসে ডেটা লিখতে।save()মেথড দ্বারা ডেটা MongoDB তে সংরক্ষিত হচ্ছে।
এই ItemWriter কাস্টম তৈরি করা হয়েছে MongoDB তে ডেটা লেখার জন্য। এটি ব্যাচ প্রসেসিংয়ের শেষে প্রতিটি ডকুমেন্ট MongoDB তে সংরক্ষণ করবে।
Cassandra তে ডেটা পড়া এবং লেখা
Cassandra, আরেকটি জনপ্রিয় NoSQL ডেটাবেস, স্প্রিং ব্যাচের মাধ্যমে ব্যাচ প্রসেসিংয়ের জন্য একইভাবে ব্যবহার করা যায়। Cassandra থেকে ডেটা পড়তে CassandraItemReader এবং ডেটা লিখতে CassandraItemWriter ব্যবহার করা যেতে পারে।
Cassandra থেকে ডেটা পড়ার উদাহরণ:
import org.springframework.batch.item.data.CassandraItemReader;
import org.springframework.cassandra.core.CqlOperations;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CassandraBatchConfig {
@Bean
public CassandraItemReader<MyEntity> cassandraItemReader(CqlOperations cqlOperations) {
CassandraItemReader<MyEntity> reader = new CassandraItemReader<>();
reader.setCql("SELECT * FROM my_table");
reader.setTargetType(MyEntity.class);
reader.setCqlOperations(cqlOperations);
return reader;
}
}
Cassandra তে ডেটা লেখার উদাহরণ:
import org.springframework.batch.item.data.CassandraItemWriter;
import org.springframework.cassandra.core.CqlOperations;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CassandraBatchConfig {
@Bean
public CassandraItemWriter<MyEntity> cassandraItemWriter(CqlOperations cqlOperations) {
CassandraItemWriter<MyEntity> writer = new CassandraItemWriter<>();
writer.setCql("INSERT INTO my_table (id, name) VALUES (?, ?)");
writer.setCqlOperations(cqlOperations);
return writer;
}
}
NoSQL ডেটাবেস থেকে ডেটা পড়ার এবং লেখার অন্যান্য অপশন
স্প্রিং ব্যাচে NoSQL ডেটাবেসের জন্য আপনি আরও কিছু কাস্টমাইজড উপায় ব্যবহার করতে পারেন:
- Redis: Redis থেকে ডেটা পড়তে এবং লেখতে
RedisItemReaderএবংRedisItemWriterব্যবহার করা যেতে পারে। - Couchbase: Couchbase ডেটাবেসে ডেটা পড়তে এবং লেখতে
CouchbaseItemReaderএবংCouchbaseItemWriterব্যবহার করা হয়। - DynamoDB: Amazon DynamoDB তে ডেটা পড়তে এবং লেখতে
DynamoDBItemReaderএবংDynamoDBItemWriterব্যবহৃত হতে পারে।
এই উপাদানগুলো স্প্রিং ব্যাচে NoSQL ডেটাবেসের সাথে সংযোগ স্থাপনের জন্য সাহায্য করে এবং আপনার ব্যাচ প্রসেসিংয়ের পারফরম্যান্স এবং স্কেলেবিলিটি উন্নত করে।
সারাংশ
স্প্রিং ব্যাচের মাধ্যমে NoSQL ডেটাবেস থেকে ডেটা পড়া এবং লেখা সহজে করা যায়। MongoDB, Cassandra, Redis, এবং অন্যান্য NoSQL ডেটাবেসের জন্য স্প্রিং ব্যাচের কাস্টম ItemReader এবং ItemWriter ব্যবহার করে ডেটা রিড এবং রাইট করা সম্ভব। MongoDB বা Cassandra এর মতো ডেটাবেসের সাথে ইন্টিগ্রেশন করার সময়, আপনি ডেটা রিড করার জন্য ItemReader এবং ডেটা লেখার জন্য ItemWriter কাস্টমাইজ করে স্প্রিং ব্যাচের মাধ্যমে কার্যকরী ব্যাচ প্রসেসিং পরিচালনা করতে পারেন।
Read more