Amazon DynamoDB или MySQL для хранения больших массивов внутри каждой строки
Я пытаюсь решить, какую базу данных мне следует использовать для приложения, которое я делаю. Я склонялся к DynamoDB из-за его масштабируемости, но потом я прочитал в документации, которая гласила:
размер предмета ограничен 64 КБ
хотя похоже, что MySQL имеет аналогичное ограничение, задокументированное здесь
Это приложение будет хранить много данных в двух массивах, которые могут содержать более 10000-100000 строк в каждом. Я предполагаю, что каждая строка будет иметь длину около 20 символов, поэтому каждый элемент массива будет иметь размер около 40 байт, а каждый массив может занимать около 4 МБ.
Учитывая это затруднительное положение, какую базу данных на Amazon AWS вы бы использовали; или как бы вы обойти ограничение размера на ряд?
3 ответа
Существует жесткое ограничение в 4096 столбцов на таблицу, но эффективный максимум может быть меньше для данной таблицы. Точный предел зависит от нескольких взаимодействующих факторов.
Каждая таблица (независимо от механизма хранения) имеет максимальный размер строки 65 535 байт. Механизмы хранения могут накладывать дополнительные ограничения на этот предел, уменьшая эффективный максимальный размер строки.
Таким образом, любая СУБД должна предоставлять одинаковый объем данных в каждой строке. Похоже, ни того, ни другого не будет достаточно для ваших нужд или для вашего способа обработки данных.
В любом случае, вам не следует хранить столько данных в каждой строке, возможно, лучше хранить каждую строку отдельно и использовать другие таблицы для ссылки на них.
После прочтения далее на странице требований к хранилищу MySQL я заметил этот раздел:
Внутреннее представление таблицы имеет максимальный размер строки 65 535 байт, даже если механизм хранения способен поддерживать большие строки. На этом рисунке исключены столбцы BLOB или TEXT, размер которых составляет всего от 9 до 12 байт. Для данных BLOB и TEXT информация хранится внутри другой области памяти, чем буфер строк.
С DynamoDB рекомендуется использовать Amazon S3 для хранения больших значений.
Другие варианты включают сжатие содержимого gzip, что даст вам около 200 КБ памяти.
Пожалуйста, смотрите слайды Мэтта Вудса ниже:
http://www.slideshare.net/AmazonWebServices/building-applications-with-dynamodb