2016-01-01 4 views
5

एक गैर-सूचीबद्ध नियमित स्तंभ (नहीं एक प्राथमिक संबंधित कुंजी) डुप्लिकेट के रूप में यह युक्त टेबल भर अद्यतन करने के लिए सबसे अच्छा तरीका क्या है में एक परिवर्तन को संभालने के लिए?कैसे denormalized डेटा

यानी उपयोगकर्ता कुछ पोस्ट करता है और उस पोस्ट तेजी से पुनः प्राप्ति के लिए कई तालिकाओं में दोहराया गया है। लेकिन जब वह पोस्ट बदलता है (एक संपादन के साथ) इसे उस डेटाबेस में सभी डेटाबेस में अद्यतन किया जाना चाहिए (उन तालिकाओं में जिनमें अलग-अलग और अज्ञात प्राथमिक कुंजी हैं)।

समाधान मैं सोच रहा हूँ:

  1. उन सभी तालिकाओं में प्राथमिक कुंजी नीचे ट्रैक करने के लिए एक नक्शाकार तालिका है, लेकिन यह (टेबल विस्फोट हो रहा है पोस्ट केवल संपत्ति है कि बदल सकता है नहीं है)।
  2. मैपिंग करने के लिए सौर का उपयोग करें, लेकिन मुझे डर है कि मैं गलत उद्देश्य के लिए इसका उपयोग करूँगा।

किसी भी enlightenments सराहना की जाएगी।

संपादित करें (काल्पनिक स्कीमा)।

क्या होगा अगर पोस्ट परिवर्तन? या यहां तक ​​कि उपयोगकर्ता का display_name भी?

CREATE TABLE users (
    id uuid, 

    display_name text, 

    PRIMARY KEY ((id)) 
); 

CREATE TABLE posts (
    id uuid, 

    post text, 
    poster_id uuid, 
    poster_display_name text 
    tags set<text>, 
    statistics map<int, bigint>, 

    PRIMARY KEY ((id)) 
); 

CREATE TABLE posts_by_user (
    user_id uuid, 
    created timeuuid, 

    post text, 
    post_id uuid, 
    tags set<text>, 
    statistics map<int, bigint>, 

    PRIMARY KEY ((id), created) 
); 
+0

यदि आप टेबल स्कीमा जोड़ सकते हैं जो सहायक होगा। –

+0

एक काल्पनिक स्कीमा जोड़ा गया .. – Droritos

+0

क्या हमें शीर्षक को 'डुप्लिकेट डेटा' के बजाय 'denormalized डेटा' में बदलना चाहिए? –

उत्तर

1

यह अद्यतनों की आवृत्ति पर निर्भर करता है। उदाहरण के लिए, यदि उपयोगकर्ता केवल अपने नामों को अद्यतन करते हैं (प्रति उपयोगकर्ता खाते का एक मुट्ठी भर), तो माध्यमिक अनुक्रमणिका का उपयोग करना ठीक हो सकता है। बस पता है कि 2i का उपयोग एक स्कैटर इकट्ठा है, इसलिए यदि आप एक आम ऑपरेशन करते हैं तो आपको प्रदर्शन समस्याएं दिखाई देगी। उन मामलों में, आप किसी दिए गए उपयोगकर्ता के लिए सभी पदों की सूची प्राप्त करने में सक्षम होने के लिए एक भौतिक दृश्य (या तो 3.0 में से किसी एक को स्वयं प्रबंधित करें) का उपयोग करना चाहते हैं, फिर उपयोगकर्ता का प्रदर्शन नाम अपडेट करें।

मैं एक पृष्ठभूमि काम में ऐसा करने की सलाह देते हैं, और उपयोगकर्ता की तरह एक संदेश दे रही है "यह अपने नाम में बदलाव के लिए [समय की कुछ इकाई] लग सकता है हर जगह परिलक्षित करने के लिए"।

संबंधित मुद्दे