мое приложение разделено на несколько микросервисов , которые работают на heroku dynos (они не могут получить доступ к файлам друг друга). Иногда существует несколько микросервисов, работающих с одной коллекцией. Следовательно, оба микросервиса нуждаются в соответствующей схеме mon goose.
Однако не обоим микросервисам нужна схема full . Например, микросервису A нужна полная схема, тогда как микросервису B нужны только несколько полей этой схемы.
Пример схемы внутри микросервиса A:
var AccountSchema = mongoose.Schema({
email: { type: String, required: true, unique: true },
password: { type: String, required: true },
phone: { type: String, required: true, unique: true },
forename: { type: String, required: true },
surname: { type: String, required: true },
middleInitals: { type: String, required: false },
failedLoginAttempts: { type: Number, required: true, default: 0 },
lockUntil: { type: Number },
createdAt: { type: Date, default: Date.now }
})
Пример схемы внутри микросервиса B:
var AccountSchema = mongoose.Schema({
email: { type: String, required: true, unique: true },
password: { type: String, required: true },
failedLoginAttempts: { type: Number, required: true, default: 0 },
lockUntil: { type: Number },
createdAt: { type: Date, default: Date.now }
})
Мой подход
Я бы просто на go вперед и создал бы новую схему в каждом микросервисе, содержащую только необходимые поля. Однако я не уверен, будут ли какие-либо проблемы, когда несколько микросервисов зарегистрируют новую схему в базе данных MongoDB? Например, оба микросервиса будут пытаться создать индекс для поля unique
. Будут ли проблемы с производительностью?
У кого-нибудь есть другой подход, который я мог бы использовать? Это даже правильный подход к go с?
Заранее спасибо:)