मैं थ्रेडेड टिप्पणियों में सहायता के लिए मेरे आवेदन में PostgreSQL के Ltree module का उपयोग करने पर विचार कर रहा हूं। मैं थ्रेडेड टिप्पणियों के लिए उपयोग करने के लिए थोड़ी देर के लिए इसे खा रहा हूं। मुझे लगता है कि यह उन मामलों के साथ मदद करेगा जहां आपको नोड और उसके बच्चों को अपडेट करने की आवश्यकता है, जैसे कि जब आप कोई टिप्पणी और उसके उत्तरों को छिपाना चाहते हैं।क्या PostgreSQL के Ltree मॉड्यूल थ्रेडेड टिप्पणियों के लिए एक अच्छा फिट है?
मैं ltree (या ऐसा कुछ) सोच रहा हूं, यह उपयोगी होगा अगर यह एक पारंपरिक आसन्नता सूची ("comment_id"/"parent_comment_id") के साथ मिलकर उपयोगी हो।
- , आप हैं या आप, ltree का इस्तेमाल किया है:
ltree का उपयोग कर में डुबकी लेने से पहले, मैं कुछ चीजें सोच रहा हूँ? क्या यह "उत्पादन तैयार" कह सकता है?
- यदि हां, तो हल करने के लिए आप किस समस्या का उपयोग करते थे? क्या यह अच्छा काम करता है?
- क्या आपको लगता है कि यह थ्रेडेड टिप्पणी प्रणाली के लिए एक अच्छा फिट है?
- यदि आपने इसका इस्तेमाल किया, तो आपने पथ के "पाठ" भाग के लिए क्या उपयोग किया? क्या आपने डीएमओजेड उदाहरण की तरह कुछ स्थापित किया है, तो वे "टॉप.एस्ट्रोनोमी। कॉस्मोलॉजी" का उपयोग करते हैं या इसे प्राथमिक कुंजी "1.403.29.5" जैसे किसी आधार पर आधार देते हैं?
- क्या ऐसा करने का कोई बेहतर तरीका है? मैं एक नेस्टेड सूची दृष्टिकोण का उपयोग करके थोड़ा परेशान हूं - मैंने जो कुछ भी पढ़ा है, वह सुझाव देता है कि यह अद्यतन या इन्टरनेट के साथ गर्म नहीं है (क्या आपको पूरी चीज़ को फिर से व्यवस्थित नहीं करना है?)। मैं एक सीएस प्रमुख भी नहीं हूं और इस तरह की डेटा संरचना भविष्य में कुछ भूल सकती है। क्या कोई टिप्पणी के लिए नेस्टेड सूचियों का उपयोग कर रहा है या ऐसा कुछ है?
अगर यह किसी भी मदद की है, यहाँ स्कीमा मैं विचार कर रहा हूँ है:
:CREATE TABLE comments (
comment_id SERIAL PRIMARY KEY,
parent_comment_id int REFERENCES comments(comment_id) ON UPDATE CASCADE ON DELETE CASCADE,
thread_id int NOT NULL REFERENCES threads(thread_id) ON UPDATE CASCADE ON DELETE CASCADE,
path ltree NOT NULL,
comment_body text NOT NULL,
hide boolean not null default false
);
"पथ" स्तंभ, ltree द्वारा इस्तेमाल किया, कुछ ऐसा दिखाई देगा
<thread_id>.<parent_comment_id_#1>.<parent_comment_id_#2>.<my_comment_id>
क्या पथ में प्राथमिक कुंजी का उपयोग करने में कुछ गड़बड़ है? क्या मुझे पथ में नोड की अपनी प्राथमिक कुंजी शामिल करनी चाहिए? अगर मैंने किया, तो क्या यह एक बाधा के रूप में सेवा करने के लिए एक अद्वितीय सूचकांक डालने का अर्थ होगा?
ltree एक 'भौतिक मार्ग' कार्यान्वयन है। अधिक पोर्टेबल (लेकिन कम कुशल) विधियों जैसे नेस्टेड सेट सहित संभाव्य समाधानों की तुलना के लिए http://www.dbazine.com/oracle/or-articles/tropashko4 देखें। – vladr
इसे एक उत्तर के रूप में जोड़ने के लिए स्वतंत्र महसूस करें। मैं अन्य विचारों के लिए खुला हूं। मैंने नेस्टेड सेट में देखा है, लेकिन वे गधे में दर्द और अपडेट/इन्सर्ट्स को धीमा करने के लिए दर्द की तरह लगते हैं (क्या आपको सब कुछ नीचे नहीं लेना है?)। –
ओह, और मैं निकटता सूची के अलावा ltree का उपयोग करने के बारे में सोच रहा था। इसलिए "comment_id" और "parent_comment_id"। क्या मैं मन में था ltree उपयोग करने के लिए एक शाखा –