Магма, ТОВАРЫ, ГЛОРП или что-то еще?

Итак, я использую Smalltalk около 6 месяцев (Squeak и Pharo), в основном делая аналитику данных, и я собираюсь запустить свое первое приложение Seaside. Итак, мой вопрос ко всем вам Smalltalkers, какое ваше любимое решение для сохранения? Я смотрел на Магму, ТОВАРЫ и ГЛОРП. Я давно хакер-хакер python, поэтому я получаю ORM, но похоже, что Magma или PRODUCT станут лучшим решением, поскольку они кажутся объектно-ориентированными.

Быстрое примечание. Я хочу масштабировать свое приложение на нескольких виртуальных машинах, поэтому просто сохранение данных в изображении обычно не работает.

Спасибо!

Ответ 1

Если вы хотите масштабировать несколько виртуальных машин, вы можете взглянуть на GemStone/S.

Помните, однако, что GemStone является фирменным коммерческим продуктом. Таким образом, вам придется заплатить за это. Тем не менее, модель ценообразования, как правило, разработана таким образом, что, если вам нужна более крупная версия, вы, как правило, также должны платить пользователям за это издание. Цены начинаются с 0 $для версии 4 GiByte disk/1 GiByte RAM/1.

Еще одна вещь, которую следует отметить, это то, что GemStone Smalltalk - это собственный диалект, поэтому ваш код Squeak, вероятно, не будет работать без изменений, но его довольно легко переносить. (Например, инженеры GemStone создали адаптер, который позволяет загружать пакеты системы Monticello (Squeak version control system) в GemStone/S, также они обычно обеспечивают, чтобы Seaside работал.)

Итак, что такое GemStone? В принципе, это распределенная виртуальная машина с автоматическим сохранением объекта. Это проще всего объяснить по сравнению с обычной Smalltalk VM. Если у вас две виртуальные машины Smalltalk, работающие бок о бок, каждая из них имеет свою собственную память объектов (т.е. То, что управляет сборщик мусора). И эта память объектов находится в ОЗУ. В GemStone все виртуальные машины в кластере имеют одну и ту же память объектов и живут на диске, а не в ОЗУ. Таким образом, вам не нужна база данных, даже объектно-ориентированная, потому что ваши объекты "там всегда", везде, все время.

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

В GemStone также есть функции базы данных, поэтому доступ к глобальному репозиторию завершается транзакциями ACID, и есть язык запросов, основанный на SQL, но Smalltalkish.

У GemStone есть хорошее устройство, которое они называют " GLASS" (для GemStone, Linux, Apache, Seaside и Smalltalk), аналогичные скважине "LAMP" (Linux, Apache, MySQL и PHP). GLASS включает бесплатное издание GemStone с предустановленным Seaside и все настройки с Apache, работающие поверх Xubuntu, все аккуратно упаковано в образ диска VMWare.

Ответ 2

Только GLASS не помогает дать вам обзор ваших данных. SandstoneDB делает. Вы можете использовать SandstoneDB как с товарами, так и с GLASS (или даже в одиночку), в зависимости от того, сколько денег вы хотите потратить (песчаник свободен во всех смыслах, GLASS - коммерческий, но бесплатный, как в бесплатном пиве для небольших установок).

Отметьте страницу sandstoneDB. И здесь адаптер для ТОВАРОВ. Чтобы использовать SandstoneDB с GLASS, просто переключите хранилище на SDMemoryStore, см. Комментарии к классу на SDMemoryStore в SandstoneDB.

Ответ 3

Если вы можете выбрать, я бы также выбрал GLASS или Magma (это зависит от того, насколько большой проект).

Учтите, что GLorp в Squeak работает только с PostgreSQL. Мы разработали SqueakDBX, который является драйвером базы данных для связи с большинством баз данных. Теперь мы модифицируем Glorp, чтобы вы могли использовать его со всеми из них (не только PostgreSQL). Но этого не будет до конца этого года.