5 votos

El crecimiento de una base de datos PostGIS para Medios de Comunicación Social - Mover a Cassandra?

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.

  1. 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.

  2. 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?

  3. 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!!

1voto

herohuyongtao Puntos 121

el uso de "explicar" (http://www.postgresql.org/docs/9.3/static/sql-explain.html) para ver si su índice espacial está siendo utilizado, y asegúrese de que se ha ejecutado "analizar" (http://www.postgresql.org/docs/9.3/static/sql-analyze.html) para asegurarse de que la base de datos ha recogido suficientes estadísticas sobre los índices.

Me parece que usted no sabe lo que está haciendo con respecto a la planificación de las consultas. No suele ser una buena práctica para el índice de cada columna. Por ejemplo, si usted sabe que consultas espaciales se reducirá el número de elementos a un pequeño número, a continuación, sólo utilizar el espacio. Si el tiempo va a hacer un mejor trabajo que el espacio, a continuación, sólo tiene que utilizar esa. A continuación, utilice sub-selecciona o con instrucciones para profundizar aún más.

Pero, en realidad, pasar tiempo jugando con "explicar" mejorará notablemente su comprensión de lo que el motor está haciendo.

0voto

vincent Puntos 2014

Estoy de acuerdo con los otros comentarios, para que sea este lento que necesita, no tiene la configuración de indexación correctamente. ¿Cómo está el almacenamiento de los datos ? Está usted usando JSON ? Usted necesita tener columnas espaciales o índices para obtener consultas rápidas de trabajo.

Echa un vistazo a los enlaces de abajo para ver ejemplos de los espacialmente la indexación de JSON datos de twitter.

http://bibhas.in/blog/postgresql-swag-json-data-type-and-working-with-twitter-data/ http://bibhas.in/blog/postgresql-swag-part-2-indexing-json-data-type-and-full-text-search/

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X