Database
 sql >> डेटाबेस >  >> RDS >> Database

वर्डप्रेस – परदे के पीछे, भाग 2

इस श्रृंखला के भाग 1 में, मैंने प्रदर्शित किया कि वर्डप्रेस को स्थानीय रूप से कैसे स्थापित किया जाए और वर्डप्रेस डेटाबेस को वर्टाबेलो में कैसे आयात किया जाए। इस लेख में, हम Wordpress डेटाबेस में तालिकाओं पर करीब से नज़र डालेंगे।

WordPress डेटाबेस मॉडल और डैशबोर्ड पर एक त्वरित नज़र

पिछले भाग में, मैंने वर्डप्रेस डेटाबेस को हमारे ऑनलाइन डेटाबेस मॉडलिंग टूल में आयात किया था। रिकॉर्ड के लिए, डेटाबेस की संरचना इस प्रकार है:




वर्डप्रेस डेटाबेस मॉडल के बारे में कुछ महत्वपूर्ण तथ्य हैं जिन्हें आपको शुरू करने से पहले समझना चाहिए:

  • हर वर्डप्रेस साइट बिल्कुल उसी डेटाबेस संरचना का उपयोग करती है। इसमें 11 टेबल हैं और हर वर्डप्रेस साइट बैकग्राउंड में उनका इस्तेमाल करती है। अधिकांश वर्डप्रेस प्लगइन्स भी डेटाबेस मॉडल में बिना किसी बदलाव के डेटाबेस का उपयोग करते हैं। सभी अलग-अलग प्लगइन्स को समायोजित करने के लिए मॉडल को पर्याप्त लचीला होना चाहिए। बेशक, प्लगइन निर्माता विशिष्ट प्लगइन्स के लिए कस्टम टेबल जोड़ सकते हैं यदि डेटा संरचना काफी भिन्न है या यदि उनका प्लगइन बड़ी मात्रा में डेटा संग्रहीत करता है।
  • WordPress डेटाबेस विदेशी कुंजी बाधाओं का अभाव है . यह इस तथ्य के कारण है कि वर्डप्रेस MyISAM स्टोरेज इंजन का उपयोग करता है, जो विदेशी कुंजियों का समर्थन नहीं करता है। टेबल्स इसके चारों ओर काम करते हैं, जो असंबद्ध "विदेशी कुंजी" जैसे मूल्यों को संग्रहीत करते हैं, इसलिए डेटाबेस द्वारा विदेशी कुंजी बाधा की जांच नहीं की जाएगी। उदाहरण के लिए, post_author wp_posts तालिका wp_users टेबल.
  • अधिकांश तालिकाएं एकल स्तंभ प्राथमिक कुंजी का उपयोग करती हैं। उन्हें या तो बस "आईडी" नाम दिया गया है (wp_users और wp_posts टेबल), या meta_id /umeta_id (मेटा टेबल में:wp_postmeta , wp_commentmeta और wp_usermeta ), या तालिका नाम और प्रत्यय "_id" (अन्य सभी तालिकाएं) का संयोजन। इन नियमों का एकमात्र अपवाद है wp_term_relationships तालिका, जहां प्राथमिक कुंजी में दो विशेषताएं होती हैं:object_id और term_taxonomy_id . विशेषताएँ जो प्राथमिक कुंजी हैं या प्राथमिक कुंजी का हिस्सा हैं, वे बिगिंट (20) प्रकार के हैं। सिंगल-एट्रिब्यूट प्राइमरी कीज़ में ऑटो-इन्क्रीमेंट प्रॉपर्टी भी "हां" पर सेट होती है।

पोस्ट और पेज

वर्डप्रेस का उपयोग करने का मुख्य कारण सामग्री को बनाना और उसमें हेरफेर करना और उसे जनता के सामने प्रस्तुत करना है। इसके लिए, वर्डप्रेस हमें दो प्रकार की सामग्री प्रदान करता है:पेज और पोस्ट

पेज स्थिर सामग्री display प्रदर्शित करने के लिए उपयोग किया जाता है . वे टैग या श्रेणियों का उपयोग नहीं करते हैं और तिथि के अनुसार सूचीबद्ध नहीं हैं। साथ ही वे टिप्पणियों या सोशल मीडिया साझा करने की अनुमति नहीं देते हैं। पृष्ठों में उपपृष्ठ हो सकते हैं। हमारे बारे में पृष्ठ इस प्रकार के अच्छे उदाहरण हैं।

दूसरी ओर, पोस्ट तिथि के अनुसार सूचीबद्ध हैं और श्रेणियों . का उपयोग करके व्यवस्थित किया जा सकता है और टैग . आरएसएस फ़ीड में पोस्ट का उपयोग किया जा सकता है, उनके कालानुक्रमिक क्रम के लिए धन्यवाद। पोस्ट में "सबपोस्ट" नहीं हो सकता है, लेकिन टिप्पणियां और सोशल मीडिया शेयर संभव हैं। पोस्ट अनिवार्य रूप से ब्लॉग पोस्ट हैं। यह समझ में आता है, क्योंकि वर्डप्रेस एक ब्लॉगिंग प्लेटफॉर्म से विकसित हुआ है।

किसी भी वर्डप्रेस पेज पर सामग्री के पीछे की प्राथमिक तालिका को wp_posts :

वर्डप्रेस wp_posts पेज, पोस्ट और अटैचमेंट को स्टोर करने के लिए टेबल। हम इस तालिका को अपने पृष्ठ के मूल के रूप में देख सकते हैं, वह स्थान जहाँ अधिकांश सामग्री संग्रहीत है। यह बताना महत्वपूर्ण है कि अटैचमेंट वास्तव में डिस्क पर संग्रहीत होते हैं और wp_posts तालिका इसके बारे में अधिक जानकारी रखती है (इसे किसने और कब अपलोड किया, आदि)।

wp_posts टेबल हैं:

  • post_author - wp_users तालिका, पोस्ट के लेखक को दर्शाती है।
  • post_date - तारीख और समय जब रिकॉर्ड को टेबल में डाला गया था।
  • post_date_gmt - GMT/UTC दिनांक और समय जब तालिका में रिकॉर्ड डाला गया था।
  • post_content - पोस्ट की वास्तविक सामग्री।
  • post_title - पोस्ट का शीर्षक।
  • post_excerpt - सामग्री का सारांश।
  • post_status - वर्तमान पद की स्थिति। वर्डप्रेस 8 डिफ़ॉल्ट स्थितियों का उपयोग करता है:"प्रकाशित करें", "भविष्य", "ड्राफ्ट", "लंबित", "निजी", "ट्रैश", "ऑटो-ड्राफ्ट" और "इनहेरिट"।
  • comment_status - एक पोस्ट या पूरे पेज पर टिप्पणियों को चालू और बंद करता है। दो संभावित मान हैं:"खुला" और "बंद"।
  • ping_status - पहचानता है कि क्या कोई पोस्ट पिंगबैक और ट्रैकबैक की अनुमति देता है। जैसे comment_status , इसमें केवल "खुले" और "बंद" मान हो सकते हैं।
  • post_password - पोस्ट देखने के लिए इस्तेमाल किया जाने वाला पासवर्ड (वैकल्पिक)।
  • post_name - post_title . का मानव-पठनीय url ।
  • to_ping - यूआरएल की एक सूची वर्डप्रेस को "\ n" द्वारा सीमांकित, पिंगबैक भेजना चाहिए।
  • pinged - यूआरएल की एक सूची जिसे वर्डप्रेस ने पिंगबैक भेजा है, जिसे "\ n" द्वारा सीमांकित किया गया है।
  • post_modified - किसी पोस्ट को संशोधित करने की नवीनतम तिथि और समय।
  • post_modified_gmt - post_modified . के लिए GMT/UTC दिनांक ।
  • post_content_filtered - महंगे पोस्ट कंटेंट ट्रांसफॉर्मेशन को कैश करने के लिए प्लगइन्स द्वारा उपयोग किया जाता है।
  • post_parent - मूल पोस्ट का संदर्भ देता है।
  • guid - किसी पद के लिए वैश्विक विशिष्ट पहचानकर्ता; इसका स्थायी URL.
  • menu_order - सामग्री आदेश देने के लिए उपयोग किया जाता है।
  • post_type - रिकॉर्ड का प्रकार। इसमें "पोस्ट", "पेज", "अटैचमेंट", या उपयोगकर्ता द्वारा परिभाषित कस्टम प्रकार के मान हो सकते हैं।
  • post_mime_type - केवल post_type = attachment वाली पोस्ट के लिए परिभाषित अपलोड की गई फ़ाइलों का प्रकार . इसमें "इमेज", "एप्लिकेशन/पीडीएफ" और "एप्लिकेशन/एमएसवर्ड" जैसे मान हो सकते हैं।
  • comment_count - पोस्ट की टिप्पणियों, पिंगबैक और ट्रैकबैक की संख्या।

यहां wp_posts तालिका में "निकोला टेस्ला के बारे में" पृष्ठ जोड़ने के बाद:

जब हम wp_posts तालिका में, हम अपने पृष्ठ के कुछ संस्करण देख सकते हैं। ID = 1 . के साथ रिकॉर्ड में post_status = publish है , जिसका अर्थ है कि पोस्ट सभी के लिए दृश्यमान है। comment_status = closed और ping_status = closed यह दर्शाता है कि इस पोस्ट के लिए टिप्पणियां और पिंग अक्षम हैं।

पोस्ट और पेज पर कोई भी अतिरिक्त जानकारी wp_postmeta तालिका:

इस तालिका के कॉलम इस प्रकार हैं:

  • meta_id - तालिका की प्राथमिक कुंजी।
  • post_id - wp_posts टेबल.
  • meta_key - एक meta_value . का विवरण विशेषता।
  • meta_value - संग्रहीत वास्तविक मूल्य।

wp_postmeta तालिका वह जगह है जहां सभी जानकारी wp_posts तालिका संग्रहीत है। इसे कुंजी-मूल्य जोड़े के रूप में संग्रहीत किया जाता है, एक ऐसी तकनीक जिसे अक्सर इकाई-विशेषता-मूल्य कहा जाता है (ईएवी)। टेबल का उपयोग प्लगइन्स द्वारा कस्टम जरूरतों के लिए किया जा सकता है।

वर्डप्रेस टैक्सोनॉमी

वर्गीकरण एक फैंसी शब्द है जो मूल रूप से चीजों को एक साथ समूहित करने के लिए संदर्भित करता है। ग्रुपिंग पोस्ट के लिए वर्डप्रेस में कुछ बिल्ट-इन टैक्सोनॉमी हैं। उदाहरण के लिए, श्रेणियां और टैग बिल्ट-इन वर्डप्रेस टैक्सोनॉमी हैं। आप वर्डप्रेस में अपनी खुद की कस्टम टैक्सोनॉमी भी जोड़ सकते हैं।

टैक्सोनॉमी और उनकी शर्तें wp_terms , wp_term_taxonomy , और wp_term_relationships

wp_terms तालिका आपकी वर्डप्रेस साइट में वस्तुओं को वर्गीकृत करने के लिए उपयोग किए जाने वाले शब्दों की एक सूची संग्रहीत करती है:

इस तालिका में सभी टैग और श्रेणी के नाम हैं, साथ ही साथ हमारे कस्टम टैक्सोनॉमी के शब्द भी हैं। विशेषताएं इस प्रकार हैं:

  • term_id - तालिका की प्राथमिक कुंजी।
  • name - शब्द का नाम।
  • slug - name . का URL ।
  • term_group - शब्दों को एक साथ समूहबद्ध करने के लिए उपयोग किया जाता है।

हमारी उदाहरण साइट की सामग्री यहां दी गई है wp_terms तालिका:

टैक्सोनॉमी को शर्तें wp_term_taxonomy तालिका:

तालिका में विशेषताएँ हैं:

  • term_taxonomy_id - तालिका की प्राथमिक कुंजी।
  • term_id - wp_terms टेबल.
  • taxonomy - वर्गीकरण नाम।
  • description - उस विशेष वर्गीकरण में एक शब्द का विवरण।
  • parent - wp_terms टेबल.
  • count - wp_posts तालिका जो इस वर्गीकरण में इस शब्द का प्रयोग करती है।

wp_term_taxonomy तालिका हमें अलग-अलग टैक्सोनॉमी में एक ही शब्द का पुन:उपयोग करने में सक्षम बनाती है। ध्यान दें कि रिकॉर्ड जहां term_id = 1 . है इसमें taxonomy = category है , जबकि अन्य रिकॉर्ड में taxonomy = post_tag . है ।

wp_posts और wp_term_taxonomy टेबल, वर्डप्रेस wp_term_relationships तालिका:

ध्यान दें कि यह मॉडल की एकमात्र तालिका है जिसमें एक से अधिक विशेषताओं से बनी कुंजी है।

wp_term_relationships तालिका में निम्नलिखित विशेषताएं हैं:

  • object_id - wp_posts टेबल.
  • term_taxonomy_id - wp_term_taxonomy टेबल.
  • term_order - किसी विशिष्ट वस्तु के लिए शब्द क्रम।

हमारे यहां छह रिकॉर्ड हैं जो wp_term_taxonomy पोस्ट वाली तालिका (object_id = 6 )।

टिप्पणियां और वर्डप्रेस डेटा मॉडलिंग

हम अपने वर्डप्रेस पेज पर कुछ सामग्री डालने में कामयाब रहे। यह अच्छा है, लेकिन ज्यादातर मामलों में हम जनता से प्रतिक्रिया प्राप्त करना चाहते हैं। और वह है कमेंट फीचर की भूमिका।

पोस्ट पर टिप्पणियों को देखने के लिए, हम बस "एक टिप्पणी छोड़ें" का उपयोग कर सकते हैं या "एक्स टिप्पणी" पर क्लिक कर सकते हैं (जहां एक्स पोस्ट के लिए टिप्पणियों की संख्या के लिए खड़ा है)।

हमारी पहली पोस्ट में पहले से ही एक टिप्पणी है। जब हम इसे क्लिक करते हैं, तो हम देखेंगे कि यह पिंगबैक के कारण होने वाली एक स्वचालित टिप्पणी है। हम उस पोस्ट में एक और टिप्पणी जोड़ेंगे:

अब हम अपनी पोस्ट के लिए दो टिप्पणियाँ देखते हैं, लेकिन डेटाबेस में इसके पीछे क्या है?

आप तालिका के नाम से अनुमान लगा सकते हैं कि wp_comments टेबल का उपयोग हमारे वर्डप्रेस पेज पर टिप्पणियों को स्टोर करने के लिए किया जाता है:

विशेषताएँ अधिकतर स्व-व्याख्यात्मक होती हैं, लेकिन हम अभी भी उनमें से कुछ पर करीब से नज़र डालेंगे।

comment_post_ID wp_posts टेबल; यह दर्शाता है कि किस पोस्ट को टिप्पणियां मिली हैं। पहली टिप्पणी के लिए, हम देख सकते हैं कि यह वास्तव में पिंगबैक था और "लेखक" एक और पोस्ट है। दूसरी टिप्पणी के लिए, हम देख सकते हैं कि मैं लेखक हूँ। comment_agent पर भी ध्यान दें टिप्पणी पोस्ट करने के लिए उपयोग किए जाने वाले सिस्टम और कंप्यूटर के बारे में कुछ बुनियादी जानकारी होती है।

मॉडल में सभी तीन मेटा टेबल के पीछे मुख्य विचार डेटा को स्टोर करना है जिसे हम अपनी प्राथमिक तालिका में स्टोर नहीं करना चाहते हैं। wp_commentmeta wp_comments तालिका उसी तरह से है जैसे wp_postmeta तालिका wp_posts टेबल।

WordPress उपयोगकर्ता देखना

हमारा पेज ऑनलाइन होने के बाद कोई भी इसे देख सकता है। वर्डप्रेस उपयोगकर्ता वे हैं, जो अपनी अनुमति की स्थिति के अनुसार, हमारी साइट और इसकी सामग्री में परिवर्तन कर सकते हैं।

अब हम wp_users और wp_usermeta MySQL डेटाबेस में टेबल।

जैसा अपेक्षित था, wp_users ऊपर दी गई तालिका हमारी वर्डप्रेस साइट पर पंजीकृत सभी उपयोगकर्ताओं के लिए मूल डेटा संग्रहीत करती है। ध्यान दें कि user_pass एन्क्रिप्ट किया गया है और NewUser के पास user_activation_key है edrkusic में वह फ़ील्ड खाली है, जबकि विशेषता भरी हुई है।

जबकि विशेषताएँ wp_users तालिका वह है जिसकी हम किसी भी वर्डप्रेस साइट में अपेक्षा करते हैं, wp_usermeta तालिका का उपयोग उन मूल्यों को संग्रहीत करने के लिए किया जाता है जो किसी निश्चित परियोजना के लिए विशिष्ट हो सकते हैं:

उदाहरण के लिए, ध्यान दें कि umeta_id = 25 . वाला रिकॉर्ड “कुछ जीवनी संबंधी जानकारी” . मान शामिल है , वही पाठ जो हमने NewUser को संपादित करते समय डैशबोर्ड में टाइप किया था। user_id उस रिकॉर्ड की विशेषता का मान 2 . है , जो wp_users टेबल। जाहिर है, user_id wp_users टेबल।

वर्डप्रेस में लिंक और विकल्प

wp_links तालिका अन्य साइटों के लिंक संग्रहीत करने के लिए है:

ब्लॉगिंग युग की शुरुआत में अन्य साइटों से लिंक होना बहुत लोकप्रिय था; आजकल इसका प्रयोग कम होता जा रहा है। वर्डप्रेस संस्करण 3.5 से, लिंक प्रशासन को व्यवस्थापक इंटरफ़ेस से भी हटा दिया गया था। फिर भी, इस तालिका को पुराने संस्करणों के साथ संगतता प्रदान करने के लिए रखा गया है।

wp_options टेबल वर्डप्रेस इंस्टॉलेशन, साइट कॉन्फ़िगरेशन, थीम, प्लगइन्स और विजेट्स के बारे में डेटा स्टोर करता है:

इसका उपयोग अस्थायी कैश्ड डेटा को स्टोर करने के लिए भी किया जाता है। EAV तर्क भी इस तालिका में मौजूद है, जैसा कि wp_usermeta , wp_postmeta और wp_commentmeta . विशेषता option_name कुंजी की भूमिका निभाता है, जबकि विशेषता option_value इसका संगत मान है। तालिका में अन्य दो विशेषताएँ प्राथमिक कुंजी विशेषता हैं option_id और autoload , जो नियंत्रित करता है कि क्या कोई विकल्प स्वचालित रूप से डेटाबेस से लोड होता है।

WordPress के डेटाबेस मॉडल का मूल्यांकन करना

वर्डप्रेस के पीछे का डेटाबेस मॉडल कई अच्छे डेटाबेस डिजाइन नियमों और परंपराओं का पालन नहीं करता है। जब हम किसी विशिष्ट उद्देश्य के लिए डेटाबेस तैयार कर रहे होते हैं, तो इसकी सभी वांछित कार्यक्षमताओं को पहले से जानते हुए, हम उन सभी नियमों का पालन कर सकते हैं। लेकिन वर्डप्रेस को कुछ भी कवर करने की जरूरत है जो किसी के दिमाग में हो, इसलिए विदेशी चाबियों का त्याग करना और ईएवी का उपयोग करना कुछ ऐसा है जो किया जाना चाहिए। मैं सभी तालिकाओं में आईडी विशेषता को समान नाम दूंगा, और "विदेशी कुंजी" के साथ भी ऐसा ही करूंगा। उदाहरण के लिए, मैं post_author . का उपयोग नहीं करूंगा wp_posts तालिका, लेकिन मैं users_id के साथ रहूंगा . इसके अलावा, मुझे इस बात से सहमत होना चाहिए कि वर्डप्रेस डेटाबेस वास्तव में अपने उद्देश्य के लिए एक बेहतरीन मॉडल है।

तुम क्या सोचते हो? हमें कमेंट सेक्शन में बताएं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. समस्या डिजाइन के प्रमुख संकेतक

  2. स्नोफ्लेक डीबी और आईआरआई कार्यक्षेत्र को जोड़ना

  3. स्कीमा स्नैपशॉट के माध्यम से डेटाबेस के एकाधिक संस्करण बनाना और परिनियोजित करना

  4. बड़े डिलीट ऑपरेशंस को टुकड़ों में तोड़ें

  5. SQL सबस्ट्रिंग () फ़ंक्शन का उपयोग करके प्रो की तरह स्ट्रिंग्स को कैसे पार्स करें?