Каков наилучший способ сохранить массив строк в SQLite на Android? - PullRequest
0 голосов
/ 08 марта 2019

Один размер строки составляет около 200 байт, и он хранит размер 10 ~ 20 в суточном массиве.(Храните 10 ~ 20 строк по 200 байт в качестве типа массива)

Я нашел способ преобразовать массив в строку и сохранить его в SQLite.Однако я не знаю, что это хорошая идея, потому что размер строки велик.

1.Если массивы строк большие, то стоит ли хранить массивы в виде строки?

2.или есть лучший способ?

Я бы хотел совет.Спасибо.

1 Ответ

0 голосов
/ 08 марта 2019

Вы фактически ставите свою проблему не на ту часть вашей базы данных.

Для SQLite максимальная длина строки *1003* составляет 1 миллиард байт, поэтому ваши опасения по поводу ваших 10-20 строк по 200 байт каждая на самом деле не считаются такими большими.

Нет ничего страшного в том, чтобы хранить ваш массив как одну длинную строку в вашей базе данных. Особенно, когда он нигде не приближается к максимальному пределу строки.

Ваше время запроса к базе данных не станет больше из-за большой длины вашей строки. Здесь реальная проблема - обработка, которую вы будете выполнять над этой строкой, чтобы превратить ее обратно в массив. Как правило, если строка слишком длинная, реальный удар по производительности происходит, когда вы сглаживаете массив в строку и когда вы преобразуете эту строку обратно в массив.

Однако, как правило, это то, для чего вы будете показывать пользователям индикатор загрузки.

Для хранения массива в базе данных, на самом деле есть только два способа сделать это:

  • Свести массив в одну строку и сохранить строку как TEXT

  • Создайте таблицу, предназначенную для хранения отдельных элементов строки, и включите столбец для внешнего ключа, который позволяет связать эти строки с одним и тем же массивом. Затем вы будете хранить каждый элемент ваших массивов String в виде строки в этой таблице.

В зависимости от того, что вам нужно, один дизайн лучше другого.

Например, вы обычно предпочитаете вторую реализацию, если ваше приложение требует от вас постоянно редактировать отдельные элементы массива.

Для такого примера не имеет большого смысла использовать первое решение, потому что это означает, что каждый раз, когда вы хотите редактировать содержимое массива, вы будете извлекать весь массив целиком. Это нецелесообразно, когда вы хотите только извлечь или отредактировать определенную часть этой строки.

Следовательно, в таком примере гораздо практичнее хранить отдельные элементы массивов в отдельных строках таблицы, предназначенных для данных этого типа. Вы будете запрашивать только нужную вам строку и обновлять только нужную.

Итак, чтобы ответить на ваши вопросы, на самом деле есть только два способа сохранить ваш массив String как тип TEXT в вашей базе данных SQLite. Оба способа работают, и реальная задача состоит в том, чтобы решить, какое решение лучше всего соответствует вашим потребностям.

Если вашему приложению требуется, чтобы вы каждый раз сохраняли и извлекали массив целиком, тогда более предпочтительным может быть метод String.

Но если ваше приложение требует от вас работы с отдельными элементами вашего массива, то использование метода таблицы будет более удобным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...