Какой будет хорошая схема базы данных для чрезвычайно простого чата в NoSQL? - PullRequest
0 голосов
/ 24 октября 2018

Хороший существующий ответ для базовой схемы в SQL.

Я могу это понять, это очень просто.У нас есть пользовательская таблица, таблица чата и таблица chat_line (которые в нормальном мире будут называться сообщениями).

Я довольно новичок в NoSQL, и мой разум все еще привык к "нормальному"Схемы SQL, и я пытаюсь понять, какой будет правильная схема для приложения чата в NoSQL (например, mongo или whathaveyou).

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

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

NoSQL не является единым стандартом.Чтобы процитировать что-то из веб-сайта MongoDB

Базы данных NoSQL обычно попадают в одну из четырех категорий:

  • Хранилища значений ключей
  • Широкоформатные хранилища
  • Базы данных документов
  • Базы данных графиков

Я большой поклонник Firebase, обе базы данных реального времени и Cloud Firestore , и я настоятельно рекомендую вам изучить его, если вы уже уверены, что хотите создать его с нереляционной базой данных.

Для Cloud Firestore выможет следовать в основном тем же советам, которые вы получите при сборке для MongoDB.Это база данных без схемы с типизированными полями.С ним очень легко работать.

Существует множество материалов по созданию чатов с базой данных Firebase в реальном времени.

И вы также можете найти кучу постов о создании чата с Firebase здесь:

0 голосов
/ 11 декабря 2018

Как уже отмечали другие, NoSQL - это общий термин, который относится к любой альтернативе традиционным реляционным базам данных, в которых данные размещаются в таблицах, а схема данных тщательно разрабатывается до создания базы данных.

Вы упомянули Mongoв вашем вопросе ... MongoDB без схемы .Что вы можете сделать, это создать свой собственный класс, который взаимодействует с экземпляром базы данных Mongo, и в этом классе вы определяете правила, которым должны соответствовать данные.

Если вы используете node.js, вы можете установить Mongoose , который позволяет вам взаимодействовать с базой данных в объектно-ориентированном стиле, предоставляя простое решение на основе схем для моделирования ваших данных.

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

var chatSchema = new Schema({
    chatSession: { type: Number, index: true },    
    user: { type: String, default: 'anonymous' },
    chatLineText: { type: String },
    dateTime: { type: Date, default: Date.now },
});

var chatModel = mongoose.model('Chat', chatSchema);
var chatLine1 = new chatModel({
    chatSession: '2133123',
    user: 'someUserName',
    chatLineText: 'Hello yuvi!'
});

chatLine1.save(function (err, chatLine) {
    if (err) console.log(err);
    else console.log('following chatLine was saved:', chatLine);
...