Feda /dev/ - No Javascript allowed

Normas
spoiler
Personas non gratas
Memes feda dev




MTX_Anubis

#30687 por qué no los almacenas en mysql directamente?

Pero vamos hace falta mucha info ahí. Pasa algo porque se pierdan? tienes un cluster o es un solo server? Req/sec del api?

1 1 respuesta
babri

#30691 ahora mismo lo tengo en mysql. Lo que está hecho básicamente almacena una linea por petición al api. Lo malo que ahora mismo tengo 25millones de registros en esa tabla. Y para ver y contar todo está montado para consultar dicha tabla y no veas lo que le cuesta... la escalabilidad es nula, el primer paso que quiero meterle es, que para contar el número de envios, lo haga al vuelo. Se hacen 20-30 peticiones a las apis cada 2minutos aprox. La idea es que si por ejemplo mi cliente id 45 solo puede hacer 100 peticiones al día es ir guardando las que se hacen de forma entera y no mirar la tabla salvaje de las comunicaciones donde guardo respuestas etc. Pero dicha info mañana ya no me importa, la idea sería truncar tabla por la noche y arreando. Y no se si hay alguna alternativa mejor con almacenamiento caché o similar o por el contrario en mysql y truncando puede ser muy viable... Me estoy comiendo un legacy rico rico y estoy metiendo mano al performance ^^

PD: tengo un rds de aws, sin réplicas ni nada.

3 respuestas
Ranthas

#30687 Si la libreta y el boli no te convencen, yo te diría meter eso directamente en bbdd incluso si tienes tropecientas requests por segundo

Supongo que lo que preguntas es que usar para almacenar y mostrar esos datos en tiempo real, pero viendo la estructura que describes, vuelvo a decir que tenerlos en la bbdd sería suficiente.

Edito que veo #30692 ahora. Con 25 millones de registros no deberías tener problemas para hacer un count por cliente, si el cliente es una FK indexada.; un join filtrante por cliente primero, y luego un where con la fecha a filtrar debería ser una consulta de microsegundos

Por otra parte, también puedes montar una caché con los resultados del día actual como dices, y cada noche ir rotando esos datos a la bbdd principal, así a ojo

1 1 respuesta
MTX_Anubis

#30692 Pero es necesario que lleves un log de cada petición? Te lo digo porque si no lo es, con un simple update te vale.

Tabla con unique index compuesto (clientId, date)

inserto into api_requests (clientId, date, requests) values (<clientId>, <date>, 1) on duplicate key update requests = requests + 1;

No es lo más optimo pero para 10/req min te sobra y ya tendrías un agregado diario por cliente. También puedes hacer esto y por otro lado guardar el log.

Si necesitas guardar todas las req pues como te dice #30693, con índices bien puestos no debería darte tantos problemas. Otra opción es irte a BBDD columnares que estas hechas especificamente para estos casos de usos pero hablamos de cuando tenemos miles de millones de registros.

B

#30687 pregúntale a @Traber que es especialista en manejo de datos

1 respuesta
-OnE-

Ni idea de si esto se puede preguntar aquí, pero querría bajarme el archivo de audio que tiene embedeado aquí el New York Times y no sé cómo hacerlo. Una halludita please?

https://www.nytimes.com/2021/09/29/magazine/sopranos.html

2 respuestas
juanmaroni

#30696
¿Esto?

1 respuesta
-OnE-

#30697 eso es, mil gracias

Podrías decirme cómo puedo conseguir ese enlace para la próxima? Soy tontísimo

2 respuestas
juanmaroni

#30698
He inspeccionado el HTML con las herramientas de desarrollador y he buscado "audio" (lo primero que se me ha ocurrido).
Me ha salido todo esto:

spoiler

Y he mirado si había algún fichero con formato de audio (un mp3).

1 respuesta
-OnE-

#30699 te quiero, gracias

Quiero descargarme muchos de estos artículos narrados para subirlos a mi plataforma de podcasts y poder escucharlos cómodamente haciendo ejercicio así que me has dado la vida

B

.

desu

#30689 En 1 mes papito ya tengo muchas cosas en prod.

Piensa que me han fichado para re escribir el servicio y escalar un x3 de users.

El ruido de los haters, solo escucho animos. gracias por el apoyo.

privet

#30698 ¿Robando material?

1 respuesta
desu

#30703 Ayy... mucho perro suelto que quiere aprovecharse del trabajo y esfuerzo de los demas.

Desde ponerse medallitas por cosas que no han hecho a robar material.

1
Fyn4r

No sé que me cabrea más, que alguien crea que sé algo sobre ciencia de datos porque un día hice una regresión lineal o que un cliente me envie 4 excels de mierda, incompletos en los cuales las cuentas no concuerdan y pretenda que genere curvas mágicas que representen el comportamiento de su planta que ni ellos saben como funciona. Ole ole xD

Wei-Yu

a currar gafitas que para eso te pago

Traber

#30692 #30695

Yo haría algo como esto:

Tabla log requests

CREATE TABLE client_request(
	id            BIGINT(20) NOT NULL AUTO_INCREMENT,
	client_id     BIGINT(20) NOT NULL,
	request_path  MEDIUMTEXT NOT NULL,
	request_data  MEDIUMTEXT DEFAULT NULL,
	timestamp     DATETIME   DEFAULT NOW(),
	
	PRIMARY KEY(id),
	FOREIGN KEY(client_id) REFERENCES tutabla(campoid)
);

Query ver si ha superado X número de requests

SELECT
	COUNT(id)
FROM
	client_request
WHERE
	client_id = {id_cliente}
	AND
	DATE(timestamp) >= SUBDATE(now(), INTERVAL 1 day)
;

Query a ejecutar en cada petición para limpiar la tabla (o cada X tiempo), dejando solo las queries de los últimos 3 días

DELETE
FROM
	client_request
WHERE
	DATE(timestamp) < SUBDATE(now(), INTERVAL 3 day)
;
B

A la izquierda desu en el trabajo, a la derecha como se proyecta @desu en el foro.

** Con esto ya he cumplido mi cupo semanal de tocar los webos (solo un poquito, una caricia) a desu.

1 respuesta
B

#30708 pero cítalo, que parece que le tines miedo

CC: @desu mira lo que dice tu fan @uchar

PD:

spoiler
1 respuesta
B

#30709 2021 y el foro aún no es capaz de autodetectar menciones... no es mi culpa, es culpa de la tecnología disponible.

@vago_21 creo que te molesta más a ti las mierda-chorradas que suelto que al propio @desu xD

1 respuesta
B

#30710 qué va tío, a mí no me molesta, me gusta el salseo, por eso meneo el avispero y el clítoris de tu madre

1 1 respuesta
B

Buenas, la verdad que no me gusta nada netbeans, me parece horrible a la vista viniendo de intellij.

¿Qué IDE usaríais? Había pensado en llevarme Intellij portable mediante esto pero no sé si a alguno se os ocurre algo mejor.

1 respuesta
B

#30712 VS Code con el plugin de VIM, lo uso hasta para Scala, que normalmente se usa Intellij. Netbeans y Eclipse hace años que están en decadencia

1 respuesta
B

#30711 Eres de gustos raros amigo... te metes en trincheras que yo no haría... pero siempre que mi madre lo acepte con gusto no tengo problemas.

1
B

#30713 Pero vscode no es un IDE, ¿no?

1 respuesta
Naith

IDE? Ninguno. Uso Emacs.

Wei-Yu

#30715 lo de IDE/editor da igual al final, algunos editores tienen plugins para que puedas hacer cosas desde el propio editor, pero si no lo haces desde la terminal y ya, no tiene mucha más trascendencia.

Lo que sí te encontrarás son lenguajes que van mejor en algunos sitios que en otros (como c# en visual studio y java en intellij idea).

isvidal

la gente normal usa IntelliJ (Para lo que quieras, tienen versiones para todos los lenguajes)

Te da demasiada calidad de vida

Emacs es como el que corre sin zapatos

Kaledros

IntelliJ vale lo que cuesta sólo por el debugger. El "evaluate expression" es una barbaridad.

Wei-Yu

"el que corre sin zapatos"

pues lo natural y lo de toda la vida, lo que os mola a los de pueblo

2 1 respuesta