2014-07-07 2 views
6

मुझे आश्चर्य है कि डेटामिक में क्वेरी परिणाम आलसी नहीं हैं, जब संस्थाएं हैं।डेटामिक प्रश्न और आलस्य

क्या इस विकल्प के लिए कोई स्पष्ट तर्क है कि मुझे याद आ रही है? ऐसा लगता है कि कोई ऐसा करना चाहता है (कुछ-एफएन (100 क्वेरी-परिणाम-युक्त-लाखों ले लो) को मानचित्र करें), लेकिन यह इकाई-आईडी के पूरे सेट के मूल्यांकन को मजबूर करेगा, नहीं?

क्या क्वेरी से सीधे आलसी सीक (इकाई-आईडी) प्राप्त करने का कोई तरीका है, या क्या उन्हें हमेशा स्मृति में लोड किया जाना चाहिए, आलस्य केवल इकाई के माध्यम से उपलब्ध है?

+0

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

+0

आपके दूसरे प्रश्न के लिए, 'डेटाम्स' और 'तलाश-डेटोम्स' निकटतम हैं जो आपको मिलेंगे: वे कच्चे डेट्स को आलसी पहुंच प्रदान करते हैं। –

उत्तर

4

आप आलसी तरीके से इकाइयों तक पहुंच प्राप्त करने के लिए datomic.api/datoms एफएन का उपयोग कर सकते हैं। यदि आपका विशेषता :db/index है

नोट आप जब datoms बुला और आप के लिए उपलब्ध इंडेक्सों का प्रकार विशेषता है कि आप में। उदाहरण के लिए :avet सूचकांक रुचि रखते हैं के प्रकार पर निर्भर सूचकांक प्रकार निर्दिष्ट करने के लिए है कि ही उपलब्ध है स्कीमा में सेट करें, और :vaet अनुक्रमणिका केवल तभी उपलब्ध है जब आपकी विशेषता :db.type/ref प्रकार हो।

हम काम पर कुछ इस तरह का उपयोग करें (ध्यान दें: विशेषता, ref-attr, इस काम करने के लिए :db.type/ref का होना चाहिए):

(defn datoms-by-ref-value 
    "Returns a lazy seq of all the datoms in the database matching the 
    given reference attribute value." 
    [db ref-attr value] 
    (d/datoms db :vaet value ref-attr)) 

datoms प्रलेखन एक सा विरल है, लेकिन एक त्रुटि कुछ परीक्षण के साथ आप संभवतः काम कर सकते हैं जो आपको चाहिए। :avet इंडेक्स (जिसके लिए डेटामिक स्कीमा में विशेषता पर एक सूचकांक की आवश्यकता है) का उपयोग करने के बारे में है जो मुझे कुछ हद तक उपयोगी पाया गया है।

+0

'डेटाम्स' के साथ उपयोग के लिए उपलब्ध इंडेक्स यहां डेटाॉमिक दस्तावेज़ों में सूचीबद्ध हैं: http://docs.datomic.com/indexes.html –

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