Actualmente tengo una amplia y creciente base de datos de geo-social de los medios de comunicación. Estoy usando Postgresql con postgis, y hasta ahora ha sido bastante buena.
Mi caso de uso ha sido hasta ahora para la consulta de la base de datos para todos los puestos dentro de áreas específicas, tales como todos los tweets que dentro de cada post/código postal en los estados unidos/Canadá (u otros límites -- los puestos no son geo-codificados para el post/código postal. la selección es a través de la intersección de las coordenadas).
En el pasado esto era relativamente fácil y rápido de hacer, sin embargo, ahora que mi tabla de datos ha crecido a más de 350 millones de mensajes, mis consultas tardan una eternidad para completar. Cada código postal se puede tomar hasta un día para recuperar los tweets desde dentro de su geometría.
Actualmente estoy debatiendo qué hacer a continuación. Yo sé de un par de soluciones, pero tengo la curiosidad de lo que piensa de ellos y si me estoy perdiendo de nada.
arrojar algo más de memoria en postgres, y reducir la capacidad del disco de la búsqueda. Actualmente estoy trabajando en hacer esto, pero me pregunto si es una buena solución a largo plazo.
encontrar una mejor manera para la partición de datos en varias tablas. En la actualidad, todos mis posts están en la misma mesa, con cada columna indizada. Dado que tengo que buscar a través de todos los puestos para encontrar aquellos en áreas, es esta la forma incorrecta de hacerlo?
crear un híbrido de Cassandra-PostGIS. A granel almacenar mis datos a Cassandra y, a continuación, tire de aproximadamente los datos que necesito (es decir, un estado/provincia en un tiempo) a un ensayo de la tabla de datos en PostGIS, luego de la consulta individual post/códigos postales de usar PostGIS. Es esto una exageración/terriblemente ineficiente? He mirado en Postgres-XL, pero ha sido kiboshed por otros en este proyecto por cuestiones de costo.
Toda la ayuda es apreciada, Gracias!!