마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

SharedPreferences VS SQLite

+2 추천
SharedPreferences VS SQLite

 

말그대로 SharedPreferences가 데이터 쓰고 읽는게 빠를까요 아니면

SQLite에 읽고 쓰는게 빠를까요..

 

 

 

두개를 비교해서 논문에 활용해보려고합니다.

물론 SharedPreferences가 앱의 갑작스런 종료시에 데이터가 날라가는걸 방지하기 위한 용도이긴 하지만

SQLite보다 빠르다면 데이터를 저장하는 것에 활용되면 더 좋을 것이라 생각하기 때문입니다.

그리고 같은 데이터를 저장했을때 내부 xml을 포함한 앱과 SQLite 디비를 포함한 앱의 크기가 차이가 난다면 이 역시

SharedPreferences를 사용할 이유가 될 수 있구요 ^^

 

많은 조언 부탁드립니다. ~~
와후 (380 포인트) 님이 2013년 5월 30일 질문

6개의 답변

+2 추천

SharedPreferences 은 다른 분들 말씀처럼 key:value 이기 때문에 오직 1:1로만 매칭 되며,
공통된 key 를 가지고 여러 데이터를 삽입할 수 없는 구조 입니다.
같은 key를 가지고 데이터를 삽입하면, 기존에 있던 데이터는 없어지게 됩니다.

그에 반에 sqlite 의 경우 뭐 아시겠지만 중복된 데이터가 허용되고 다수의 행에 데이터를 넣을수가 있죠.
1:1 은 물론 1:n, n:m 관계도 성립을 하죠.
그렇기 때문에 입력되는 데이터들이 일정한 형식과 다수의 데이터가 관계를 지니고 있다면,
sqlite 를 사용하는게 좋겠죠.

 

추가적으로 리플 중에, 

1학년 1반 - 홍길동
1학년 1반 - 김길순
1학년 2반 - 아무개

를 예로 드셨는데, 홍길동과 김길순은 같은 1학년 1반에 속하게 되는데, 이를 SharedPreferences 에 넣을수는 없습니다. 오직 키에 매칭되는 데이터는 1개여야 하는데, 홍길동, 김길순 2개가 존재하기에 하나는 삭제될수 밖에 없습니다. 그렇기에 이러한 데이터는 sqlite 와 같은 데이터를 활용하는게 좋겠죠.
만약 중복데이터 없이 key:value 와같은 형식의 데이터를 삽입한다면, 아무래도 구조상 
SharedPreferences 가 빠를 것으로 사료 됩니다만, 이러한 비교 자체는 의미가 없다고 봅니다.

결론적으로 이 둘을 비교하려는 접근이 틀리지 않았나 싶습니다.
비교를 하시고자 한다면, "sqlite"과 "xml 혹은 json"  그 자체랑 비교 해야 되지 않을까요?

Frog (3,910 포인트) 님이 2013년 5월 30일 답변
Frog님이 2013년 5월 30일 수정
+1 추천

??질문이 이상합니다. 비교할 대상이 아닙니다.

누가 더 낫다 라고 하려면 구체적인 사용처라던가 사용방법이라던가 동일해야 하는데

위 두녀석은 그런게 아니에요

" SharedPreferences가 앱의 갑작스런 종료시에 데이터가 날라가는걸 방지하기"... 라고 누가 그러던가요

물론 이런용도로 쓸수도(?)있지만.. 

각각 필요에 따라 쓰는것 뿐.. 비교할 내용이 아닙니다.

ezmo01 (1,510 포인트) 님이 2013년 5월 30일 답변
음.. 네 제가 좀 비교할 대상이 아닌 것을 말한거 같긴하네요 ^^;
단순 데이터들, 예를들어 레코드 별로
1학년 1반 - 홍길동
1학년 1반 - 김길순
1학년 2반 - 아무개... 등등

이러한 데이터가 쭈욱 나열되어 있다면
이런 데이터를 저장할때 db에다가 쓰고 읽고 하는게 빠른지
아니면 SharedPreferences에다가 쓰고 읽고 하는게 빠른지에 대해서
궁금했거든요 ^^
+1 추천
위엣분 말씀대로 용도가 다른 대상이라 비교하기 조금 애매할 수 있겠으나..

설정값을 db 로 저장하지 말란 법도 없고, 대용량 데이터를 프리퍼런스로 저장하지 말란 법도 없습니다.

용도가 설정 저장이면 당연히 프리퍼런스쪽으로 손을 들어주고

용도가 읽기 쓰기 업데이트가 잦은 데이터 저장용 혹은 join 이 필요한 데이터 select 등 이라면 sqlite 쪽으로 손을 들어주게 되겠지요..

단순히 몇건 데이터의 입력 출력에 대한 속도만 비교할 문제는 아니란 얘기죠
블랙넥원 (9,600 포인트) 님이 2013년 5월 30일 답변
+1 추천

http://developer.android.com/guide/topics/data/data-storage.html 여기에 안드로이드가 제공하는 데이터 저장방법등이있고

sql은 그냥 데이터베이스 질의형 언어이고

sharedpreferences 는 key:value 로 이루어진 /data/data/yourpackage/shared_prefs/xxxx.xml 식으로 저장 해놓는거 아닌가요??

용도에 따라 틀린거 같습니다.

추가/삭제/검색이 많으면 sql 인거 같고, 단순 저장이면 preferenece인거 같습니다.

 

bangbang (8,820 포인트) 님이 2013년 5월 30일 답변
0 추천

근데요... 님 논문인데 왜 남들이 분석을 해줘야 해요?

페어리 (12,270 포인트) 님이 2013년 5월 30일 답변
죄송합니다. ㅎ 분석해달라는게 아니구요 ㅎㅎ
이러한 아이디어가 있으니 여러분들은 어떻게 생각하시느냐 정도를 묻는거라고 생각해주셨으면 합니다. 감사해요
0 추천
다들 대단하십니다.

공부됩니다 ㅎㅎ

이런글 많았으면 좋겠네요^^
  (11,920 포인트) 님이 2013년 5월 30일 답변
...