안녕하세요... 안드로이 공부하면서 어플을 하나 만들고 있는데...
contact에서 생일정보를 가지고 와서 제가 생성한 DB에 저장하여 작업 중에 있습니다..
그런데... DB 삭제나 추가시 Content Observer 를 통해 해당 record를 가지고 올려구 했으나
그것까지는 아직 알수 없다고 해서...
연락처 삭제시 제가 생성한 DB에서 기존 생일자 정보를 다 지우고 다시 insert 하는게 빠른지
아님.. 생일자 하나 하나 검색해서 검색된거 체크해서 체크 안된 하나의 레코드를 지우는게 빠를지
고수님들의 답변 부탁드릴께요...
PS . DB사용시 insert 가 시간을 많이 잡아 먹는걸루 알고 있어 질문 드립니다...
DB 가 속도가 얼마나 빠른지 모르시군요...
인터넷에 DB 설계 10가지 규칙이 있는데
그것까지 더하면(정규화 등등) 엄청 대단한 파일시스템 입니다.
Mysql 같은경우 저같은 허접이 만들어도
1초에 삽입 3,000건 가량은 충분히 버틸겁니다.
또한 잘 짠 코드 하나 10개 Oracle 안부럽다는 얘기가 있습니다.
코드를 어떻게 잘 짜시냐에 따라서 엇갈립니다.
문제는 무선 인터넷 속도가 관건일거라고 봅니다.
또한 질문에 대한 답변은
규모가 크거나 작거나 상관없이 당연히 후자 경우라고 말씀드리고 싶네요.
특수한 상황이라면 delete 후에 insert하는 것도 방법이긴 합니다만, 그건 아주 특별한 경우에만 해당된다고 봅니다. 제 생각으로는 키값을 체크해서 insert/update를 해주는 형태로 코딩해야 하는 이유는 여러가지가 있을 것 같습니다.언뜻 떠오르는 것 중에는
1. 다른 테이블이나 레코드에서 contact id칼럼을 참조할 경우 문제가 생길 수 있다.
2. 중복을 체크해서 사용자에게 알려줘야 할 필요가 있을 수 있다.
3. 로그를 기록해야할 경우 키값이 되는 contact id가 변경된다면 문제가 생긴다. contact id로 정렬을 할 때도 정렬순서가 달라진다.
이 외에도 여러가지 문제가 더 있을 수 있겠죠. 어쨋든 앞으로 기능이 확장되거나 업무로직이 변경되었을 때 영향이 최소화 될 수 있도록 설계하시는것이 중요하다고 봅니다. 아주 아주 스페셜한 경우가 아니라면 키값 체크 후 insert/update를 처리하시는 것에 한표.




ㅋㅋㅋ 저라면 걍 엎어 칩니다. 몇천개 안넘어가면 문제가 될리 없을거 같고
설령 수만 명이라고 쳐도 다이얼로그 처리 하면 문제 없을거 같네요.
(작업 시간이 상황에 따라 달라지는 일은 다이얼로그 처리 해야 합니다.)
이런 문제는 프로그램 스타일에 따라서 호불호가 갈리는 문제죠
최선의 효율을 무조건 고집한다 VS 조금 비효율일 지라도 코드의 단순성과 작업효율의 융통성을 조절한다.
특히 DB Insert가 굉장히 무거운 연산이긴 하나 몇백개정도는 사람이 느끼기에 부담이 없는 속도일테고
모바일은 HDD 대신 Flash Memory 기 때문에 기존 PC에서의 그 차이와는 훨씬 더 부담이 없어요
정 마음에 걸린다면 ㅋㅋ
님의 DB에 contact ID 도 함께 저장해서 변경시 ID 만 비교해 가면서 빠진건 빼고 들어온건 지우면 되겠군요.