데이터베이스를 사용하는 이유는 일단은 검색, 무결성, 호환성입니다.
만드시는 프로그램이 위의 이유를 전부 만족해야한다면 지금 작성하시는 파일 저장방식이
sqlite가 되어갈 확률이 높습니다.
데이터베이스가 너무 느린 경우라면 쿼리나 인덱스등 최적화를 한번 생각해보시는 것도 좋으실것 같습니다.
또한 데이터베이스가 쿼리를 수행하는 과정 중 문자열로 작성된 쿼리를 컴파일하고 쿼리 계획을 세우는데
꽤나 많은 시간이 걸립니다. 이를 줄이기 위해서 statement라는 것을 sqlite에서 지원합니다. 만약에 안쓰셨다면
써보시기를 강력히 권장합니다.
지금 하실려는 기능은 만약에 시스템에 문제가 생길 경우에는 데이터가 손실되는 문제가 있습니다.
데이터베이스는 이러한 문제가 생겨도 롤백이 가능하도록 하는 기능이 존재합니다.
일단 파일시스템 구조상 중간에 데이터를 끼워넣는게 힘듭니다. 그래서 일단 뒤에 붙여넣고 검색이 필요할 경우를
대비하여 레코드를 찾을 수 있는 메타데이터를 같이 넣습니다. 그리고 더 빨리 찾을수 있도록 인덱스를 구성합니다.
대충 이런것이 데이터베이스입니다.
1번 방법의 큰 성능상 문제는 파일을 나눈후(디스크에 기록) 합치는(나눈 것을 다시 메모리로 읽어서 디스크에 기록)것은
엄청난 디스크 액세스를 유발합니다. 더 느려지죠.
2번 방법 또한 레코드 하나 끼워넣을려고 디스크에서 데이터를 다 메모리에 넣고 그걸 다시 디스크에 기록합니다. 더 느려지죠.
성능상 가장 좋은 방법은 그냥 뒤에 붙여넣는 것입니다.
그러다보면 아마 만드시는 파일저장방식이 sqlite가 될겁니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
데이터베이스를 사용하는 이유는 일단은 검색, 무결성,
데이터베이스를 사용하는 이유는 일단은 검색, 무결성, 호환성입니다.
만드시는 프로그램이 위의 이유를 전부 만족해야한다면 지금 작성하시는 파일 저장방식이
sqlite가 되어갈 확률이 높습니다.
데이터베이스가 너무 느린 경우라면 쿼리나 인덱스등 최적화를 한번 생각해보시는 것도 좋으실것 같습니다.
또한 데이터베이스가 쿼리를 수행하는 과정 중 문자열로 작성된 쿼리를 컴파일하고 쿼리 계획을 세우는데
꽤나 많은 시간이 걸립니다. 이를 줄이기 위해서 statement라는 것을 sqlite에서 지원합니다. 만약에 안쓰셨다면
써보시기를 강력히 권장합니다.
지금 하실려는 기능은 만약에 시스템에 문제가 생길 경우에는 데이터가 손실되는 문제가 있습니다.
데이터베이스는 이러한 문제가 생겨도 롤백이 가능하도록 하는 기능이 존재합니다.
일단 파일시스템 구조상 중간에 데이터를 끼워넣는게 힘듭니다. 그래서 일단 뒤에 붙여넣고 검색이 필요할 경우를
대비하여 레코드를 찾을 수 있는 메타데이터를 같이 넣습니다. 그리고 더 빨리 찾을수 있도록 인덱스를 구성합니다.
대충 이런것이 데이터베이스입니다.
1번 방법의 큰 성능상 문제는 파일을 나눈후(디스크에 기록) 합치는(나눈 것을 다시 메모리로 읽어서 디스크에 기록)것은
엄청난 디스크 액세스를 유발합니다. 더 느려지죠.
2번 방법 또한 레코드 하나 끼워넣을려고 디스크에서 데이터를 다 메모리에 넣고 그걸 다시 디스크에 기록합니다. 더 느려지죠.
성능상 가장 좋은 방법은 그냥 뒤에 붙여넣는 것입니다.
그러다보면 아마 만드시는 파일저장방식이 sqlite가 될겁니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
답변 감사합니다. ㅇ_ㅇ''
하나하나 잘 설명해주셨네요.
말씀하신 내용이 참 많은 도움이 되었습니다.
다행이도. 문제시되었던 sqlite의 성능저하현상은 어떤분의 도움으로
해당 쿼리를 아래.위에 넣었더니 향상되었습니다.
db.transaction()
실행루틴.
db.commit()
여러분들의 도움과 답변 감사하게 생각합니다. ㅇ_ㅇ'''
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기