Решения для баз данных для хранения/поиска данных EXIF

У меня есть тысячи фотографий на моем сайте (каждая с числовым PhotoID), и у меня есть данные EXIF ​​(фотографии также могут иметь разные теги EXIF).

Я хочу иметь возможность эффективно хранить данные и искать их.

Некоторые фотографии имеют больше данных EXIF, чем другие, некоторые имеют одинаковые данные и т. д.

По сути, я хочу иметь возможность запрашивать «Выбрать все фотографии с местоположением GPS» или «Все фотографии с определенной камеры».

Я не могу использовать MySQL (он не будет хорошо масштабироваться с огромным объемом данных). Я думал о Cassandra, но не думаю, что она позволяет мне запрашивать поля. Я посмотрел на SimpleDB, но я бы предпочел: не платить за систему, и я хочу иметь возможность запускать более сложные запросы к данным.

Кроме того, я использую PHP и Linux, поэтому было бы здорово, если бы он мог красиво взаимодействовать с PHP.

Изменить: я бы предпочел использовать какую-либо форму базы данных NoSQL.

Есть идеи?


person Mitch Dempsey    schedule 29.04.2010    source источник
comment
Не могли бы вы уточнить, что с MySQL не работает?   -  person Zarigani    schedule 29.04.2010
comment
Поскольку данные огромны, и мне нужно решение, которое можно хорошо масштабировать.   -  person Mitch Dempsey    schedule 29.04.2010
comment
MySQL регулярно используется для запросов к миллионам записей и сотням столбцов. Предполагая, что вы не планируете хранить весь файл изображения в БД (вы могли бы, но я, конечно, не рекомендовал бы это), у MySQL не должно быть проблем с объемом данных, которые вы просматриваете.   -  person Zarigani    schedule 29.04.2010
comment
Я не храню данные изображения... но кажется, что в какой-то момент MySQL рухнет под нагрузкой.   -  person Mitch Dempsey    schedule 29.04.2010


Ответы (2)


Лично я, вероятно, предпочел бы MySQL, но если вы ищете систему в стиле NoSQL, возможно, вам стоит заглянуть в Solr. . Это позволяет выполнять такие вещи, как фасетный поиск (например, сообщает вам, сколько ваших текущих результатов поиска соответствует каждому разрешению / формату / и т. д., и позволяет таким образом сузить область поиска).

person Zarigani    schedule 29.04.2010
comment
Solr - интересная идея. Я думаю, MySQL тоже будет работать, но я бы предпочел иметь типы данных для определенных ключей (а не просто varchar для ключа и значения) - person Mitch Dempsey; 29.04.2010
comment
Нет, типы данных не будут работать в MySQL таким образом. Поскольку мне нужно (photoid, exifkey, exifvalue), я должен использовать общий тип данных для значения, иначе у меня было бы много нулевых столбцов. - person Mitch Dempsey; 29.04.2010
comment
Думаю, я уступлю и попробую mysql, хотя было бы неплохо иметь более типизированную систему. - person Mitch Dempsey; 29.04.2010
comment
Хорошо, теперь я понимаю, что вы делаете, я вижу, как вы планируете хранить данные. Ради интереса, сколько полей определяет exif? В статье в Википедии говорится только о ~ 30, но не указано, был ли это полный список. Если есть полный четко определенный список, у меня возникнет соблазн дать каждому столбец и просто принять, что у вас будет много нулей. Если список неполный, то да, вы, вероятно, застряли с подходом пары ключ/значение. - person Zarigani; 30.04.2010

Я также сомневаюсь, что у MySql будут проблемы с загрузкой, но взгляните на CouchDB:

Apache CouchDB – это распределенная отказоустойчивая документо-ориентированная база данных без схем, доступная через RESTful HTTP/ JSON API.

person Gordon    schedule 29.04.2010