Can I use split keys in Aerospike? / Con Aerospike, puedo consultar claves parciales?


#1

I know how to use various primary keys in key-value databases. However, I don’t know whether with Aerospike, I can use split keys. For example:

key1 => 123
key2 => 456
key3 => 789
get key
return key1 key2 key3

Original text in Spanish:

Sé cómo usar multiples claves primarias en las base de datos clave-valor, pero lo que ignoro es si con aerospike, puedo consultar claves parciales, ejemplo:

key1 => 123
key2 => 456
key3 => 789
get key
return key1 key2 key3

#2

@hallnewman,

A record in Aerospike is identified by a tuple of its namespace, set, and primary key in the application. These get hashed through RIPEMD-160 to produce a digest. This digest is used to identify the node owning the master partition to which the record is mapped. The client does that for you and performs the operation against the correct node in the cluster.

You can get a single key, using the get() method of the clients, or batch-read a list of keys (for example, the Python client’s get_many()). You can also just check for the existence of a key (exists()) or of a list of keys (exists_many()), both of which are metadata operations and just check the in-memory primary index.


#3

ok, comprendo querida! pero en cuanto de detalles técnicos, ya habrá mas tiempo. Simplifico la pregunta:

Supongamos tenemos las siguientes claves:

{ 123Maud : ‘Maud’, 123Hall: ‘Hall’ }

Ahora, para extraer a Maud, hago un get a 123Maud, y para extraer a Hall hago un get a 123Hall y eso está claro. También está claro que puedo hacer un get multiple, pero la cuestión es: Si requiero extraer 1 millon de claves, sería “anti-kiss” hacer un get multiple con tal longitud, así que me pregunto si, ese millon de claves a extraer, todas en su totalidad empiezan con 123(Name), puedo hacer ese getSubKey, ejemplo: getSubKey(123) y que al hacer esa peticion, Aerospike, me devuelva todas la claves que inicien de esa manera, para no tener que pasar clave por clave.

El modo manual, sería hacer un Set ( tablas ) que agruparan esas SubKey, o agruparlas con un sistema de archivos, pero y si, es algo así como 65 mil millones de formas posibles, que en realidad es a la cantidad a la que me enfrento, nuestro sistema de archivos se rompería. Ahora, el chance más próximo esta en hacer un Hack al momento de consultar la base de datos (Como por ejemplo, usar una DB clave-valor como una relacional, a partir de indexación). Lo que mas se acerca este modelo es Cassandra, el punto es que tendría que pre-registrar los 65mil millones de columnas y eso sería eewwww

Perdonen, tantas bobadas que digo, pero intento hacerlo ver sencilla, para que la solucion sea sencilla.


#4

La forma de hacerlo es dividir la llave en valores. Ponga estos valores en contenedores separados. Crear un índice secundario en cada papelera y utilizar una consulta para localizar los registros.

Perdone mi español - Estoy usando Google Translate

Espero que esto ayude


#5

Gracias, pero lo que dices, es justo lo que prevengo antes. Hablaríamos de 65 mil millones de contenedores y eso no es muy práctico. Gracias muchas Gracias :slight_smile: