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
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)
Creo que el proyecto voldemort vale la pena. Aunque Redis responde la pregunta :) http://project-voldemort.com/ – Mobbit
Necesitarás acceder a Redis a través de la conexión de red, ¿no? ¿Sería eso lo suficientemente rápido? –
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.
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.
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á.
¿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. –
@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
- 1. ¿Hay alguna tienda KeyValue utilizada por .NET?
- 2. tienda de iCloud KeyValue no reconocida en el primer lanzamiento
- 3. ¿Cuál consulta de fecha mySQL tiene mejor rendimiento?
- 4. Cuál tiene mejor rendimiento: Tablas derivadas o Tablas temporales
- 5. ¿Cuál es un mejor rendimiento en PHP?
- 6. ¿Qué biblioteca de gráficos de JavaScript tiene el mejor rendimiento?
- 7. que tiene un mejor rendimiento:!! Prueba = null o nula = prueba
- 8. Rest vs. Soap. ¿REST tiene un mejor rendimiento?
- 9. ¿Cuál es la mejor manera de solucionar problemas de rendimiento?
- 10. Cuál es mejor usar ViewState u hiddenfield
- 11. UILabel layer cornerRadius tiene un impacto negativo en el rendimiento
- 12. ¿Cómo recuperar 'KeyValue' de Telerik RadGrid?
- 13. "Es un" vs "Tiene un": ¿cuál es mejor?
- 14. ¿Cuál es el mejor ocultador de JavaScript?
- 15. ¿Cuál es la mejor manera de mejorar el rendimiento de NHibernate?
- 16. Cuál es el mejor enfoque para monitorear el rendimiento del sitio en rieles
- 17. ¿Cuál es la mejor manera de empaquetar el código JavaScript sin tener fallas en el rendimiento?
- 18. ¿Cuál es el mejor motor 3D Actionscript3?
- 19. ¿Cuál es el mejor rendimiento de Recuperación de resultados MySQL EAV como tabla relacional
- 20. '...! = Null' o 'null! = ....' mejor rendimiento?
- 21. Carga lenta: ¿cuál es el mejor enfoque?
- 22. mejor manera de verificar el rendimiento de la aplicación web
- 23. En términos de rendimiento, ¿cuál es el mejor método para mostrar 1000 imágenes en una página?
- 24. ¿Cuál es la mejor manera de perfilar una base de datos sqlserver 2005 para el rendimiento?
- 25. Cuál es el mejor módulo Drupal Survey
- 26. ¿Cuál es el impacto en el rendimiento del selector universal?
- 27. Cuál es la mejor implementación de MPI
- 28. ¿LIMIT 1 tiene algún aumento de rendimiento?
- 29. ¿Tiene ACL en Linux un impacto en el rendimiento?
- 30. Detectando cuando Javascript tiene un bajo rendimiento
Necesitarás acceder a ellos a través de la conexión de red, ¿no? ¿Sería eso lo suficientemente rápido? –
Si los está usando localmente, no necesita conexión de red. Y Cassandra escribe son extremadamente rápidos. – Bozho
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. –