SQLite 데이터베이스와 공유 환경 설정간에 정보를 저장하는 좋은 메커니즘은 무엇입니까?
공유 환경 설정을 사용하는 이유는 무엇입니까? 왜 sqlite를 사용합니까? 나는 그들 사이의 차이점을 찾으려고 노력했으며 이것이 데이터 저장을위한 더 좋은 메커니즘이지만 Google에서 적절한 답변을 찾을 수 없습니다. 예와 설명을 도와주세요.
SQLite 데이터베이스와 공유 환경 설정간에 정보를 저장하는 좋은 메커니즘은 무엇입니까?
공유 환경 설정을 사용하는 이유는 무엇입니까? 왜 sqlite를 사용합니까? 나는 그들 사이의 차이점을 찾으려고 노력했으며 이것이 데이터 저장을위한 더 좋은 메커니즘이지만 Google에서 적절한 답변을 찾을 수 없습니다. 예와 설명을 도와주세요.
답변:
실제로 저장하려는 데이터에 따라 다릅니다.
SQLite
데이터베이스는 이러한 종류의 데이터를 위해 설계되었으므로 대량의 동일한 구조화 된 데이터를 SQLite 데이터베이스에 저장해야합니다. 데이터는 데이터베이스에 의해 구조화되고 관리되므로 SQL과 같은 쿼리 언어를 사용하여 특정 기준과 일치하는 하위 데이터 세트를 가져 오도록 쿼리 할 수 있습니다. 이를 통해 데이터를 검색 할 수 있습니다. 물론 많은 양의 데이터를 관리하고 검색하면 성능에 영향을 미치므로 데이터베이스에서 데이터를 읽는 것이 SharedPreferences에서 데이터를 읽는 것보다 느릴 수 있습니다.
SharedPreferences
SharedPreferences는 특정 키 아래에 데이터를 저장할 수있는 키 / 값 저장소입니다. 상점에서 데이터를 읽으려면 데이터의 키를 알아야합니다. 따라서 데이터를 매우 쉽게 읽을 수 있습니다. 그러나 소량의 데이터를 저장하는 것만 큼 쉬운 것은 모든 단일 데이터에 대해 키를 정의해야 할 때 큰 구조적 데이터를 저장하고 읽는 것이 어렵 기 때문에 특정 개념이 없다면 데이터 내에서 실제로 검색 할 수 없습니다 키의 이름을 지정합니다.
이 질문에 대한 답은 있지만 속도와 관련하여 더 많은 주제가 있다고 생각합니다.
응용 프로그램의 SharedPreferences와 Sqlite DB는 모두 파일 일 뿐이며 장치의 파일 시스템에있는 응용 프로그램의 디렉토리에 저장됩니다. 데이터의 양이 너무 크지 않으면 Sqlite 옵션은 더 간단한 액세스를 위해 처리 오버 헤드가 더 큰 더 크고 복잡한 파일을 포함합니다.
따라서 데이터의 특성이 (응답에 설명 된대로) 선택을 지시하지 않고 속도가 중요한 경우 SharedPreferences를 사용하는 것이 좋습니다.
그리고 일부 데이터를 읽는 것은 종종 주요 활동을 표시하는 중요한 경로에 있으므로 속도가 매우 중요하다고 생각합니다.
속도와 효율성에 대한 마지막 생각-구조화 된 일부 데이터에 Sqlite 데이터베이스를 사용해야하는 경우 데이터베이스에 사용자 기본 설정을 저장하는 것이 더 효율적이므로 두 번째 파일을 열지 않아도됩니다. 이것은 상당히 사소한 고려 사항입니다. 주요 활동을 표시하기 전에 구조화 된 데이터와 기본 설정 모두에 액세스해야하는 경우에만 고려할 가치가 있습니다.
내 속도는 속도 나 크기가 아니라 데이터에 대해 수행하려는 작업의 종류입니다.
당신이하려는 경우 가입 , 종류 , 및 기타 DB 작업 데이터에 다음 갈 SQLite는 . 예를 들어 날짜별로 데이터를 정렬합니다.
int, boolean, String과 같은 간단한 값을 매핑하려면 Preferences 를 사용하십시오 . DB 작업은 여기서 작동하지 않으며 모든 키가 필요하다고 말할 필요가 없습니다. 예를 들어 사용자 비밀번호 또는 앱 구성이 있습니다.
환경 설정을 채택하려는 큰 유혹은이를 사용하여 플랫 화 된 POJO (직렬화 된 JSON 오브젝트)를 문자열로 저장하려는 경우입니다. 실제로 그러한 필요는 Sqlite를 사용하는 표시입니다. 왜 ? 복잡한 데이터는 결국 복잡한 opration이 필요하기 때문입니다. 간단한 "SELECT ... WHERE id = 1"로 처리 할 수있는 특정 항목을 검색한다고 상상해보십시오. 환경 설정 경로에서 이는 직렬화 해제에서 결과 반복까지 오랜 시간이 소요됩니다.
SharedPreferences
한 번에 여러 키 / 값 을 지우고 (예 : 키 user
와 password
키 모두 ) 두 키가 설정되지 않았거나 두 키가 모두 설정되어 있는지 확인할 수 있습니다.
방대한 양의 데이터를 저장하려면 SQLite 데이터베이스 시스템으로 이동하십시오. 이를 통해 사용자는 데이터를 검색 할 수 있습니다.
반면에 소량의 데이터를 저장하려면 공유 환경 설정으로 이동하십시오. 이 경우 거대한 데이터베이스 시스템이 필요하지 않습니다. 이를 통해 사용자는 단순히 데이터를 저장하고로드 할 수 있습니다.
SQLLite는 SharedPreferences를 잊어 버리고 Realm을 사용하십시오. 모든 로컬 스토리지를위한 단일 솔루션. 평범한 오래된 Java 객체를 RealmObject로 사용하여 데이터를 저장할 수 있습니다. 선택 쿼리를 JSON 파일로 변환 할 수 있습니다. 전체 데이터베이스를 구문 분석 할 필요가 없습니다. 이 링크를 확인하십시오 : https://realm.io/news/introducing-realm/