ฉันแค่อยากรู้แนวคิดของการรวมการเชื่อมต่อฐานข้อมูลและวิธีการบรรลุผล
ฉันแค่อยากรู้แนวคิดของการรวมการเชื่อมต่อฐานข้อมูลและวิธีการบรรลุผล
คำตอบ:
การรวมการเชื่อมต่อฐานข้อมูลเป็นวิธีการที่ใช้เพื่อให้การเชื่อมต่อฐานข้อมูลเปิดอยู่เพื่อให้ผู้อื่นสามารถใช้ซ้ำได้
โดยปกติแล้วการเปิดการเชื่อมต่อฐานข้อมูลเป็นการดำเนินการที่มีราคาแพงโดยเฉพาะอย่างยิ่งหากฐานข้อมูลอยู่ในระยะไกล คุณต้องเปิดเซสชันเครือข่ายตรวจสอบสิทธิ์ตรวจสอบการอนุญาตและอื่น ๆ การรวมกลุ่มช่วยให้การเชื่อมต่อใช้งานได้ดังนั้นเมื่อมีการร้องขอการเชื่อมต่อในภายหลังหนึ่งในการเชื่อมต่อที่ใช้งานอยู่จะถูกใช้ตามความต้องการเพื่อที่จะต้องสร้างการเชื่อมต่อใหม่
อ้างถึงแผนภาพต่อไปนี้สำหรับสองสามย่อหน้าถัดไป:
+---------+
| |
| Clients |
+---------+ |
| |-+ (1) +------+ (3) +----------+
| Clients | ===#===> | Open | =======> | RealOpen |
| | | +------+ +----------+
+---------+ | ^
| | (2)
| /------\
| | Pool |
| \------/
(4) | ^
| | (5)
| +-------+ (6) +-----------+
#===> | Close | ======> | RealClose |
+-------+ +-----------+
ในรูปแบบที่ง่ายที่สุดมันเป็นเพียงการเรียก API ที่คล้ายกัน (1) กับการเรียก API การเชื่อมต่อแบบเปิดซึ่งคล้ายกับ "ของจริง" ขั้นแรกนี้จะตรวจสอบพูลสำหรับการเชื่อมต่อที่เหมาะสม (2) และหากมีให้ใช้งานจะมอบให้กับไคลเอ็นต์ มิฉะนั้นจะมีการสร้างรายการใหม่ (3)
A "การเชื่อมต่อที่เหมาะสม" เป็นเพียงหนึ่งที่มีอยู่แล้วมีการเข้าถึงฐานข้อมูลโดยใช้ข้อมูลที่ถูกต้อง (เช่นฐานข้อมูลเช่นข้อมูลประจำตัวและสิ่งที่อาจเป็นไปได้อื่น ๆ )
ในทำนองเดียวกันมีการเรียก API แบบปิด (4) ซึ่งไม่ได้เรียกการเชื่อมต่อแบบปิดจริงแต่เป็นการเชื่อมต่อลงในพูล (5) เพื่อใช้ในภายหลัง ในบางจุดการเชื่อมต่อในสระว่ายน้ำอาจถูกปิดจริง (6)
นั่นเป็นคำอธิบายที่ค่อนข้างง่าย การใช้งานจริงอาจสามารถจัดการการเชื่อมต่อไปยังเซิร์ฟเวอร์หลายเครื่องและบัญชีผู้ใช้หลายบัญชีได้พวกเขาอาจจัดสรรการเชื่อมต่อพื้นฐานบางส่วนไว้ล่วงหน้าเพื่อให้บางส่วนพร้อมใช้งานทันทีและอาจปิดการเชื่อมต่อแบบเก่าเมื่อรูปแบบการใช้งานเงียบลง
รูปภาพพูดได้เป็นพันคำ (paxdiablo ให้คำอธิบายที่ยอดเยี่ยม):
ตามชื่อ. หากมีคนอยากว่ายน้ำเพียงไม่กี่คนก็สามารถว่ายน้ำในสระเดียวกันได้หรือไม่ที่จะสร้างสระว่ายน้ำใหม่ทุกครั้งที่มีคนเพิ่มเข้ามา เวลาและต้นทุนเป็นสิ่งสำคัญ
การรวมการเชื่อมต่อฐานข้อมูลเป็นเพียงการแคชการเชื่อมต่อกับฐานข้อมูลเพื่อให้สามารถใช้ซ้ำได้ในครั้งต่อไปเพื่อลดต้นทุนในการสร้างการเชื่อมต่อใหม่ทุกครั้งที่เราต้องการเชื่อมต่อกับฐานข้อมูล
คุณสามารถใช้ไลบรารี apache commons สำหรับการใช้งานพูลการเชื่อมต่อแบบโปร่งใส: http://commons.apache.org/dbcp/
DBCP ยังรองรับ Hibernate pool: http://www.informit.com/articles/article.aspx?p=353736&seqNum=4
แนวคิด Connection Pooling ไม่เพียง แต่ใน Java เท่านั้น แต่ยังครอบคลุมภาษาโปรแกรมอีกมากมาย การสร้างอ็อบเจ็กต์การเชื่อมต่อใหม่มีค่าใช้จ่ายสูงดังนั้นจึงมีการสร้างและดูแลการเชื่อมต่อจำนวนคงที่ในวงจรชีวิตการสร้างพูลเสมือน Java Just ( http://javajust.com/javaques.html ) ดูคำถาม 14 ในหน้านี้