हैज़लकास्ट में, क्या मूल्यों की बजाय कुंजी के गुणों के आधार पर एक IMAP से पूछना संभव है? सभी Hazelcast उदाहरण मूल्य से पूछताछ दिखाते हैं। जैसे, कुंजी है कि तार कर रहे हैं के साथ कर्मचारियों का एक नक्शा के लिए:Hazelcast (prredicates का उपयोग करके) में मूल्य के बजाय कुंजी से पूछना संभव है?
IMap<String, Employee> employees;
विशिष्ट खोज विधेय तो कर्मचारी गुण (नाम, वेतन, आदि) के आधार पर खोज करते हैं। लेकिन मेरे मामले इस तरह के रूप में और अधिक जटिल चाबियाँ, का उपयोग करता है:
class DataAttributes {
String theDescription;
Date theStartTime;
public String getDescription() { return theDescription; }
// etc....
}
मैं एक विधेय है कि, कुंजी द्वारा क्वेरी कर सकता है एक उचित वापस जाने के लिए लिखना चाहते हैं:
IMap<DataAttributes, DataValue> myData;
तो अगर DataAttributes जैसे क्षेत्रों है DataValue ऑब्जेक्ट। यह काम नहीं करता:
Predicate pred = Predicates.equal("description", "myDescription");
myData.keySet(pred); // Throws IllegalArgumentException: "There is no suitable accessor for..."
मैं रोल मेरी खुद कर सकता है के रूप में this answer में सुझाव दिया, लेकिन मैं नहीं बल्कि अगर मैं कर सकते हैं एक आउट-ऑफ-द-बॉक्स समाधान का उपयोग करेंगे।
इससे कोई फर्क नहीं पड़ता कि मैं मानदंड API, या वितरित SQL क्वेरी API का उपयोग कर हवा करता हूं। कोई भी कामकाजी सवाल बहुत अच्छा होगा। घनत्व वाले गुणों पर काम करने वाले समाधान के लिए बोनस पॉइंट (यानी: डेटा एट्रिब्यूट्स theStartTime.getYear()
)।
नोट करें कि भविष्य में (कुंजी या मूल्यों पर) का उपयोग करना बहुत महंगा है जब मानचित्र में बहुत सारे डेटा लोड होते हैं ... इस उपयोग से सावधान रहें! – Donatello
@ डोनाटेल्लो राइट। मैं आमतौर पर इसे कम करने के लिए इंडेक्स का उपयोग करता हूं। और एक उचित धारावाहिक का उपयोग करना भी सहायक है। –