2010-09-20 26 views
5

Creo que remolque hace meses. Encontré un proyecto de código abierto de Google que puede almacenar pares clave de alto rendimiento. Pero me olvido el nombre. ¿Alguien podría decirme? o puedes tener algunas otras sugerencias para mí? He estado usando BerkerlyDB, pero descubrí que BerkerlyDb no es lo suficientemente rápido para mi programa. Sin embargo, berkerylyDB es conveniente de usar ya que aparece como un jar de lib de java, que se puede integrar sin problemas con mi programa. Mi programa también está escrito en Java.¿cuál tienda keyvalue tiene el mejor rendimiento?

Respuesta

4

dos fuertes competidores en el DHT (Distributed Hash Table) 'mercado':

Here es una presentación sobre Cassandra. En la diapositiva 20 se verá un poco de velocidad benchmarks- 0,12 ms/escritura
(se puede buscar alrededor de toda la presentación, incluyendo Eric Evans hablando)

+0

Necesitarás acceder a ellos a través de la conexión de red, ¿no? ¿Sería eso lo suficientemente rápido? –

+0

Si los está usando localmente, no necesita conexión de red. Y Cassandra escribe son extremadamente rápidos. – Bozho

+0

Gracias. Me pregunto qué tan rápido es "extremadamente rápido" para un caso de uso de una sola máquina/proceso único. ¿Conoces algún número o resultados de referencia? ¿Están Cassandra y HBase optimizados para este caso? ¿Son siquiera válidos para este caso de uso? Según lo que leí, ambos están hechos especialmente para ser distribuidos. –

-1

Creo que viste Guava o Google collections.

+0

¿Las colecciones de Google admiten datos persistentes en el disco? o simplemente mantener en la memoria? – afancy

1
+0

Creo que el proyecto voldemort vale la pena. Aunque Redis responde la pregunta :) http://project-voldemort.com/ – Mobbit

+0

Necesitarás acceder a Redis a través de la conexión de red, ¿no? ¿Sería eso lo suficientemente rápido? –

1

Tal vez se debe describir las características que usted necesita. Si no necesita ser distribuido (¿verdad?), Entonces trataría de usar el H2 Database. Para aquellos que piensan que "no puede ser rápido porque está usando SQL", tenga en cuenta que al usar una declaración preparada, el análisis de SQL solo se realiza una vez. Descargo de responsabilidad: soy el autor principal de H2.

1

Muchas respuestas parecen suponer automáticamente la necesidad de distribución; pero eso parece extraño si la pregunta se refiere a BDB.

Teniendo esto en cuenta, más allá de Redis y H2 (que son buenos), también hay que considerar el Tokyo Cabinet, que parece ofrecer beneficios sobre BDB. Y una posibilidad más nueva es Krati.

2

Nadie menciona leveldb y, sin embargo, este post está en la parte superior al buscar "good key value store". Leveldb en mi experiencia es simplemente increíble. Es tan rápido que no lo podía creer. He estado probando bastantes bases de datos para una tarea que estaba haciendo. Probé:

  • ventanas de almacenamiento de tabla azul (caro, valor del tamaño máximo de 1 MB y cada tamaño de la propiedad es Max 64 Kb)
  • Redis (increíble si tiene tanta RAM como usted por favor)
  • mongodb (impresionante, siempre y cuando haya suficiente ram, se rompe después de ese punto)
  • sql server (costoso, necesita mantenimiento, como la reconstrucción de índices y finalmente aún no lo suficientemente rápido)
  • sqlite (gratuito, pero no tan fácil de usar como leveldb y no rápido)
  • leveldb. Si puede modelar su trabajo para leer grandes cantidades consecutivas de datos a través de un iterador, obtendrá una gran velocidad. Escribir también es bastante rápido. Combínalo con un disco ssd y te encantará.
+0

¿Tiene curiosidad por saber por qué menciona Azure Table Storage como costoso? 100 millones de transacciones cuestan aproximadamente $ 10 (antes de descuentos). Si realiza un lote de sus consultas, cuenta como una transacción. En teoría, podría escribir el número de seguro social de todos en los Estados Unidos y leerlo (utilizando lotes) por menos de $ 1 en transacciones. Los costos de almacenamiento también se tratarían de eso. –

+0

@BartCzernicki Pienso en dos razones: 1) Realmente tenía muchas transacciones (parcialmente aumentadas al dividir los datos en fragmentos de menos de 1 Mb) y no usé lotes (no recuerdo por qué). 2) Desde que utilicé el almacenamiento de tablas, también alojé en máquinas virtuales azules (para que los datos viajen a través de la intranet local) y que si mal no recuerdo es de 86 $ por pequeña instancia por mes. De todos modos, es "caro" en relación con otras opciones y tal vez no tan caro en general, especialmente si está optimizado (como lotes, etc.) – ren

Cuestiones relacionadas