LINUX.ORG.RU

[php]Помогите подобрать примитивный ORM

 


0

1

Нужна ORM для сохранения объектов в MySQL.
Требования:
- сохранение любых объектов без предварительного конфигурирования/разметки этих самых объектов в рамках ORM;
- поиск по параметрам объекта(хотя бы public или строковым);
- минимальный размер(в идеале один класс).

Свой велосипед написать недолго, но сначала хотелось бы поглядеть на чужие, авось чего подойдет.

Ответ на: комментарий от stevejobs

Первый пункт требований: - сохранение любых объектов без предварительного конфигурирования/разметки этих самых объектов в рамках ORM;

Документация propel: The initial step in every Propel project is the «build». During build time, a developer describes the structure of the datamodel in a XML file called the «schema»
Документация doctrine: Doctrine provides several different ways for specifying object-relational mapping metadata: Docblock Annotations, XML, YAML.

В этом и заключается проблема. В системе существует множество хранимых объектов и пользователями все время добавляются новые, совершенно разные по структуре объекты. При этом есть необходимость поиска по параметрам.
Т.е. заранее предсказать какая структура будет у объектов невозможно, а сериализовывать их для хранения нельзя потому что «отвалится» возможность поиска.

konfuji
() автор топика
Ответ на: комментарий от stevejobs

Простые члены объектов(строковые и числовые значения) помещать в строки таблицы как есть, а сложные(массивы, вложенные объекты) предварительно сериализовывать. В таком случае таблица в БД будет выглядеть приблизительно так:
внутренний_ключ | тип(имя)объекта | внешний_ключ | имя_параметра | значение_параметра

Решение, что называется «в лоб», но отлично вписывается в требования.

konfuji
() автор топика
Ответ на: комментарий от konfuji

если «предсказать какая структура будет у объектов невозможно», то может имеет смысл отказаться от реляционный базы и посмотреть в сторону NoSQL?

jellyfish
()
Ответ на: комментарий от jellyfish

Спасибо за совет. После утренней пятиминутки пришли к такому же решению.

konfuji
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.