मैं एक PostgreSQL डेटाबेस जो इस संरचना है के साथ एक रूबी ऑन रेल्स अनुप्रयोग है:क्षैतिज डेटाबेस स्केलिंग
class A < ActiveRecord::Base
has_many :B
end
class B < ActiveRecord::Base
has_many :C
end
class C < ActiveRecord::Base
attr_accessible :x, :y :z
end
केवल हैं कुछ एक के, और वे धीरे धीरे बढ़ता है (जैसे कि 5 एक महीने) । प्रत्येक ए में हजारों बी हैं, और प्रत्येक बी में हजारों सी है (इसलिए प्रत्येक ए में लाखों सी हैं)।
ए स्वतंत्र हैं और अलग-अलग ए की बी और सी के साथ कभी भी आवश्यकता नहीं होगी (यानी एक ही प्रश्न में)।
मेरी समस्या यह है कि अब मेरे पास केवल कुछ जोड़े हैं, ActiveRecord प्रश्नों में काफी लंबा समय लगता है। जब सी के लिए तालिका में लाखों पंक्तियां होती हैं, तो प्रश्न हमेशा के लिए लेते हैं।
मैं क्षैतिज डेटाबेस को स्केल करने के बारे में सोच रहा हूं (यानी ए के लिए एक टेबल, बी की एक तालिका और प्रत्येक ए के लिए सी की एक तालिका)। लेकिन मुझे नहीं पता कि यह कैसे करना है। यह मुझे लगता है कि यह एक प्रकार का शेरिंग है, लेकिन मैं यह नहीं समझ सकता कि डीबी टेबल को गतिशील रूप से कैसे बनाया जाए और डेटा तक पहुंचने के लिए ActiveRecord का उपयोग करें यदि टेबल निर्भर करता है कि किस ए के साथ काम कर रहा है।
बहुत बहुत धन्यवाद।
आप ऐसा करते हैं, तो आप अलग अलग स्कीमा में विभाजन तो आप में एक kajillion टेबल नहीं बनाते हैं चाहते हो सकता है 'सार्वजनिक' एक। – tadman
धन्यवाद, मुझे स्कीमा के बारे में पता नहीं था। हालांकि मैं गतिशील रूप से ऐसा कैसे करूं? – Nicolas
यदि मैं आप थे तो मैं किसी प्रकार का ऐड-ऑन या प्लगइन ढूंढूंगा जो आपको शुरू करने के लिए एक जगह देता है। मैं पोस्टग्रेस स्पेस से परिचित नहीं हूं, लेकिन ऐसी चीजें हैं जो [ऑक्टोपस] (https://github.com/tchandy/octopus) हैं जो एक कूदते बिंदु के रूप में काम कर सकती हैं। – tadman