Oracle JSON Document Store
วันที่เขียน 14/6/2561 17:02:05     แก้ไขล่าสุดเมื่อ 18/4/2567 18:58:48
เปิดอ่าน: 7590 ครั้ง

รายงานสรุปเนื้อหาและการนำไปใช้ประโยชน์ จากการเข้าร่วมโครงการฝึกอบรม Oracle Excellence Academic Workshop 2018 หลักสูตร Oracle Database 12c Administration Essentials and Application Development Techniques for Enterprise Developer ในระหว่างวันที่ 26 - 27 พฤษภาคม 2561 ห้องประชุมชั้น 15 อาคาร 90 ปี มหาวิทยาลัยราชภัฎเชียงใหม่ ตามหนังสือขออนุญาตเดินทางไปราชการ เลขที่ ศธ 0523.4.8/86 ลงวันที่ 17 เมษายน 2561

Oracle JSON Document Store

          การจัดเก็บข้อมูลในรูปแบบของ JSON Document นั้น โดยปกติจะถูกจัดเก็บในรูปแบบของ NoSQL Database ซึ่งเป็นระบบฐานข้อมูลที่ใช้สำหรับระบบฐานข้อมูลที่มีขนาดใหญ่ และ อยู่ในรูปแบบกระจาย (Large and Distributed Databases) โดยรูปแบบการจัดเก็บอยู่ในรูปแบบของ Key, Value ซึ่งแต่ละข้อมูลจะถูกกำหนด Unique key เพื่อไม่ให้เกิดความซ้ำซ้อนของข้อมูล โดยใช้ Key เป็นตัวจัดการเข้าถึงข้อมูลนั้น ๆ ประโยชน์ของการจัดเก็บข้อมูลแบบ NoSQL สามารถแบ่งได้เป็น 3 ส่วนดังนี้

-  Elastic Scaling การยืดหยุ่นในการขยายการจัดเก็บข้อมูลได้มากขึ้น โดยสามารถจัดเก็บในรูปแบบของการกระจายข้อมูลที่มีหลาย ๆ โฮส ได้
-  Big Data สำหรับจัดเก็บข้อมูลที่มีขนาดใหญ่ ซึ่งระบบการจัดการฐานข้อมูลเชิงสัมพันธ์ (RDMS) ไม่สามารถรองรับได้
-  DBA Specialists เหมาะสำหรับผู้ที่ไม่จำเป็นต้องมีความเชี่ยวชาญมากในการจัดการฐานข้อมูล โดย RDMS จะต้องการผู้เชี่ยวชาญที่มีความสามารถสูงในการจัดการข้อมูล แต่ NoSQL ไม่จำเป็น

โดย NoSQL ก็จะมีข้อเสีย ซึ่งสามารถแบ่งเป็น 3 ส่วนเช่นกันคือ
-  Administration โดยที่ NoSQL ไม่มีการกำหนดผู้ดูแลระบบอย่างชัดเจน
-  Analytics and Business Intelligence ไม่เหมาะสมสำหรับการทำ ac hoc query เพราะได้ถูกออกแบบมาใช้สำหรับ Web 2.0
-  Lack of Expertise ผู้ที่เชี่ยวชาญทางด้าน NoSQL ยังมีน้อย

 ตัวอย่างการเก็บข้อมูลแบบ JSON

 

Array in JSON

ในกรณีที่ข้อมูลมีหลายชุด สามารถจัดทำเป็นข้อมูลประเภท Array ได้ โดยให้อยู่ในรูปของ [ ] และ แยกชุดข้อมูลด้วยเครื่องหมาย Comma (,)

 

ในกรณีที่มีข้อมูลที่ซับซ้อน สามารถเขียนได้ดังนี้

 

โดย Oracle Database 12c สามารถที่จะรองรับการจัดเก็บข้อมูลในรูปแบบของ JSON ได้

 

-   สามารถจัดเก็บและจัดการข้อมูลในรูปแบบของ JSON และ XML ได้
-   เข้าถึงข้อมูลโดยใช้ภาษาในการเขียนโปรแกรมได้
-   สามารถใช้คำสั่ง Query โดยใช้ JSON Path, XQuery และ SQL ได้
-   จัดการ indexing ได้
-   ไม่จำเป็นต้องเรียน SQL หรือ DBA เพิ่มเติมสำหรับนักพัฒนาซอฟต์แวร์
-   รองรับการทำงาน DevOPS paradigm

การนำเข้าข้อมูล JSON ไปยัง Oracle Database

-  สร้างตารางสำหรับจัดเก็บข้อมูล โดยชนิดของข้อมูลที่สามารถจัดเก็บ JSON ได้ คือ CLOB, BLOB และ VARCHAR2 เท่านั้น

SQL > DROP TABLE products;
SQL > CREATE TABLE products (
prod_id NUMBER NOT NULL PRIMARY KEY,
product_info CLOB,
CONSTRAINT product_info_json_chk CHECK (product_info IS JSON (STRICT)));

-   การนำเข้าข้อมูลโดยการเพิ่มข้อมูลเข้าไปทีละแถว ดังนี้

SQL>insert into products  values (2,
'{

"name" : "Cable TV Basic Service Package",
"type" : "tv",
"monthly_price" : 50,
"term_years" : 2,
"cancel_penalty" : 25,
"sales_tax" : true,
"additional_tariffs" :
[
{
"kind" : "federal tariff",
"amount" : { "percent_of_service" : 0.06 }
},
{
"kind" : "misc tariff",
"amount" : 2.25
}
]
}'
);

SQL > commit;

-   การเพิ่มข้อมูลจากการอ่านไฟล์จากภายนอก

 1) สร้างตารางสำหรับจัดเก็บข้อมูล

Create table J_PURCHASEORDER
(ID RAW(16) NOT NULL,DATE_LOADED TIMESTAMP(6) WITH TIME ZONE,
 PO_DOCUMENT CLOB CHECK (PO_DOCUMENT IS JSON));

 2) กำหนดสิทธิ์ในการอ่านข้อมูลจากโฟล์เดอร์ที่ต้องการ

CONNECT SYS/password as sysdba
CREATE OR REPLACE DIRECTORY order_entry_dir AS 'C:\LAB';
GRANT READ,WRITE ON DIRECTORY order_entry_dir TO HR;

 3) สร้างตารางสำหรับผู้ใช้ HR สำหรับการเข้าถึงข้อมูล JSON โดยระบุชื่อไฟล์ที่จะนำเข้าคือ PurchaseOrders.dmp

CONNECT hr/password
DROP TABLE json_dump_file_contents;
CREATE TABLE json_dump_file_contents (json_document CLOB)
ORGANIZATION EXTERNAL (TYPE ORACLE_LOADER DEFAULT DIRECTORY order_entry_dir
ACCESS PARAMETERS
(RECORDS DELIMITED BY 0x'0A'
FIELDS (json_document CHAR(5000)))
LOCATION (order_entry_dir:'PurchaseOrders.dmp'))
PARALLEL;

 4) เพิ่มข้อมูลเข้าไปในตาราง j_purchaseorder ที่ได้สร้างไว้

INSERT INTO j_purchaseorder
SELECT SYS_GUID(), SYSTIMESTAMP, json_document FROM json_dump_file_contents
WHERE json_document IS JSON;
COMMIT;

 -   การ Query ข้อมูลจาก JSON Table สามารถทำได้ดังตัวอย่างต่อไปนี้

SELECT
JSON_VALUE(PO_DOCUMENT ,'$.PONumber') PO,
JSON_VALUE(PO_DOCUMENT ,'$.Reference') REFERENCE,
JSON_VALUE(PO_DOCUMENT ,'$.CostCenter') COSTCNTER,
JSON_VALUE(PO_DOCUMENT ,'$.ShippingInstructions.name') NAME
from J_PURCHASEORDER
where JSON_VALUE(PO_DOCUMENT ,'$.PONumber') IN (1600,1700);

     ซึ่งจะปรากฎผลลัพธ์ดังรูปต่อไปนี้

       

คำสำคัญ :
กลุ่มบทความ :
หมวดหมู่ :
แชร์ :
https://erp.mju.ac.th/acticleDetail.aspx?qid=804
ความคิดเห็นทั้งหมด (0)
ไม่มีข้อมูลตามเงื่อนไขที่ท่านกำหนด
รายการบทความการแลกเปลี่ยนเรียนรู้หมวดหมู่ : วิทยาศาสตร์ เทคโนโลยี
ความรู้จากการเข้าร่วมอบรม/สัมมนา/ประชุมวิชาการ » การเผยแพร่ความรู้ที่ได้จากการเข้าร่วมประชุมวิชาการระดับชาติวิจัยรำไพพรรณี ครั้งที่ 17 เนื่องในวโรกาสคล้ายวันพระราชสมภพสมเด็จพระนางเจ้ารำไพพรรณี ครบ 119 ปี เรื่อง “งานวิจัยและนวัตกรรมสู่การพัฒนาคุณภาพชีวิตด้วยโมเดลเศรษฐกิจ BCG Bio-Circular-Green Economy”
ตามที่คณะวิทยาศาสตร์ ได้อนุญาติให้ข้าพเจ้า นางอัจฉรา แกล้วกล้า ตำแหน่ง ผู้ช่วยศาสตราจารย์ เข้าร่วมการประชุมวิชาการระดับชาติวิจัยรำไพพรรณี ครั้งที่ 17 เนื่องในวโรกาสคล้ายวันพระราชสมภพสมเด็จพระนางเจ้...
  บทความการแลกเปลี่ยนเรียนรู้ทั่วไป   วิทยาศาสตร์ เทคโนโลยี
ผู้เขียน อัจฉรา แกล้วกล้า  วันที่เขียน 31/3/2567 11:09:58  แก้ไขล่าสุดเมื่อ 18/4/2567 10:44:10   เปิดอ่าน 35  ครั้ง | แสดงความคิดเห็น 0  ครั้ง