โค้ดยิม/หลักสูตรจาวา/All lectures for TH purposes/ความรู้ขั้นสูงของฐานข้อมูล

ความรู้ขั้นสูงของฐานข้อมูล

มีอยู่

1.1 หลักการสร้างภาคบรรยาย

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

มีเหตุผลหลายประการสำหรับแนวทางนี้ แต่สาเหตุหลักคือทรัพยากรที่มีค่าที่สุดและขาดหายไปมากที่สุดในกระบวนการเรียนรู้คือแรงจูงใจของนักเรียน

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

หากคุณมีส่วนร่วมในการศึกษาด้วยตนเองในวัยผู้ใหญ่ บ่อยครั้งที่คุณต้องรวมการเรียนกับงาน งานบ้าน การดูแลเด็กหรือพ่อแม่ผู้สูงอายุ และที่นี่บ่อยครั้งการศึกษาจะไม่มีความสำคัญเป็นอันดับแรก

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

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

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

มีผู้สำเร็จการศึกษาเพียง 40% เท่านั้นที่ทำงานในสาขาพิเศษที่พวกเขาได้รับจากมหาวิทยาลัย ลองคิดดูสิ คนเรียนมา 5-6 ปี และ 60% ตัดสินใจไม่ทำงานเฉพาะทาง ใช่ ความรู้ที่ได้รับบางส่วนยังคงใช้อยู่ แต่ประมาณครึ่งหนึ่งยังไม่ได้ใช้

นี่คือคุณค่าของแนวคิด Fail Fast - เพื่อให้เข้าใจโดยเร็วที่สุดว่าอาชีพบางอย่าง คนบางคน หรืองานอดิเรกบางอย่างไม่เหมาะกับคุณ และอย่าเสียเวลาและพลังงานไปกับสิ่งเหล่านี้ ในระยะยาว นี่เป็นกลยุทธ์ที่ดีมาก

1.2 SQL และทั้งหมด ทั้งหมด ทั้งหมด

เราจบการแนะนำเชิงปรัชญาแล้ว กลับไปเรียนรู้ SQL กันดีกว่า

ภาษา SQL และ DBMS นั้นแตกต่างกันเล็กน้อย ภาษา SQL นั้นเป็นมาตรฐานชนิดหนึ่งที่อธิบายถึงสิ่งที่สามารถเขียนในแบบสอบถาม SQL ไปยังฐานข้อมูล DBMS ได้ดำเนินการตามมาตรฐานนี้แล้ว DBMS บางตัวใช้ฟังก์ชั่นบางอย่างของมาตรฐาน, ที่สอง - อื่น ๆ และอื่น ๆ

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

Java ก็มีสถานการณ์ที่คล้ายกันเช่นกัน หากโปรแกรม Java เขียนขึ้นภายใต้ Windows แสดงว่าโปรแกรมนั้นไม่สามารถทำงานบน Linux ได้ตามปกติ เพื่อแก้ปัญหานี้ Java แนะนำคลาสพิเศษที่มีการใช้งานที่แตกต่างกันสำหรับระบบปฏิบัติการที่แตกต่างกัน ตัวอย่าง: คลาสพาธที่มีการใช้งาน WindowsPath, LinuxPath เป็นต้น

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

ในภาษา SQL มีมาตรฐานหลายเวอร์ชันซึ่งตั้งชื่อตามปี:

  • SQL:1999
  • SQL:2003
  • SQL:2006
  • SQL:2011
  • SQL:2016
  • SQL:2019

ข่าวดี : เราจะไม่ศึกษามาตรฐานเหล่านี้ ประการแรก จะใช้เวลาหลายปีในการศึกษาและเชี่ยวชาญทั้งหมดนี้ และประการที่สอง มาตรฐานเหล่านี้เหมือนกับเวอร์ชันของ Android: เพียง 5-10 ปีหลังจากการเปิดตัว มาตรฐานดังกล่าวก็แพร่หลายอย่างกว้างขวาง

ในฐานข้อมูลที่มีข้อมูลจำนวนมาก ผู้คนต้องการความน่าเชื่อถือและความเสถียร “ใช้งานได้ อย่าแตะ” คือคำขวัญของทุกคนที่ทำงานกับฐานข้อมูล และการเปลี่ยนไปใช้ฐานข้อมูลเวอร์ชันใหม่จะทำทุกๆ 5 ปี เมื่อข้อดีทั้งหมดของโซลูชันดังกล่าวชัดเจนอยู่แล้ว

1.3 เกินวงเล็บ

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

ฐานข้อมูลที่ทันสมัยเกือบทั้งหมดรองรับ:

1 ภาษาขั้นตอน (PL)

RDBMS รองรับความสามารถในการเขียนขั้นตอนและฟังก์ชันที่ทำงานบน SQL Server และสามารถทำสิ่งต่างๆ ได้มากมายกับข้อมูลระหว่างการสืบค้น ตัวอย่างเช่น เมื่อฉันเขียนข้อความค้นหา PL SQL ไปยังเซิร์ฟเวอร์ Oracle ซึ่งตอบสนองต่อข้อความค้นหาที่สร้าง ... หน้า HTML ที่มีข้อมูล ใช่คุณสามารถ.

2 เหตุการณ์ (ทริกเกอร์)

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

3 การบันทึก

ฐานข้อมูลสมัยใหม่พยายามที่จะทำงานเร็วมาก ดังนั้นบ่อยครั้งที่การเปลี่ยนแปลงทั้งหมด (แถวใหม่ แถวที่ถูกลบ แถวที่เปลี่ยนแปลง) จะถูกเขียนลงในไฟล์พิเศษที่เรียกว่าล็อกก่อน และหลังจากนั้นไม่นาน เซิร์ฟเวอร์ SQL จะรวมบันทึกเหล่านี้กับฐานข้อมูลหลัก

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

4 ปลั๊กอิน

สำหรับ DBMS รวมถึงโปรแกรมต่างๆ คุณสามารถเขียนปลั๊กอินของคุณเองได้ ปลั๊กอินดังกล่าวอนุญาตให้คุณเพิ่มประเภทข้อมูลเฉพาะ ฟังก์ชันสำหรับการทำงานกับพวกเขา หรือเปลี่ยนลักษณะการทำงานมาตรฐานของ DBMS สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อคุณทำงานกับฐานข้อมูลโอเพ่นซอร์สและมีข้อบกพร่องบางอย่าง

5 งานแบบกระจาย (คลัสเตอร์)

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

6 การแบ่งส่วน

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

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

ตัวอย่างเช่น เราตัดสินใจแบ่งข้อมูลทั้งหมดในตารางตามปี: สำหรับปี 2019 - หนึ่งตาราง สำหรับข้อมูลปี 2020 - ตารางที่สอง เป็นต้น นี่จะเป็นการชาร์ดในแนวนอน

7 ผลักสิ่งที่ไม่ผลัก

ในขั้นตอนหนึ่งในการพัฒนาฐานข้อมูลเริ่มเพิ่มตรรกะทางธุรกิจมากขึ้นเรื่อย ๆ ทุกอย่างเริ่มต้นด้วยขั้นตอน ฟังก์ชัน การสร้างหน้าเว็บโดยเซิร์ฟเวอร์ และลงเอยด้วยการเพิ่มการสนับสนุนสำหรับภาษายอดนิยมเกือบทั้งหมดให้กับ DBMS: Python, JavaScript และแม้แต่ Java และ C ++

ฟังดูดีจนกว่าคุณจะเริ่มลงรายละเอียด: คุณต้องการเขียนตรรกะทางธุรกิจของเว็บแอปพลิเคชันของคุณใน Java หรือไม่ ซึ่งจะถูกดำเนินการภายในเซิร์ฟเวอร์ SQL ที่ไม่มี JDK, ไลบรารีจาวา, เฟรมเวิร์ก, หน่วยความจำน้อย และอีกมากมาย ข้อจำกัดอื่นๆ?

ความคิดเห็น
  • เป็นที่นิยม
  • ใหม่
  • เก่า
คุณต้องลงชื่อเข้าใช้เพื่อแสดงความคิดเห็น
หน้านี้ยังไม่มีความคิดเห็นใด ๆ