Могу ли я использовать RavenDB (NoSQL) или я должен просто использовать MySQL (RDBMS)? - PullRequest
3 голосов
/ 17 февраля 2011

Я запускаю систему общего управления ASP.NET MVC 3 (первым компонентом является Управление проектами).Сейчас я немного читаю на RavenDB, и это звучит довольно интересно.Одна из самых больших вещей, которые мне нравятся в этом, - это то, что мне не нужен какой-либо тип ORM для обработки данных из БД.Это сделает мой код намного чище и быстрее.Однако, если исходить из опыта работы исключительно с MySQL в течение последних 6 лет, я склонен мыслить очень тесно с моими данными.Есть несколько вещей, которые выглядят так, будто NoSQL не подходит.Я хочу выбросить эти вещи, и, возможно, эти проблемы могут быть решены в решении NoSQL, и я просто думаю, что слишком реляционно (опять же, возможно, этот проект должен быть сделан с MySQL).Вот вопросы, о которых я думаю:

  1. Уникальные идентификаторы: я хочу иметь возможность иметь уникальные идентификаторы для многих вещей.Для таких вещей, как проекты, имя должно быть уникальным и использовать его, однако, когда речь идет о задачах в рамках проекта, заголовок может быть не уникальным, и именно здесь я бы использовал поле quto-increment, но я могу сделать это в RavenDBиз того, что я могу сказать)

  2. Связывание: Используя для таких полей, как статус и тип, я бы просто использовал связывание с внешним ключом.Теперь для отношений «один ко многим» я могу просто использовать текст вместо попытки связать внешний ключ (которого у вас нет в NoSQL), но с привязкой «многие ко многим», потому что это проблема.Например, я намереваюсь иметь систему тегов (как здесь), где к большинству элементов может быть прикреплено от 1 до многих тегов, и затем я могу выполнять поиск по этим тегам для элементов.Есть ли способ сделать это в NoSQL?

Является ли СУБД действительно лучшим инструментом для работы здесь, или я просто не думаю, что «NoSQL», и я могу сделать этос NoSQL (RavenDB)?

Ответы [ 2 ]

2 голосов
/ 05 декабря 2012

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

  1. Raven поставляется со стратегией создания идентификатора документа HiLo по умолчанию.Сохранение нового документа без указания идентификатора самостоятельно приведет к автоматическому приращению идентификатора, например «projects / 1», «projects / 2» и т. Д. Подробнее здесь .

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

Надеюсь, вы обнаружили это самостоятельно с момента публикации.

0 голосов
/ 23 ноября 2011

Айенде написал пост "Моделирование справочных данных в RavenDB" , который отвечает на некоторые ваши вопросы о связывании.У вас будут копии данных между справочным документом и вашими другими документами, и это резервирование в порядке для баз данных документов.Вы по-прежнему можете создавать индексы или запросы, основываясь на идентификаторе или тексте, который вы храните.

Я бы предпочел SQL для системы транзакций, такой как приложение «Счета к получению», где необходимо выполнять специальные запросы.С базой данных документов вам действительно нужно продумать, как вы будете получать свои данные, и заранее составить индексы, чтобы ответить на эти вопросы.В RavenDB есть также функция динамической индексации, которая изучает и кеширует запросы, выполняемые в базе данных.

Для управления проектами, где большинство элементов будут задачами, я думаю, RavenDB подойдет вашим потребностям.

...