База данных, используемая для построения системы каталогизации файлов

#database #nosql

#База данных #nosql

Вопрос:

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

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

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

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

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

  1. MongoDB
  2. CouchDB
  3. SQLite
  4. Хранилище кортежей, такое как Redis или Raik

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

Отредактировано название на в ответ на голоса за закрытие.

Комментарии:

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

Ответ №1:

Mongo и Couch — это NoSQL, в то время как SQLite — это реляционное решение. Я думаю, что для такой задачи вам лучше использовать базу данных документов, такую как Couch и Mongo.

Вы видели RavenDB? Это база данных документов, содержащая готовое разрешение конфликтов, сопоставление / сокращение запросов и полнотекстовую поисковую систему. Она написана на .NET, но к ней можно получить доступ через HTTP-запросы, которые вы можете довольно просто выполнить на C .

Комментарии:

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

2. Я заглянул в RavenDB, и хотя это может быть отличным решением, его зависимость от .Net заставляет меня не решаться использовать его для этого проекта, поскольку я ищу кроссплатформенное решение.

3. Потому что в настоящее время, когда у нас есть работающие базы данных без схемы, больше не имеет смысла помещать объекты в таблицы и строки. Я написал немного больше об этом здесь code972.com/blog/2011/05 /… в другом контексте. И RavenDB может работать на Mono.

4. Я действительно посмотрел, как работает RavenDB на Mono. Не могли бы вы указать, какие преимущества она имеет перед CouchDB / MongoDB для этого варианта использования.

5. Роб Эштон довольно пространно обсуждает эти темы в своем блоге: codeofrob.com/archive/2011/01/26 /… . С тех пор кое-что изменилось, но это должно помочь вам начать. Итог — это кажется довольно простым приложением, и любая DocDB прекрасно подойдет. Но как только это усложнится (управление версиями, объединения, автоматическое разделение), вам понадобится самый большой набор доступных функций, а также как можно больше мест для подключения. Взгляните на каждую и решите для себя, какая из них более привлекательна…