نحوه اتصال به کاساندرا با جاوا (قسمت دوم برنامه نمونه)
در قسمت اول با درایور یا راه اندازهای کاساندرا نسخه 3 برای اتصال به جاوا آشنا شدیم. در این بخش، نحوه اتصال به cassandra با java با استفاده از راه انداز DataStax بررسی خواهد شد و در ادامه یک مثال کاربردی از اتصال کاساندرا به زبان برنامه نویسی جاوا ارائه می شود. در انتهای مطلب هم فایل مثال ارائه شده که با IntelliJ IDEA (یک IDE معروف برای جاوا) توسعه داده شده است برای استفاده خوانندگان محترم ضمیمه می شود.
توسط کتابخانه نوین و انعطاف پذیر راه انداز جاوا که توسط Datastax توسعه و پشتیبانی میشود، میتوان در برنامه جاوا، با زبان پرسوجوی کاساندرا (CQL3) و پروتکل دودویی بومی کاساندرا، با خوشه پردازشی کاساندرا ارتباط برقرار کرد. معماری راه انداز لایه بندی میباشد.
در لایه زیرین، هسته راه انداز قرار دارد که تمام مسایل مرتبط با اتصال با خوشه پردازشی کاساندرا (برای مثال، استخر اتصال، شناسایی گره جدید و غیره) را برعهده دارد.
عناوين مطالب: '
اتصال به سرورهای خوشه پردازشی کاساندرا
برای اتصال ابتدا باید شیءای از کلاس Cluster ایجاد و توسط زنجیره ی متدها، مشخصه های آن را مقدار دهی کرد:
با فرض شِمای زیر:
CREATE KEYSPACE example_keyspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true; USE example_keyspace; CREATE TABLE example_keyspace.Employe_table ( emp_id int, emp_city text, emp_name text, emp_phone text, emp_sal int, PRIMARY KEY ((emp_id, emp_city), emp_name) ) WITH CLUSTERING ORDER BY (emp_name ASC)
کد اتصال به خوشه کاساندرا و ایجاد جلسه ای بر فضای کلید contacts:
// Setup a cluster to your local instance of Cassandra Cluster cluster = Cluster.builder() .addContactPoint("localhost") .withPort(9042) .build(); // Create a session to communicate with Cassandra Session session = cluster.connect();
نکته 1: در برنامه کاربردی برای هر فضای کلید یا پایگاه داده، باید تنها یک نمونه از Cluster ایجاد کرد؛ این کلاس میتواند، استخر اتصال، سیاست انتخاب گره (بطور پیشفرض از رویکرد round robin استفاده میکند)، فشرده سازی، بازگشت از خطا(failover) و سعی مجدد را کنترل کند. برای انجام کارهای اصلی (منطق کار) در فضای کلیدی در خوشه، نمونهای از کلاس Session باید ایجاد گردد. لازم بهذکر است که Session، thread-safe است، بنابراین میتواند در میان چند مشتری به اشتراک گذاشته شود.
نکته 2: اینکه برنامه راه انداز به کدام گره(ها)ی کاساندرا متصل شوند دو حالت متفاوت میتوان متصور شد که در راه انداز Datastax، با توجه به دو پیکربندی (الف) نقاط اتصال(Contact points) و (ب) سیاستهای تنظیم بار(Load balancing policies) تعیین میشود که مشتری یا راه انداز، به کدام گره(ها) وصل میشود:
الحاق وابستگی ها برای اتصال به کاساندرا
برای افزودن وابستگی هسته راه انداز، به پروژه maven:
<dependency> <groupId>com.datastax.cassandra</groupId> <artifactId>cassandra-driver-core</artifactId> <version>3.4.0</version> </dependency>
برای دانلود دایور Datastax میتوانیم از آدرس زیر راه انداز مطلوب خود را جستجو و دانلود کنید.
برای دانلود ورژن 3.4.0 میتوانید از لینک زیر استفاده کنید.
ایجاد یک برنامه نمونه برای اتصال به cassandra با java
در مرحله، برنامه نمونه ی ما که شامل سه کلاس زیر به منظور ایجاد یک شی و ذخیره سازی آن در کاساندرا هست ارائه می شود.
کلاس EmployePOJO برای ایجاد شی employe که قرار است اطلاعات کارمندان در قالب این شی تولید و ذخیره شود.
/** * this class contains any employee's information in database */ public class EmployePOJO { private int employe_id; private String employe_city; private String employe_name; private String employe_phone; private int employe_sal; //default constructor public EmployePOJO() { this.employe_id = 0; this.employe_city = ""; this.employe_name = ""; this.employe_phone = ""; this.employe_sal = 0; } public EmployePOJO(int employe_id, String employe_city, String employe_name, String employe_phone, int employe_sal) { this.employe_id = employe_id; this.employe_city = employe_city; this.employe_name = employe_name; this.employe_phone = employe_phone; this.employe_sal = employe_sal; } //getter and serter methods public int getEmploye_id() { return employe_id; } public String getEmploye_city() { return employe_city; } public String getEmploye_name() { return employe_name; } public String getEmploye_phone() { return employe_phone; } public int getEmploye_sal() { return employe_sal; } public void setEmploye_id(int employe_id) { this.employe_id = employe_id; } public void setEmploye_city(String employe_city) { this.employe_city = employe_city; } public void setEmploye_name(String employe_name) { this.employe_name = employe_name; } public void setEmploye_phone(String employe_phone) { this.employe_phone = employe_phone; } public void setEmploye_sal(int employe_sal) { this.employe_sal = employe_sal; } }
کلاس CassandraDAO برای اتصال به cassandra با java
import com.datastax.driver.core.*; /** * this class is use to handel all interaction between application and data base */ public class CassandraDAO { private static Cluster cluster; private static Session session; private final static String KEYSPACE_NAME = "example_keyspace"; private final static String REPLICATION_STRATEGY = "SimpleStrategy"; private final static int REPLICATION_FACTOR = 1; private final static String TABLE_NAME = "Employe_table"; private static void openCassandra() throws Exception { // Setup a cluster to your local instance of Cassandra cluster = Cluster.builder() .addContactPoint("192.168.174.141") .withPort(9042) .build(); // Create a session to communicate with Cassandra session = cluster.connect(); System.out.println("Cassandra is Connecting..."); } private static void closeCassandra() throws Exception { session.close(); cluster.close(); System.out.println("Cassandra is closing... \n"); } public static void createKeyspace () throws Exception { openCassandra(); // Create a new Keyspace (database) in Cassandra String createkeyspace1 = String.format( "CREATE KEYSPACE IF NOT EXISTS %s WITH replication = " + "{'class':'%s','replication_factor':%s};", KEYSPACE_NAME, REPLICATION_STRATEGY, REPLICATION_FACTOR ); session.execute(createkeyspace1); System.out.println("create Keyspace..."); closeCassandra(); } public static void createTable () throws Exception { openCassandra(); // Create a new table in our Keyspace String createTable = String.format( "CREATE TABLE IF NOT EXISTS %s.%s " + "" + "(emp_id int, emp_city text, emp_name text, emp_phone text, emp_sal int, " + "PRIMARY KEY ((emp_id , emp_city), emp_name)) " + "WITH CLUSTERING ORDER BY (emp_name ASC);", KEYSPACE_NAME, TABLE_NAME ); session.execute(createTable); System.out.println("create column family..."); closeCassandra(); } public static void insertEmploye(EmployePOJO employe) throws Exception { openCassandra(); // Create an insert statement to add a new item to our table PreparedStatement insertPrepared = session.prepare(String.format( "INSERT INTO %s.%s (emp_id, emp_city, emp_name, emp_phone, emp_sal) values (?, ?, ?, ?, ?)", KEYSPACE_NAME, TABLE_NAME )); int id =employe.getEmploye_id(); String city= employe.getEmploye_city(); String name= employe.getEmploye_name(); String phone=employe.getEmploye_phone(); int sal=employe.getEmploye_sal(); // Bind the data to the insert statement and execute it BoundStatement insertBound = insertPrepared.bind(id,city,name,phone,sal); session.execute(insertBound); System.out.println("insert data..."); closeCassandra(); } public static void getEmploye(int id, String city) throws Exception{ openCassandra(); // Create a select statement to retrieve the item we just inserted PreparedStatement selectPrepared = session.prepare(String.format( "SELECT emp_id, emp_city, emp_name FROM %s.%s WHERE emp_id = ? and emp_city = ?", KEYSPACE_NAME, TABLE_NAME)); // Bind the id to the select statement and execute it // UUID id = UUID.fromString("1e4d26ed-922a-4bd2-85cb-6357b202eda8"); BoundStatement selectBound = selectPrepared.bind(id,city); ResultSet resultSet = session.execute(selectBound); // Print the retrieved data resultSet.forEach(row -> System.out.println( String.format("id: %s, name: %s", row.getInt("emp_id"), row.getString("emp_name")))); closeCassandra(); } public static void removeEmploye(EmployePOJO employe) throws Exception { } public static void updateEmploye(EmployePOJO employe) throws Exception{ } }
کلاس MainClass برای اجرای برنامه
public class MainClass { public static void main(String[] args) throws Exception { System.out.println ("Hello Cassandra"); EmployePOJO employe1= new EmployePOJO(2,"tehran","habibi","0912",6000); CassandraDAO.createKeyspace(); CassandraDAO.createTable(); CassandraDAO.insertEmploye(employe1); CassandraDAO.getEmploye(2,"tehran"); } }
فایل مثال ارائه شده که با IntelliJ IDEA (یک IDE معروف برای جاوا) توسعه داده شده است برای دانلود و استفاده خوانندگان محترم در زیر ضمیمه شده است.
دانلود فایل برنامه اتصال به کاساندرا با جاوا cassandrajava.tar
منابع:
http://docs.datastax.com/en/developer/java-driver/3.1/
آدرس کانال تلگرام سایت بیگ دیتا:
آدرس کانال سروش ما:
https://sapp.ir/bigdata_channel
جهت دیدن سرفصل های دوره های آموزشی بر روی اینجا کلیک کنید.
بازدیدها: 2421
برچسباتصال IntelliJ IDEA به کاساندرا اتصال به cassandra با java اتصال به cassandra با جاوا اتصال به خوشه پردازشی کاساندرا اتصال به کاساندرا اتصال به کاساندرا با جاوا جاوا کاساندرا کسندرا
همچنین ببینید
استخراج کلمات کلیدی از متن فارسی با روش های آماری TF-IDF
بعد از مراحل نرمال سازی، حذف کلمات ایستا، تکه کردن کلمات درون متن و ریشه …
فیلم آموزش کاربردی IntelliJ IDEA
در مطالب قبل در چندین قسمت به آموزش ابزار توسعه فدرتمند IntelliJ IDEA پرداختیم. در …