2009-08-03 27 views
5

मेरे रेल ऐप परिपक्व होने के कारण, यह तेजी से स्पष्ट हो रहा है कि इसमें एक मजबूत डेटा वेयरहाउस स्वाद है, जिसमें सबकुछ स्पष्ट करने के लिए केवल एक तथ्य तालिका की कमी है।ActiveRecord के साथ डेटा गोदाम-शैली तालिकाओं से बात करें?

उस पर, मैंने केवल अध्याय 2 (डिजाइनिंग सुंदर एपीआई) और 3 (डायनामिक टूलकिट मास्टरिंग) Ruby Best Practices पढ़ा है।

  • उत्पाद (:

    अब मैं यह पता लगाने की कैसे तथ्य पुन: प्राप्त करने के लिए सबसे अच्छा हिस्सा डिजाइन कोशिश कर रहा हूँ ...

    मैं निम्नलिखित आयाम (अनुप्रयोग में मौजूदा मॉडल) है कहो शामिल फंड)

  • फंड
  • उपाय (जैसे कुल होल्डिंग, औसत जोत, औसत जोखिम)

... और एक अच्छे पुराने सामान्य प्रयोजन तथ्य:

  • तथ्य (दिनांक, मूल्य, मेरे से प्रत्येक आयाम के लिए के साथ साथ एक विदेशी कुंजी व्यर्थ स्तम्भ)

कुछ पहलुओं जिस पर मैं कुछ सलाह पाने के लिए आभारी रहें:

  • लचीला पुनर्प्राप्ति इंटरफ़ेस क्या हो सकता है?
  • क्या होता है यदि मेरे पास नल के लिए तथ्य है (यानी सभी, या परवाह नहीं है) और आयाम के लिए न्यूल (विशिष्ट) मान नहीं हैं? एक छद्म मूल्य जैसे :all? या कुछ सम्मेलन लागू होना चाहिए?
  • आयाम मानों का केवल एक उप-समूह कैसे चुनें? या एक सबसेट बहिष्कृत करें? : केवल और: बहिष्कृत?
  • क्या किसी को इस से निपटने के लिए named_scope एस बनाने का अनुभव है? ब्याज के प्रत्येक आयाम के लिए एक श्रृंखला को सक्षम करने में सक्षम होने का स्पष्ट आकर्षण है, लेकिन अगर हम 7 या 8 आयाम प्राप्त करते हैं तो क्या यह बहुत गुस्से में आता है?

(मुझे पता है कि एक acts_as_fact प्लगइन किसी न किसी रूप में मौजूद (कम से कम, वहाँ RailsConf 2006 में कुछ छोटे चर्चा थी) माना जाता है, लेकिन मैं किसी भी कोड या यह कैसे हो सकता है का विवरण नहीं मिल सका हूँ । काम किया)

संस्करण: रेल, ActiveRecord 2.1.2, ओरेकल बढ़ी एडाप्टर 1.2.0

संपादित करें: मैं ActiveWarehouse को देखा और कुछ आरक्षण है: - मुख्य शाखा नवम्बर के बाद से एक प्रतिबद्ध नहीं किया गया है -08 और जनवरी -0 9 के बाद से कोई गतिविधि नहीं है; - 2006 तक ट्यूटोरियल की तारीखें, पुरानी हो गई हैं, और 404s मुझ पर भर्ती हैं; - ऐसा लगता है कि ActiveRecord से दूर जाना चाहते हैं - मेरा अधिकांश ऐप एआर में रहेगा और मुझे लगता है कि वर्तमान में मुझे एआर समाधान चाहिए।

तो मैं उस से स्पष्ट हो जाऊंगा, धन्यवाद!

उत्तर

0

इसलिए हमारे पास जटिलता की विभिन्न डिग्री के कई रत्न या प्लगइन्स हैं, जिनमें से कोई भी विकास के तहत बहुत सक्रिय रूप से प्रतीत नहीं होता है (या कुछ चल रहा है लेकिन यह रडार के नीचे है)।

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

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

पुनर्प्राप्ति ऐसा लगता है कि इसे फ़िल्टरिंग के लिए प्रत्येक आयाम के लिए named_scopes के सेट के साथ संभाला जा सकता है। या एक उपयुक्त खोजक, जो उपयुक्त रूप से निर्मित हैश से खिलाया गया हो, बेहतर हो सकता है।

जब मैंने इसे बनाया है, तो मैं कुछ बेहतर जानकारी के साथ वापस आऊंगा ...

2

अगर मैं दोनों शून्य के साथ तथ्य (अर्थात् सभी, या परवाह नहीं है) और नहीं NULL (विशिष्ट) मान एक आयाम के लिए तो क्या होगा? एक छद्म मूल्य जैसे: सब? या कुछ सम्मेलन लागू होना चाहिए?

एनयूएलएल एक बोली भ्रामक होगा क्योंकि यह कोई सहयोग नहीं है। मैं -1 जैसे मान का उपयोग करूंगा (यदि यह केवल मानों के साथ एक पूर्णांक विदेशी_की है> 0)।

आयाम मानों का केवल एक सबसेट कैसे चुनें? या एक सबसेट बहिष्कृत करें?

with_scope() 

आप यह भी समारोह

def self.find(*args) 
    if anything 
     with_scope(a_scope) do 
     result = super *args 
     end 
    else 
     result = super *args 
    end 
    end 

    def self.a_scope 
    {:find => { :conditions => ["person_id = ?", me] , :readonly => true}} 
    end 

किसी इस से निपटने के लिए बनाने named_scopes के साथ अनुभव किया गया है के ऊपर लिख सकता है? प्रत्येक ब्याज के आयाम के लिए एक श्रृंखला को सक्षम करने में सक्षम होने के लिए स्पष्ट आकर्षण है, लेकिन अगर हमें 7 या 8 आयाम प्राप्त होते हैं तो क्या यह बहुत गड़बड़ हो जाता है?

हमारे पास 4 आयाम वाला एक olap डेटाबेस है और यह अच्छा काम करता है। मुझे लगता है कि अगर आप active_record के लिए कुछ कस्टम तरीकों को लागू करते हैं, तो आप अपने ऐप से मजा लेंगे। http://github.com/aeden/activewarehouse/tree/master

1

एक और जो मैं उपयोग नहीं किया है, लेकिन अच्छा लग रहा है:

मैं भी इस पाया SOLR के लिए

http://github.com/wvanbergen/active_olap/tree/master

http://techblog.floorplanner.com/2008/07/29/active-olap-released/


और इस जो मैं गूगल

में मिला

http://code.google.com/p/kettle-solr-plugin/

+0

ओह, अधिक लिंक। मेरी डीडब्ल्यू न्यूबनेस दिखाता है (पिछले डीडब्ल्यू ऐप्स = 1 पर काम करते थे) कि मैंने उन खोज शब्दों के बारे में नहीं सोचा था। धन्यवाद! –

1

मैं इससे पहले कि मैं अन्य बातों पर की पुल मिला ActiveWarehouse का उपयोग कर कुछ समय पहले में देख रहा था, तो मैं आपको बता नहीं सकता कि यह कैसे अच्छी तरह से काम है, लेकिन यह अपनी सूची में जोड़ने के लिए बाहर की जाँच करने के लिए कुछ न कुछ है। इसमें तथ्यों, आयामों और क्यूब्स के साथ ही एक ईटीएल टूलकिट के लिए जेनरेटर हैं।

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