Как лучше всего сохранить массив строк в SQLite на Android?

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

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

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

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

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

В таблице по одной строке на элемент.

Shawn 08.03.2019 04:34

См. sqlite.org/limits.html.

ADM 08.03.2019 04:57
2
2
149
1

Ответы 1

На самом деле вы обращаете внимание не на ту часть дизайна вашей базы данных.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по теме