Lançado Space4J 0.9.2

O Space4J é um sistema de prevalência com API simples e suporte a cluster e indexação. Essa nova versão traz várias melhorias, entre elas:

:arrow: Suporte total a generics, principalmente na parte de indexação que antes não tinha.

:arrow: Melhoria no suporte a índices to tipo MULTI_SORTED (não-únicos ordenados).

Qualquer dúvida pode ser tirado no forum do projeto em inglês: http://s4j.mentaframework.org/forums/list.page

[color=red]Antes era assim quando tínhamos um índice MULTI_SORTED:[/color]

    @Override
    public Collection<Object> findUsers(int minAge, int maxAge) {
       
       // Remember that our index is of the type MULTI_SORTED.
       // That's why we are doing this cast here.
       
       MultiSortedMap map = (MultiSortedMap) indexByAge.getMap();
       
       // A multi-sorted-map will store a Map for each key.
       // That's why our index is NON-UNIQUE meaning the same
       // key can be associated with many entries in the map.
       // The map is also sorted by its key, meaning we can
       // perform range searches efficiently.
       
       ConcurrentNavigableMap<Key, Object> subMap = map.subMap(new Key(minAge), true, new Key(maxAge), true);
       
       Collection<Object> users = new ArrayList<Object>(subMap.size() * 3);
       
       Iterator<Object> iter = subMap.values().iterator();
       
       while(iter.hasNext()) {
          
          // our collection here is actually a ConcurrentHashMap!
          
          Map<Object, Boolean> m = (Map<Object, Boolean>) iter.next();
          
          // this is not good as we are transversing the whole list twice!
          // TODO: Create custom iterator for MultiSortedMap to avoid this?
          
          Iterator<Object> iter2 = m.keySet().iterator();
          
          while(iter2.hasNext()) {
             
             users.add(iter2.next());
          }
       }
       
       return users;
    }

[color=blue]Agora ficou assim:[/color]

    @Override
    public Collection<User> findUsers(int minAge, int maxAge) {
       
       // Remember that our index is of the type MULTI_SORTED.
       
       MultiSortedMap<User> map = indexByAge.getMap();
       
       // A multi-sorted-map will store a Set for each key.
       // That's why our index is NON-UNIQUE meaning the same
       // key (minAge, maxAge) can be associated with different entries in the map.
       // The map is also sorted by its key, meaning we can
       // perform range searches efficiently like below.
       
       return map.subMapValues(new Key(minAge), true, new Key(maxAge), true);
    }

Dado o conceito de prevalência passado…
Seria algo tipo JNDI?

Att,

Arthur Carvalho.

[quote=Mr_Arthur]Dado o conceito de prevalência passado…
Seria algo tipo JNDI?[/quote]
:?: JNDI é uma API para serviço de diretório, tipo uma lista telefônica usada para encontrar objetos pelos nomes deles, não tem nada a ver com persistência.


Prevalência, não?
Talvez eu tenha entendido errado, mas eu não vi a palavra persistência nenhuma vez no tópico.

Prevalência, não?
Talvez eu tenha entendido errado, mas eu não vi a palavra persistência nenhuma vez no tópico.

[quote=Mr_Arthur]Prevalência é um conceito onde um repositório que prevalesce os dados deve mantê-los sempre disponíveis na memória e acessíveis diretamente pelo usuário.
Prevalência, não?
Talvez eu tenha entendido errado, mas eu não vi a palavra persistência nenhuma vez no tópico.[/quote]

Realmente, li errado, está escrito prevalência.

De qualquer forma, prevalência de sistema é uma técnica de persistência, onde a persistência normal trata de memória secundária(HDs), prevalência é persistência transparente ao sistema, em memória primária (RAM).

Otimo trabalho saoj fazia tempo que não via nada de novo relacionado a prevalencia!

Pois é, me lembro que há alguns anos tinhamos o Prevayler (do Klaus Wuestefeld). Mas desde 2006 não tem mais nada novo no projeto.

Se não me engano o Klaus ainda trabalha no desenvolvimento do Db4o.

Legal. Valeu Saoj :smiley: