by grande [Oracle 기초] oracle mybatis [2024.05.08 11:23:17]
안녕하세요. 데이터 부분 궁금한점이 있어 문의드립니다.
현재 대량의 데이터를 DB에 insert를 하고 있습니다. 입력할때마다 PK인 ID값이 1씩 증가하는 형태인데,
만약 동일한 api를 요청했을경우 중복을 방지하고자 update 처리를 하려고했으나 화면에서 일련번호를 가져오는게 아니라 특정 api를 조회하는거라 화면상에서 ID값을 알 수가 없어서
해당 그룹ID를 조회하여 DELETE 이후에 INSERT를 하려고했습니다.
그런데 데이터 수가 많아서 1000개가 넘는 데이터가 들어올경우
delete를 해도 이후 생성되는 insert 때문에 생성된 데이터가 다음 for문에서 삭제되게 되더라구요.
트랜잭션때문에 delete와 insert가 한 단위로 이루어지게 하고싶은데 그룹ID로 조회해서 INSERT전에 따로 for문을 만들어서 DELETE를 모두 하고 해야할까요?
그리고 DELETE 이후 바로 INSERT를 할떄 이게 데이터양이 많은지라 음... 좀 비효율적이라는 생각이 드는데
api요청시 들어오는 데이터가 데이터베이스에 있는 데이터랑 같은 데이터인지 알 수 없는 경우에는 보통 어떻게 처리를 하는지 궁금합니다.
보통 화면상의 ID값으로 update 처리만해봤지 지금하는건 특정 API의 갱신(?)의 느낌이라 좀 생소하네요.
혹시 비슷한 경험이 있으실까요?
PK 정보가 없다면? 불가능하지 않을까요?
API기준인데 동일한 KEY값을 알수 없다면 제가 볼땐 KEY값은 의미가 없는듯 합니다.
API 호출시 데이터건수에 대한 기준이 있을듯 한데요 날짜라던지 등등 기타기준이 있다면 그 기준으로 DELETE 후 API 호출데이터를 INSERT 하는식으로 해야할듯 합니다.
건바이건으로 DELETE , INSERT가 아닌 호출되는 전체 데이터기준으로 로직을 변경하시는게 좋을듯 합니다.
아 그런 방법이 있었군요. 1페이지에 1000개의 데이터를 받는다고했을때 2페이지부터 delete도 기준을 잡아야겠네요