Я написал приложение, которое использует python и sqlalchemy в качестве orm. Я сохраняю свои объекты в базе данных postgresql, чтобы управлять ревизиями объектов.
В sqlalchemy мне нужно определить в моих сопоставленных объектах столбцы, например:
class Product(Base):
__tablename__ = 'products'
barcode = Column('barcode', TEXT, nullable=False)
product_name = Column('name', TEXT, nullable=False)
Я хочу сохранить эти объекты также вasticsearch, чтобы воспользоваться его возможностями поиска. Для того, чтобы использовать elasti c, мне также нужно сопоставить продукт с elasti c, что-то вроде:
class ELKDocument(Document):
# meta attributes
_index = 'products'
_doctype = "samples"
_es = Elasticsearch(host='localhost', port=9200)
# map field to es
barcode = StringField()
product_name = StringField()
Так что же является лучшей практикой здесь? Должен ли я иметь DAO для каждого источника данных и преобразовывать один в другой, когда мне это нужно? Есть ли способ создать один DAO, который я могу использовать с несколькими источниками данных?