База данных для большого количества блоков данных размером 1 КБ (MySQL?) - PullRequest
1 голос
/ 29 апреля 2009

У меня очень большой набор данных, каждый элемент в наборе данных имеет размер примерно 1 КБ. Данные должны быстро запрашиваться многими приложениями, распределенными по сети. В наборе данных содержится более миллиона элементов (таким образом, фрагменты данных 500 миллионов + 1 КБ).

Каков наилучший способ хранения этого набора данных (необходимо разрешить добавление большего количества элементов и их быстрое чтение, но никогда не изменять уже добавленные данные)? Было бы целесообразно использовать БД MySQL с использованием формата двоичного двоичного объекта?

Или каждый из них должен храниться в виде файлов в файловой системе?

edit: сейчас это 1 миллион предметов, но его нужно легко масштабировать до 500 миллионов предметов.

Ответы [ 3 ]

1 голос
/ 04 мая 2010

Поскольку нет необходимости индексировать что-либо внутри объекта. Я бы сказал, что файловая система - это, вероятно, ваш лучший выбор, а не реляционная база данных. Поскольку есть только уникальный идентификатор и большой двоичный объект, здесь действительно нет никакой структуры, поэтому нет смысла помещать его в базу данных.

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

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

0 голосов
/ 29 апреля 2009

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

MySQL - хороший выбор. Но убедитесь, что у вас установлены правильные индексы.

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

0 голосов
/ 29 апреля 2009

Это один ГБ данных. Для чего вы собираетесь использовать базу данных?

Это определенно просто файл, прочитайте его в ram при запуске.

Легко масштабировать до 500 миллионов. Это просто занимает еще несколько машин. В зависимости от точных характеристик приложения, вы можете нормализовать или сжать данные в оперативной памяти.

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

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