#database #nosql
#База данных #nosql
Вопрос:
Я планирую создать систему каталогизации файлов. Это будет делать что-то очень похожее на то, что iTunes делает для музыки, но только с другими типами файлов.
Итак, чтобы уточнить, приложение будет иметь коллекцию файлов и будет хранить метаданные о файлах в базе данных. Для музыки в ней будут храниться все исполнители, участвующие в этой конкретной песне, а также альбомы, в которых песня была выпущена, и т.д.
Чтобы облегчить поиск в коллекции файлов и связанных метаданных, я рассматриваю возможность использования базы данных.
Я планирую написать эту программу с использованием C / Qt4 в качестве учебного упражнения по базам данных, Qt4 и хорошим методам кодирования на C .
Какую систему баз данных вы бы порекомендовали для подобной задачи? Вот те, которые я думал использовать. Не стесняйтесь предложить что-нибудь еще.
- MongoDB
- CouchDB
- SQLite
- Хранилище кортежей, такое как 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 прекрасно подойдет. Но как только это усложнится (управление версиями, объединения, автоматическое разделение), вам понадобится самый большой набор доступных функций, а также как можно больше мест для подключения. Взгляните на каждую и решите для себя, какая из них более привлекательна…