2012-02-12 15 views
5

Hola en mi sistema habrá un nodo maestro y n nodos esclavos, donde el nodo maestro distribuirá la solicitud entrante a uno de sus nodos esclavos. Para utilizar el contenido de la memoria caché, quiero hacer un seguimiento de las últimas 50 solicitudes (hash de la solicitud entrante) que el nodo esclavo ya sirvió (en el supuesto de que la última solicitud 50 ya estará allí en la memoria caché, para que el nodo atenderá la solicitud rápidamente). Por lo que he estudiado, la eliminación es difícil en el filtro de floración. Pero también se puede hacer contando el filtro. ¿Es realmente posible mantener el filtro de floración como una ventana en movimiento (como después de la solicitud 50 debe eliminar desde el frente para acomodar la nueva solicitud). ¿Es realmente posible hacer eso o hay otro filtro como filtro de floración (que debe ser lo suficientemente rápido como para verificar la presencia del elemento).Filtro Bloom para almacenar los últimos 50 datos solamente

Respuesta

5

Si solo tiene 50 elementos que está siguiendo, no creo que un filtro Bloom sea una estructura de datos adecuada. Los filtros Bloom son buenos cuando tiene una cantidad masiva si los datos no se pueden guardar en la memoria y desea realizar un prefiltrado para eliminar búsquedas innecesarias en alguna estructura de datos remota, como una base de datos remota. Si tiene solo 50 elementos, es casi seguro que le conviene usar algo así como una tabla hash para almacenar esos valores, ya que puede obtener respuestas exactas en el tiempo esperado de O (1) con una sobrecarga de espacio mínima.

Si desea realizar un seguimiento de los últimos 50 elementos que ha visto, considere buscar en una tabla hash vinculada, que admite la inserción, búsqueda, eliminación y eliminación más antigua todo en O (1) vez. El LinkedHashMap de Java debería ser genial aquí.

Espero que esto ayude!

Cuestiones relacionadas