Feda /dev/

_Rpv

#32580 una transacción de 1M no la va a hacer uno de fp, demasiada responsabilidad

MisKo

Puto troyer de vacaciones

eXtreM3

Troyer está siempre de vacaciones, para lo que hace...

MisKo

Cada vez q troyer coge vacaciones las acciones de donuts caen en picado

(no tiene dinero para comprarse donuts en casa)

1
afhn

#32580 mismamente una inserción como dices, tendrá pks, fgs, índices únicos, y para que haya seguridad, consistencia y concurencia se tiene que hacer en transacción. Vamos, hacer las cosas bien para que haya robustez. Así están las cosas, hechas mal, que después te piden robustez pero la bbdd que hay que migrar de la app origen te lo impide, y los clientes lloran y después a ver qué haces, te metes el palo por el culo.
Y te lo digo por experiencia, tenemos que migrar una app y una de las tablas viene con +500k registros y más del 30% de los registros vienen inconsistentes, con campos repetidos como el cif/nif y sin pks ni relaciones o campos metidos en un mismo campo, para supuestamente una app robusta :/. A ver qué haces.

por eso digo que el ejercicio ese que está haciendo, se lo están enseñando mal. Yo nada más entrar a ese nivel directamente a hacerlo con JDBC o Hibernate y que empiecen a trabajar los insert/update/delete con commit y rollback.

2 respuestas
Soulscx

robusto es eso de pesar > 80 Gb ?

eXtreM3

Si cabe en un pendrive no es bigdata.

1 respuesta
Amazon

#32587 https://www.amazon.es/Kingston-DTUGT-2TB-DataTraveler-Ultimate/dp/B06X1CSCZB

2 respuestas
afhn

#32588 no sé si me daría más miedo salir con eso en el bolsillo o un móvil de última generación :S.

B

#32585 Comprendo, me has metido ganas ahora de empezar con Hibernate, conociendo al profesor me da que va a mostrar alguna forma de hacer la conexión a bd a pelo y luego nos enseñará lo "fácil" que es como Hibernate y tal.

eXtreM3

#32588 un mes de trabajo para un 1.4k, not bad!

pd: comprado.

Lecherito

Insertar 1M de articulos de una transaccion xdddddddddd

Vaya tela con alguna gente lol

Te falla en el ultimo y a tomar por culo

1 1 respuesta
eXtreM3

#32592 pues lo tienes en el exception huehue

1
Camp1

#32585 Pero si está haciendo una inserción de productos simples, no hay más, no va a tener fgs. Simplemente intenta insertar que falla -> a la tabla de fallos. Una única operación en ddbb ya es de por si una transacción implícita, no tiene que hacer más mierdas. Y de todas formas, no estamos desviando del tema que es el abuso de las excepciones. Y más aún, esto es FEDA.

Ontopic: suck JS, FP noobs, >1.4k

B

Pues si, un millon y si falla uno rollback... igual ese uno es una clave foránea de la que tiran el resto de registros... mola tener un millon de registros pensando que están "sanos" y resulta que cuando quieres tirar consulta peta por todos lados por que falta la referencia de turno.

Se nota que no lleváis software contable.... xDDD

1 respuesta
Wei-Yu

pf es que meClas las cosas pila macho xddd

Lecherito

#32595 Si es una foreign key de la que tiran el resto de registros no te va a dejar insertar el primer registro ya que te falta la FK lmao

Mucho software contable pero de base datos poquito eh

1 respuesta
B

#32597 Acaso no puede ser nulo? Por algo existe el borrado en cascada y esas cosas...

1 respuesta
Lecherito

#32598 Manzanas traigo

1 respuesta
MisKo

4
B

#32599 Creo que tu estas presuponiendo cosas al igual que yo... ¿Porque tiene que empezar la cosas con una base de datos vacia?

Otro ejemplo:
Tengo una factura a la que le quiero cambiar el precio de tres artículos... de las tres escrituras una falla, por asegurar la integridad de los datos lo hago en una transacción y si peta algo tiro de rollback. Muestro al usuario lo que ha petado, el usuario hace lo que tiene que hacer y vuelve a intentarlo.
Si tirase de trasacciones y rollback, otro usuario que editase la misma factura vería cambios "a medias" irreales con la verdadera situación de la factura... y empezaría la fiesta.

1 respuesta
Lecherito

Nen que me da igual como lo digas, que NO contemplo meter datos a una base de datos relacional que no esten protegidos por FK. Me da igual como me lo quieras explicar, me da igual el estado de la base de datos. Si me dan una base de datos que no es consistente lo primero que voy a decirles es que con eso no se puede trabajar y que lo primero que hay que hacer es arreglar lo que hay antes de meterle mas mierda (y esto ya lo he hecho).

Lo mires por donde lo mires es una absurdez hacer una transaccion con 1M de inserts, es simplemente absurdo que se te joda uno y tengas que volver al principio. Es como si vas a barcelona desde cadiz y si pinchas una rueda a 50 kilometros tienes que volver a salir desde cadiz.

Tengo una factura a la que le quiero cambiar el precio de tres artículos...

Ahora me comparas 1M de inserts con 3 updates? kek

1 respuesta
HeXaN

¿En serio estamos discutiendo si es correcto meter un millón de "filas" en una misma transacción? xD

1 respuesta
eXtreM3

#32601 es mejor abrir la factura y no ver ningún producto asociado. Qué ejemplo más malo has puesto.

Ya dejando de lado el tema de las inserciones (que a nada que hayáis gestionado alguna DB medio decente sabréis que lo que se está discutiendo es una estupidez), de qué sirve tener una FK con valores nulos? Para una auditoría quizás? Porque en la práctica es una tontería.

1 respuesta
B

#32602 Si tengo el caso especial de tener que actualizar 1M de registros y solo peta uno... si, tienes razón... daría la transacción por buena y editaría ese registro "a mano".

Si tengo una factura con un millón de artículos y el usuario edita la factura para cambiar el precio de un millón de esos precios (ya que estamos en casos hipotéticos me imagino a un tipo con paciencia infinita) y de esas peta una escritura, tiro de rollback como manda el señor... quien no me dice a mi que no está otro usuario editando la misma factura y por culpa de usar la estrategia "hasta donde entre!" en el tiempo que el usuarioA tarda en corregir el único fallo no está el usuarioB haciendo uso de ese registro 'desfasado'? Y créeme cuando te digo que confiar en la rapidez del usuario es algo muy muy muy endeble... la memoria falla.. la pereza... el pensé que lo hice pero no se hizo... etc.. etc..

1 respuesta
afhn

#32605 un ejemplo de eso, es los artículos que puedes agregar a un albarán que de repente vayas a hacer un insert y que no quede stock de uno de los artículos porque alguien fue más rápido y vacío el stock. No se le puedes dejar insertar un albarán con una ristra de artículos y decirle al final; eh, que este último artículo no te lo voy a insertar porque no queda en stock. Te jodes y haces otro albarán porque además, no se puede editar el contenido de un albarán dado de alta porque otro usuario podría estar gestionando la entrega de ese albarán.

y ojo, el albarán puede tener más de 500k artículos si le saliese de los huevos xd, pero no puedes insertar y los que fallen a tomar por culo y darle de alta el albarán y que después se ponga a toquetear el contenido, porque ese posible albarán puede ser un pedido y nada más tramitarlo se esté gestionando en otro lado haciendo que no haya consistencia.

1 1 respuesta
Soulscx

#32603 cual es la solucion adecuada para estos casos pato?

1 respuesta
B

3 ficheros, uno tiene datos de propietarios, otro datos de vehículos y otro la relación entre ellas.

spoiler

Meto en spoiler, que me he pasado con las fotitas.

1 respuesta
eXtreM3

#32606 pero no te das cuenta que en ese caso, lo que no se genera es el albarán? Madre de Dios.

#32608 los datos completos para qué hacen falta? En la tabla relación te basta con tener matrícula y DNI, asumimos que son únicos (y que un mismo DNI puede tener N matrículas).

3 respuestas
B

#32609 Mi idea para recoger los datos de los ficheros es recorrer el fichero con la relación, en cada linea mando a buscar e instancio el Propietario o el Vehiculo, esa información guardarla en un Arraylist<Propietario_Vehiculo>, luego mandar ese ArrayList a la clase Write para que los escriba al fichero.

Pensando se me ocurre otra opcion, en la clase Reader, cada vez que leo 1 propietario y 1 vehículo,llamar a Writer y escribirlos al fichero directamente, haciéndolo así no me haría falta ni las clases Propietario y Vehiculo siquiera.

Edit: Creo que si las necesitaría, al menos con la forma que conozco para hacer esto.

Tema cerrado