Нужен совет по приложению MongoDB Schema for Chat. Embedded vs Related Documents

Спасибо за предоставление данных и более четкое объяснение. Есть несколько способов сделать это. Вот один из них.

select *
from FormFields
where FormId
not in
(
    select FormId
    from FormFields
    where Label in ('First Name', 'Last Name')
)
17
задан Community 22 September 2017 в 18:01
поделиться

2 ответа

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

Единственное другое изменение, которое я бы предложил, это сохранить загрузки в отдельной коллекции.

5
ответ дан 30 November 2019 в 14:43
поделиться

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

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

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

С CouchDB вам не придется беспокоиться о проблеме вложений, вы можете легко их встраивать. «_changes» сделает вашу жизнь намного проще, если вы просто создадите приложение для чата в реальном времени / поисковую систему с длинным пулом / фидом (если вы захотите его реализовать).

И я увидел проект с открытым исходным кодом в Кушоне. Это имеет некоторые сходства с вашими целями: Anologue . Вы должны это проверить.

PS: Извините, это было немного не по теме, но я не мог удержаться.

2
ответ дан 30 November 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: