Pregunta

Tengo un proyecto en el que estoy haciendo minería de datos de una base de datos grande. Actualmente almaceno todos los datos en archivos de texto, yo estoy tratando de entender los costos y beneficios de almacenar la base de datos relacional de datos en su lugar. Los puntos se ven así:

CREATE TABLE data (
    source1 CHAR(5),
    source2 CHAR(5),
    idx11   INT,
    idx12   INT,
    idx21   INT,
    idx22   INT,
    point1  FLOAT,
    point2  FLOAT
);

¿Cuántos puntos como esto puedo tener con un rendimiento razonable? Actualmente tengo ~ 150 millones de puntos de datos, y probablemente no tendrá más de 300 millones de dólares. Asumen que estoy usando una caja con CPUs 2 GHz Xeon 4 de doble núcleo y 8 GB de RAM.

¿Fue útil?

Solución

MySQL es más que capaz de servir a sus necesidades, así como la sugerencia de PostgreSQL de Alex. un rendimiento razonable no debería ser difícil de lograr, pero si la tabla va a ser muy visitada y tiene una gran cantidad de LMD, que va a querer saber más sobre el bloqueo utilizado por la base de datos que acaban de elegir.

Creo PostgreSQL puede utilizar el bloqueo a nivel de fila de la caja, donde MySQL dependerá del motor de almacenamiento que elija. MyISAM sólo bloquea a nivel de tabla, y por lo tanto sufre concurrencia, pero los motores de almacenamiento tales como InnoDB para MySQL puede y va a utilizar el bloqueo de fila para aumentar el rendimiento. Mi sugerencia sería comenzar con MyISAM a InnoDB y mover sólo si usted encuentra que necesita bloqueo a nivel de fila. MyISAM funciona bien en la mayoría de situaciones y es extremadamente ligero. He tenido tablas de más de 1 mil millones filas de MySQL usando MyISAM y con buena indexación y particionamiento, se puede obtener un gran rendimiento. Puede leer más acerca de los motores de almacenamiento de MySQL en MySQL almacenamiento Motores y sobre la partición de tablas a particionamiento de Tablas . He aquí un artículo sobre en la práctica en una mesa de 113m filas que puede resultar útil también.

Creo que las ventajas de almacenar los datos en una base de datos relacional son muy superiores a los costos. Hay tantas cosas que puede hacer una vez que sus datos están dentro de una base de datos. Punto en el tiempo de recuperación, asegurando la integridad de los datos, seguridad de acceso de grano más fino, la partición de datos, la disponibilidad de otras aplicaciones a través de un lenguaje común. (SQL), etc, etc.

Buena suerte con su proyecto.

Otros consejos

PostgreSQL debe ser capaz de acomodar ampliamente sus datos - hasta 32 terabytes por mesa, etc, etc. Si he entendido bien, que estamos hablando de 5 GB Actualmente, 10 GB de máximo (unos 36 bytes / fila y hasta 300 millones de filas), por lo que casi cualquier base de datos debe, de hecho, ser capaz de adaptarse fácilmente.

Para su información: Postgres escala mejor que MySQL en múltiples procesadores / solicitudes superpuestas, de una revisión que estaba leyendo unos meses atrás (lo siento, ningún vínculo)

.

Asumo de su perfil de esto es una especie de biométrico (secuencias de codones, enzima vs secuencia de aminoácidos de la proteína, o alguna) problema. Si se va a atacar esto con solicitudes simultáneas, me gustaría ir con Postgres.

otoh, si los datos van a ser cargado una vez, luego escaneado por un solo hilo, tal vez MySQL en su "ÁCIDO no es necesario" modo sería el mejor partido.

Tienes un poco de planificación que hacer en caso de caso (s) el uso de acceso antes de poder seleccionar la "mejor" pila.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top