¡Necesito ayuda! No puedo resolver el problema, me encuentro con limitaciones de hardware - página 12

 
komposter:


¿Cabe toda la base de datos en 10 lakh líneas o no? todos los archivos juntos
 
Candid:

Pero las secuencias son independientes entre sí, ¿no? Entonces, ¿por qué no podemos hacer un bucle con las fechas de una secuencia cargada de una sola vez? Aquí, por cierto, puede ser posible ir a algún algoritmo de recurrencia eficiente, pero depende de su suerte. El tamaño de un millón sobre un millón se mantendrá, y el archivo se leerá una vez.

Por supuesto, un problema en el que el número de pasos en la siguiente iteración sigue siendo el mismo (es decir, el área de búsqueda calculada no se estrecha) no parece robusto. Pero esto es subjetivo, por supuesto.

La recursión en tales dimensiones caerá cuando se supere el límite de la caché.
 
Hay muchas secuencias de transacciones de un solo tipo, cada secuencia está ordenada por tiempo.

Сделки в разных последовательностях разные, по времени распределены неравномерно (и в каждой последовательности по своему). Сделок разное количество. Но все - в интервале от Даты1 до Даты2.

La tarea es pasar de D1 a D2 con un paso de M minutos (o mejor - exactamente por puntos de hacer intercambios de todas las secuencias), encontrar la secuencia que es mejor que otras por el criterio K (una tarea separada - no sólo encontrar la mejor secuencia, pero ordenar todo el conjunto por el criterio y la salida de los 10 primeros - pero es un opcional, no es necesario todavía).

El criterio K se calcula a partir de X operaciones anteriores de la secuencia correspondiente, calculando casi toda la información de cada una de las X operaciones (no basta con el beneficio, por ejemplo).

Aquí es donde deberíamos haber empezado.

¿He entendido bien lo siguiente?

1) Un archivo de 20 gb consta de aproximadamente un millón de secuencias ordenadas por tiempo

2) El tamaño de cada secuencia puede variar y depende del número de operaciones que contenga la secuencia

3) El tamaño medio de una secuencia es de 20/10^6 = 20 Mb, así que ¿qué podemos garantizar para descargar completamente una secuencia?

4) El coeficiente K depende sólo de los oficios dentro de la secuencia dada

5) Para cada secuencia tenemos que encontrar K (en total 10^6 piezas) y seleccionar las 10 mejores

A Si creamos otro archivo con valores de distancias entre secuencias.

1) Ver cuántas secuencias podemos descargar y sumar la distancia entre ellas (manteniendo los valores intermedios de las sumas)

2) Leemos la distancia del archivo en la RAM

3) Ejecutar para cada secuencia del algoritmo de búsqueda para encontrar K (sabemos donde el comienzo de las secuencias, porque mantenemos los subtum calculados en el paso 1)

4) Nuevamente iniciar el punto 1 moviéndose un poco hacia adelante

En cuanto al top 10:

n son los valores totales de K, m es el número de mejores.

1) puedes encontrar todos los K y luego, con la ayuda de la estructura de datos del montón, elegir el número necesario de mejores valores (Obtener el montón O(n), elegir el mejor O(log n) número de veces m, espacio en memoria - n)

2) contar el número necesario - m de instancias (por ejemplo, 10), ordenarlas y utilizar una búsqueda binaria para encontrar el punto de inserción de las K instancias restantes.

(ordenación inicial O(m*log m), búsqueda de inserción O(log m) número de veces (n-m), inserción O(1), espacio de memoria ocupado - m).

 
Urain:
La recursión en estas dimensiones se reducirá cuando se supere el límite de la caché.
En la recursión clásica el tamaño de la caché es fijo.
 
ALXIMIKS:

3) El tamaño medio de las secuencias es de 20/10^6 = 20 MB, ¿qué carga completa una secuencia podemos garantizar?

Por cierto, sí, puedes cargar lotes de secuencias a la vez.
 

Siento que no consigo entender lo que se necesita y lo que se da (((

 А потом "нужная дата" сдвигается на точку закрытия сделки из выбранной последовательности и алгоритм повторяется.

y sí20/10^6 = 20kb porque 1gb = 1000mb = 10^6kb

 
YuraZ:

Ir hacia el SQL


  • Relativamente nuevo para mí (no he trabajado de cerca, sólo consultas básicas);

Esto puede ser bastante lento en la etapa de aprendizaje.

Si elige esta opción, es mejor construir toda la lógica de negocio con procedimientos almacenados

dejando al Asesor Experto sólo dos funciones, enviar una petición al servidor y obtener un resultado completamente terminado

todos los cálculos en el servidor

  • La complejidad de la instalación en una sola máquina cliente (versión autónoma);

De hecho, en la web se pueden encontrar muchas descripciones de cómo poner el servidor SQL

( ORACL, SYBASE + CENTOS por ejemplo ) ORACL, SYBASE, MS SQL + WINDOWS máquina independiente

ORACL es un poco más complicado de aprender - menos expertos, menos literatura.

MS SQL - quizás la mayor cantidad de información y más literatura en la web.

no habrá dificultades - hay muchas descripciones en la web y más libros en la tienda.

MSSQL 2012 por sus parámetros está muy cerca de ORACL - ya en 2014.

SQL + LINUX se suele elegir para operar en un entorno de producción - si no se sabe nada de LINUX es mejor utilizar WINDOWS

Globo MSSQL Expres pero las restricciones utilizan 1 núcleo, 1Gb de memoria y 10Gb de base

otros son pagados.

 
komposter:
...

Hay muchas secuencias similares de tratos, cada secuencia está ordenada por tiempo.

Las transacciones en las distintas secuencias son diferentes, distribuidas de forma desigual en el tiempo (y de forma diferente en cada secuencia). El número de acuerdos es diferente. Pero todos ellos están en el intervalo de Fecha1 a Fecha2.

La tarea - pasar de D1 a D2 con un paso de M minutos (o mejor - específicamente por puntos de hacer tratos de todas las secuencias), encontrar una secuencia, que es mejor que otros por el criterio K (una tarea separada - no sólo encontrar la mejor secuencia, pero ordenar todo el conjunto por el criterio y la salida de los 10 primeros - pero es un opcional, no se requiere todavía).

...

No entiendo dónde.

Hay un criterio - todos - en el intervalo de Fecha1 a Fecha2.

komposter:

Todo es así.

Y entonces la "fecha correcta" se desplaza al punto de cierre de la operación de la secuencia seleccionada y el algoritmo se repite.

Y así un millón de veces =)

Es decir, se lee el siguiente.

¿Por qué no dividir el archivo en muchos intervalos desde la Fecha1 hasta la Fecha2? Habrá secuencias gastadas que se pueden cerrar, ¿no?

 
Silent:

No entiendo dónde.

Este es el criterio: todo está entre Fecha1 y Fecha2.

Es decir, dice lo siguiente.

¿Por qué no dividir el archivo en muchos intervalos desde la Fecha1 hasta la Fecha2? Habrá secuencias usadas que se puedan cerrar, ¿no?

Al parecer, uno de los resultados de un pase de fecha única es una nueva fecha.
 

si el problema es este:

dada una fila 1 2 3 4 5 6 7 8 9

dado un ancho de, por ejemplo, 4, hay que recorrer con este ancho toda la fila para encontrar algún valor dentro del ancho (por ejemplo, un mínimo):

primero tienes que encontrar en 1 2 3 4 luego 2 3 4 5 luego 3 4 5 6 luego 4 5 6 7 luego .... etc.

entonces la tarea se resuelve manteniendo el mínimo en la estructura de datos de la cola:

1) la implementación de esto fue sugerida en el curso de video de mails.ru a través de cuatro estructuras de datos de pila

2) He inventado verbalmente una implementación a través de la estructura de datos de la cola y la estructura de datos de la dec, lo más probable es que alguien ya lo haya hecho una vez y tenga su nombre, sólo necesito encontrarlo.