2015-06-22 5 views
5

मैंने स्वचालित स्थिरता का उपयोग करके एक कैश बनाया है, जो MySQL डेटाबेस से कनेक्ट है। उस नोड में स्टार्टअप पर 1 मिलियन पंक्तियां आबादी में आ गई हैं। नोड पार्टिशन मोड में हैapache क्वेरी को आग लगाना

जब मैं SQL क्वेरी का उपयोग करके उस कैश से डेटा पुनर्प्राप्त करने का प्रयास करता हूं, तो यह हमेशा खाली सरणी देता है। मैंने "कैश टाइप मेटाडेटा" का उपयोग करके कैश को अनुक्रमित किया है।

कृपया कोई भी बता सकता है कि मैंने क्या याद किया है, या गलत तरीके से किया है। मैं ट्यूटोरियल का पालन कर रहा हूं, लेकिन मुझे पता नहीं चल रहा है कि मेरी क्वेरी ठीक क्यों काम नहीं कर रही है।

अग्रिम धन्यवाद!

  1. कैश:

    CacheConfiguration cfg = CacheConfigMd5.cache ("DataMd5Cache", नई JDBCFactory());

  2. DataLoaderMd5Key ::

    सार्वजनिक वर्ग Dataloadermd5Key लागू करता Serializable { /** */ निजी स्थिर अंतिम लंबे serialVersionUID = 0L;

    /** Value for idClient. */ 
    private int idClient; 
    
    /** Value for clientPropId. */ 
    private String clientPropId; 
    

    ...}

  3. DataLoaderMd5 ::

    सार्वजनिक वर्ग DataLoaderMd5 लागू करता Serializable { /** */ निजी स्थिर अंतिम लंबे serialVersionUID = 0L;

    /** Value for idClient. */ 
    private int idClient; 
    
    /** Value for clientPropId. */ 
    private String clientPropId; 
    
    /** Value for md5. */ 
    private String md5; 
    

    ..}

  4. CacheConfigMd5 ::

    सार्वजनिक स्थिर CacheConfiguration कैश (स्ट्रिंग नाम, फैक्टरी> storeFactory) { अगर (storeFactory == नल) फेंक नई IllegalArgumentException ("कैश स्टोर कारखाना शून्य नहीं हो सकता है। ");

    CacheConfiguration<K, V> ccfg = new CacheConfiguration<>(name); 
    
        ccfg.setCacheStoreFactory(storeFactory); 
        ccfg.setReadThrough(true); 
        ccfg.setWriteThrough(true); 
    
        // Configure cache types. 
        Collection<CacheTypeMetadata> meta = new ArrayList<>(); 
    
        // DataLoaderMd5. 
        CacheTypeMetadata type = new CacheTypeMetadata(); 
    
        meta.add(type); 
    
        type.setDatabaseSchema("abc"); 
        type.setDatabaseTable("dfg"); 
        type.setKeyType(Dataloadermd5Key.class.getName()); 
        type.setValueType(DataLoaderMd5.class.getName()); 
    
        // Key fields for DataLoaderMd5. 
        Collection<CacheTypeFieldMetadata> keys = new ArrayList<>(); 
        keys.add(new CacheTypeFieldMetadata("id_client", Types.INTEGER, "idclient", int.class)); 
        keys.add(new CacheTypeFieldMetadata("client_prop_id", Types.VARCHAR, "clientPropId", String.class)); 
        type.setKeyFields(keys); 
    
        // Value fields for DataLoaderMd5. 
        Collection<CacheTypeFieldMetadata> vals = new ArrayList<>(); 
        vals.add(new CacheTypeFieldMetadata("id_client", Types.INTEGER, "idclient", int.class)); 
        vals.add(new CacheTypeFieldMetadata("client_prop_id", Types.VARCHAR, "clientPropId", String.class)); 
        vals.add(new CacheTypeFieldMetadata("Md5", Types.VARCHAR, "md5", String.class)); 
        type.setValueFields(vals); 
    
        // Query fields for DataLoaderMd5. 
        Map<String, Class<?>> qryFlds = new LinkedHashMap<>(); 
    
        qryFlds.put("idclient", int.class); 
        qryFlds.put("clientPropId", String.class); 
        qryFlds.put("md5", String.class); 
    
        type.setQueryFields(qryFlds); 
    
        // Groups for DataLoaderMd5. 
        Map<String, LinkedHashMap<String, IgniteBiTuple<Class<?>, Boolean>>> grps = new LinkedHashMap<>(); 
    
        LinkedHashMap<String, IgniteBiTuple<Class<?>, Boolean>> grpItems = new LinkedHashMap<>(); 
    
        grpItems.put("idclient", new IgniteBiTuple<Class<?>, Boolean>(int.class, false)); 
        grpItems.put("clientPropId", new IgniteBiTuple<Class<?>, Boolean>(String.class, false)); 
    
        grps.put("PRIMARY", grpItems); 
    
        type.setGroups(grps); 
    
        ccfg.setTypeMetadata(meta); 
    
        return ccfg; 
    } 
    
    1. क्वेरी ::

    प्रज्वलित प्रज्वलित = Ignition.start ("उदाहरण/config/उदाहरण-cache.xml"); IgniteCache cache = ignite.cache (CACHE_NAME); Dataloadermd5Key key = new Dataloadermd5Key(); key.setIdClient (98255); key.setClientPropId ("1000008");

    SqlQuery qry = नया SqlQuery (DataLoaderMd5.class, "idClient =? और clientPropId =?");

    // निष्पादित करें क्वेरी println ("sqlQuery लुक परिणाम ::" + cache.query (qry) .getAll());

    System.out.println ("sqlQuery लुकअप परिणाम ::" + cache.query (qry.setArgs (key.getIdClient(), key.getClientPropId()))।सब प्राप्त कर लिया());

उत्तर

2

मुझे समस्या मिली। यह मेरे इग्नाइट संस्करण की वजह से था। मैंने अपने मैवेन पर संस्करण 1.1.0 पर अपडेट किया, और कोड ठीक काम करना शुरू कर दिया।

<dependency> 
     <groupId>org.apache.ignite</groupId> 
     <artifactId>ignite-indexing</artifactId> 
     <version>1.1.0-incubating</version> 
    </dependency> 
संबंधित मुद्दे