Introduction to MySQL

Introduction to MySQL

MySQL एक Database Management System होता है। एक Database Management System एक software होता है जिससे आप data को store और manage करते है। यह data कुछ भी हो सकता है। ये कुछ व्यक्तियों के नाम और address हो सकते है। या फिर किसी company की sales और production के बारे में information हो सकती है।

चाहे data कुछ भी और किसी भी प्रकार का हो इसे store करने और access करने के लिए आपको एक database management system की आवश्यकता होती है।

MySQL databases relational होते है। एक relational database पुरे data को एक ही table में store करने के बजाय अलग अलग tables में store करता है। और फिर इन tables के बीच में relation identify करके उसके base पर queries को process करता है। Speed पाने के लिए database structures को physical file के रूप में organize किया जाता है।

MySQL से interact करने के लिए SQL को यूज़ किया जाता है। SQL (Standard Query Language) databases के साथ काम करने के लिए सबसे common और standard language है। आप चाहे तो SQL को directly भी यूज़ कर सकते है। और आप चाहे तो इसे किसी programming language या scripting language के साथ भी यूज़ कर सकते है।

MySQL एक Open Source software है। यानि की ये software आपको free में available है और आप इसको अपनी need के according modify भी कर सकते है। आपका इसका code download कर सकते है और उसे edit कर सकते है।

MySQL database server बहुत ही fast, reliable और आसानी से यूज़ किया जाने वाला होता है। यदि आपको ऐसे ही DBMS की तलाश है तो आपको इसे ही यूज़ करना चाहिए।

MySQL Client/Server या embedded environment में काम कर सकता है। MySQL multi threaded SQL server को support करता है जो की बहुत से अलग अलग environments में काम कर सकता है।

कई बार ऐसा होता है की बहुत से students MySQL और SQL में confuse हो जाते है, और MySQL को भी एक language समझ लेते है। लेकिन मैं आपको बताना चाहूँगा की ऐसा बिलकुल नहीं है। SQL एक language है। इसे Structured Query Language कहते है।

ये language database के साथ interact करने के लिए यूज़ की जाती है। MySQL SQL से बिलकुल अलग है। MySQL एक software है। MySQL एक complete Database Management System है।

Features of MySQL

  • MySQL को C और C++ में बनाया गया है।
  • MySQL बहुत सारी programming languages और scripting language के साथ work करती है। जैसे की Java और PHP आदि।
  • MySQL की performance बहुत high होती है क्योंकि इसका storage engine बहुत unique है।
  • MySQL से बहुत सारे अलग अलग platforms पर काम किया जा सकता है।
  • MySQL में multi layered server design use की गयी है।
  • इसे पूरी तरह multi threaded design किया गया है। इसलिए यदि एक से अधिक computers available है तो MySQL उनको आसानी से यूज़ कर सकता है।
  • MySQL अलग अलग तरह के transnational और non transnational engines provide करता है।
  • इसे बहुत सारे compilers के साथ test किया गया है।
  • MySQL portable है। Portability के लिए इसमें CMake का यूज़ किया जाता है। लेकिन इसका use सिर्फ MySQL 5.5 और उसके बाद आने वाले versions में ही किया गया है।
  • MySQL में अब तक कोई भी memory leak नहीं पाया गया है। इसे purify के साथ test किया जाता है। जो की एक famous leak tester है।
  • MySQL binary tree disk tables यूज़ करता है जो की बहुत fast होती है।
  • आप आसानी से दूसरे storage engines add कर सकते है।
  • इसमें memory allocation system thread based होता है और बहुत ही fast होता है।
  • MySQL joins को बहुत ही fast execute करता है। इसके लिए MySQL optimized nested loop join यूज़ करता है।
  • ये in-memory hash tables को implement करता है जो की temporary tables की तरह यूज़ की जाती है।
  • MySQL SQL functions को implement करता है। ऐसा ये class library के माध्यम से करता है।
  • Client/Server environment में यह server को एक separate program की तरह प्रस्तुत करता है।

Architecture of MySQL

MySQL database server एक Client/Server architecture यूज़ करता है। इस तरह के architecture में एक server होता है। ये server कुछ services provide करता है जैसे की MySQL के case में data का access provide करना, data को fetch करके present करना और data पर कई तरह की processing करना आदि।

Server के अलावा इस तरह के architecture में clients भी होते है जो की इन services को यूज़ करते है। Server और clients के बीच connection communication protocols के द्वारा establish किया जाता है। इन सब के बारे में नीचे explain किया जा रहा है।

  • Server – mysqld MySQL का database server program है। Server data के access को control करता है। MySQL database server data के logical representation (tables) और physical representation (data on disk) के बीच में mapping को handle करता है। MySQL server multi threaded है। ये कई clients के साथ में connection establish करता है और उन्हें service provide करता है।
  • Clients – Clients वो program होते है जो server से communicate करते है। पहले client server के साथ connection establish करता है उसके बाद ही वह database के साथ कुछ tasks perform कर सकता है। किसी भी computer को client बनाने के लिए आप उस पर MySQL command prompt client program install कर सकते है। एक ही computer server भी हो सकता है और client भी हो सकता है।
  • Communication protocols – MySQL clients और server एक दूसरे के साथ interact करने के लिए कुछ communication protocols का इस्तेमाल करते है। ये protocols clients और server के बीच में bridge का काम करते है। इनके बारे में नीचे दिया जा रहा है।
    • TCP/IP – Transmission Control Protocol data और server के बीच में connection establish करता है और data को pass करता है।
    • Unix Socket – ये protocol एक system की ही कई processes के बीच में bi-directional communication establish करता है।