Каким может быть облегченный базовый тип контента для ловкости

#plone #content-type #dexterity

#plone #content-type #ловкость

Вопрос:

Я пытаюсь написать облегченный тип контента, который работает аналогично сообщению Facebook.

  • Вся схема содержимого — это просто текстовое поле. Нет заголовка, описания.

  • Он должен быть содержательным и управляться CMFCore: у него должен быть FTI, portaltype, чтобы мы могли создавать / просматривать контент с помощью стандартного метода; он поддерживает каталог.

  • Они будут иметь отношение / ссылку друг к другу.

  • Количество объектов будет огромным, скажем, 10-100 млн.

Наиболее похожим на это является объект comment (plone.app.discussion). Хотя я просмотрел plone.app.discussion, я обнаружил, что реализация контента действительно сложная, со слишком большим количеством базовых классов низкого уровня. В большинстве частей я либо вообще не понимаю этого, либо его нельзя повторно использовать вне варианта использования комментариев, и для меня он имеет мало ссылочного / примерного значения.

Итак, я хочу спросить, сколько накладных расходов будет, если я пойду по высокоуровневому пути фреймворка по сравнению с низкоуровневым, который прошел plone.app.discussion?

Ответ №1:

Я не думаю, что p.a. обсуждение подходит для вас.

Тип ловкости может быть подходящим, но вам нужно настроить производительность. Если производительность будет проблемой, это будет из-за вещей, которые делают типы содержательными (например, FTI, базовые классы CMF), поэтому ничто не будет легче, чем Dexterity, и отвечать вашим требованиям, но вы можете подумать о том, действительно ли вы хотите хранить все в реляционномбаза данных или что-то еще вместо этого. Однако это не должно быть строго необходимым.

Мартин

Ответ №2:

Plone не будет масштабироваться до 10 миллионов элементов в своем каталоге (самый большой, о котором я слышал, составляет что-то вроде 400 тыс.). Я бы предложил создать ваше приложение с помощью облегченной структуры, такой как Pyramid.

Комментарии:

1. Как вы думаете, в чем проблема? ZODB не может масштабироваться по-крупному? каталог слишком велик, чтобы поместиться в памяти клиента? каталог плохо реализован, так что запрос более миллиона объектов занимает слишком много ЦП?

2. ZODB здесь не проблема. Проблема в том, что portal_catalog Plone становится единственной точкой соперничества при каждой записи в базу данных. К сожалению, вся навигация Plone построена на основе каталога, что затрудняет асинхронное обновление каталога. Это необходимо исправить, но это долгосрочный проект.