การเชื่อมต่อ Java กับ MongoDB

MongoDB เป็นหนึ่งในฐานข้อมูล NoSQL ที่ได้รับความนิยมมากที่สุดซึ่งสามารถใช้งานได้อย่างง่ายดายภายใน Ruk-Com Cloud ในคู่มือนี้เราจะแสดงวิธีเชื่อมต่อ instance นี้กับแอปของคุณและดำเนินการแบบง่าย ๆ

การสร้าง environment

1. เข้าสู่บัญชี Ruk-Com Cloud ของคุณ

2. การสร้าง environment ด้วย instance MongoDB (มีอยู่ในส่วน NoSQL) แอปพลิเคชันเซิร์ฟเวอร์ที่ต้องการสำหรับการติดตั้งแอป อาจอยู่ใน Environment เดียวกันหรือแยกกันก็ได้ (ตัวอย่างเช่น เราได้เพิ่ม Tomcat 10):

คลิก Create และรอสักครู่หนึ่งเพื่อให้ Environment ของคุณปรากฏที่แดชบอร์ด

การกำหนดค่า MongoDB

1. ตรวจสอบกล่องจดหมายอีเมลของคุณ จะมีอีเมลเข้ามาพร้อมรายละเอียดฐานข้อมูล

2. คลิกปุ่ม Open in browser สำหรับ MongoDB node ภายในแดชบอร์ดของคุณหรือใช้ URL การเข้าถึงจากอีเมลเพื่อเข้าถึงพาเนลฐานข้อมูลของแอดมิน

เข้าสู่ระบบโดยใช้ข้อมูลจากอีเมลข้างต้น

3. สร้างฐานข้อมูลใหม่โดยป้อนข้อมูลที่ช่องกรอกข้อมูลด้านบนทางขวา แล้วกดปุ่ม Create Database

4. จากนั้นคุณต้องสร้างผู้ใช้สำหรับฐานข้อมูลนี้ – ให้เข้าไปที่ Web SSH ของ instance Mongodb และเข้าใช้ mongodb โดยใช้คำสั่ง

 mongo -u 'admin' -p '[ใส่รหัสผ่านในตรงนี้]'

5. หลังจากนั้นเลือก database โดยใช้คำสั่ง

use admin

จากนั้นพิมพ์คำสั่งต่อไปนี้:

db.createUser({ user: "user_name", pwd: "password", roles:[{ role: "readWrite", db: "db_name"}]})

โดยที่:

  • user_name – ชื่อที่ต้องการของผู้ใช้งานฐานข้อมูลใหม่ของคุณ
  • password – รหัสผ่านสำหรับผู้ใช้
  • db_name – ชื่อของฐานข้อมูลที่ผู้ใช้ที่สร้างขึ้นใหม่จะได้รับสิทธิ์ในการอ่าน / เขียน

5. ตอนนี้กลับไปที่แดชบอร์ด จะเห็นได้ว่ามี user ถูกสร้างแล้ว

หมายเหตุ :
คุณสามารถระบุข้อมูลการเชื่อมต่อที่จำเป็นทั้งหมดได้โดยตรงในโค้ดของคุณ (แอปพลิเคชัน) ในตัวอย่างที่กำหนดเราใส่การตั้งค่าเหล่านี้ลงในไฟล์ ซึ่งอ่านโดยแอปพลิเคชันทดสอบของเรา (นำเสนอในส่วนคำแนะนำถัดไป)

คลิกปุ่ม Config ถัดจากแอปพลิเคชันเซิร์ฟเวอร์ใน Environment ที่เกี่ยวข้อง (ในกรณีของเรา คือ Tomcat 10)

ในแท็บที่เปิด สร้างไฟล์ mydb.cfg ใหม่ภายในโฮมไดเร็กทอรีและระบุสิ่งต่อไปนี้

host={db_access_url}  
dbname={db_name}  
user={user_name}  
password={password}

โดยที่

  • {db_access_url} – ลิงก์ไปยังพาเนลฐานข้อมูลของแอดมิน (ค้นหาในอีเมลที่เกี่ยวข้องหรือคลิก Open in browser ถัดจาก MongoDB node และคัดลอกจากแถบ address) โดยไม่มีส่วน https://
  • {db_name} – ชื่อของฐานข้อมูลที่สร้างขึ้น (ในกรณีของเรา คือ mongodb-connect)
  • {user_name} – ชื่อผู้ใช้งานฐานข้อมูล ที่คุณกำหนดให้กับฐานข้อมูลนี้ (ในกรณีของเรา คือ dbuser)
  • {password} – รหัสผ่านของผู้ใช้ที่เกี่ยวข้อง

อย่าลืมที่จะ Save การเปลี่ยนแปลง

การ Deploy แอปพลิเคชัน

1. ตอนนี้คุณสามารถ deploy โปรเจ็กต์กับ Env ที่เตรียมไว้

ตัวอย่าง นี่คือโค้ดของแอปพลิเคชันของเราซึ่งมีวัตถุประสงค์เพื่อทดสอบการเชื่อมต่อกับ MongoDB node

MongoManager.java :

package example;
import com.mongodb.*;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.Properties;

public class MongoManager {

    static String host, dbname, user, password;

    public void addData(int repeats) {
        try {

            Properties prop = new Properties();
            prop.load(new FileInputStream(System.getProperty("user.home") + "/mydb.cfg"));

            host = prop.getProperty("host").toString();
            dbname = prop.getProperty("dbname").toString();
            user = prop.getProperty("user").toString();
            password = prop.getProperty("password").toString();

            System.out.println("host: " + host + "\ndbname: " + dbname + "\nuser: " + user + "\npassword: " + password);

            MongoCredential credential = MongoCredential.createCredential(user, dbname, password.toCharArray());
            MongoClient mongoClient = new MongoClient(new ServerAddress(host), Arrays.asList(credential));

            MongoDatabase db = mongoClient.getDatabase(dbname);

            try {
                db.getCollection("mycollection");
            } catch (Exception e) {
                db.createCollection("mycollection", null);
                System.out.println("Repeats: " + repeats);
                for (int i = 1; i <= repeats; i++) {
                    Document document = new Document("data", new Date());
                    db.getCollection("mycollection").insertOne(document);
                    System.out.println("INFO: row added " + document);
                }
            } finally {
                mongoClient.close();
            }
        } catch (IOException ex) {
        }
    }
}

2. แอปพลิเคชันสามารถ deploy โดยใช้ Ruk-Com Deployment Manager (โดยมีไฟล์ /URL ในเครื่องเป็น source) หรือ Maven (สำหรับการ deploy จาก GIT / SVN)

สำหรับการทดสอบคุณสามารถลองใช้โปรเจ็กต์ mongoclient.war ที่พร้อมใช้งานของเราซึ่งมีไดรเวอร์ตัวเชื่อมต่อที่เหมาะสมอยู่แล้ว (หรือดาวน์โหลด link # sources และปรับแต่งตามต้องการ)

หมายเหตุ :
ในการเชื่อมต่อโปรเจ็กต์ของคุณกับฐานข้อมูล MongoDB ต้องอัปโหลดไลบรารี mongo-java-driver.jar ที่เหมาะสมไปยังโฟลเดอร์ webapps/{app_context}/WEB-INF/lib ของเซิร์ฟเวอร์แอปของคุณ ด้วยแอปพลิเคชันที่ deploy

3. ด้วยเหตุนี้คุณจะได้รับ Environment ที่คล้ายกับ Environment ด้านล่าง:

ตรวจสอบการเชื่อมต่อ

1. คลิก Open in Browser ถัดจาก Env พร้อมกับแอปตัวอย่างของเราที่ deploy จะเห็นหน้าต่างใหม่เปิดขึ้นพร้อมกับแสดงแบบฟอร์ม MongoDB Manager 

mongo manager application

พิมพ์จำนวนแถวที่ต้องการ (สำหรับเพิ่มลงในฐานข้อมูลที่เกี่ยวข้อง) ลงในช่องที่เหมาะสมแล้วคลิกปุ่ม Insert rows

2. รอสักครู่จนกว่าเพจจะหยุดอัปเดตและกลับไปที่พาเนล MongoDB ของแอดมิน

ไปที่ฐานข้อมูล mongodb-connect และตรวจสอบคอลเลกชัน mycollection ใหม่ภายใน ซึ่งควรมีจำนวน record ที่ระบุไว้ข้างต้น

อย่างที่เห็นทุกอย่างทำงานได้ดีเนื่องจากแอปพลิเคชันสามารถเชื่อมต่อกับฐานข้อมูลของเราได้ ตอนนี้สามารถใช้พาเนลแอดมินเพื่อดำเนินการอื่น ๆ ที่จำเป็นกับฐานข้อมูลของคุณในลักษณะเดียวกัน

สิ่งที่ควรรู้

เอกสารของ Ruk-Com ยังมีคู่มือเสริมสำหรับเซิร์ฟเวอร์ MongoDB ซึ่งอาจเป็นประโยชน์สำหรับผู้ใช้ที่คุ้นเคยและมีประสบการณ์:

  • ตั้งค่า link # Master-Slave Replication เพื่อเพิ่มประสิทธิภาพฐานข้อมูลและการเข้าถึงข้อมูลที่ประกอบด้วย
  • ตรวจสอบความปลอดภัยของข้อมูลด้วยการปรับ Backups Scheduling ซึ่งจะช่วยป้องกันการสูญหายของข้อมูลและช่วยให้สามารถกู้คืนข้อมูลได้ในกรณีที่เซิร์ฟเวอร์ล้มเหลวโดยไม่คาดคิด
  • เรียนรู้วิธีสร้าง Remote Access ไปยังฐานข้อมูล เพื่อรับความสามารถในการทำงานกับไคลเอนต์แอปพลิเคชันที่เหมาะสม แม้ว่าจะไม่จำเป็นต้องลงชื่อเข้าใช้แดชบอร์ดของเราก็ตาม
  • อ่านคู่มือ Dump Import/Export การถ่ายโอนข้อมูลเพื่อค้นหาวิธีสำรองข้อมูลของคุณด้วยตนเองภายใน Dump ไฟล์ จากนั้นเรียกคืนจากการ Dump ที่สร้างไว้ก่อนหน้านี้หากจำเป็น