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

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

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

Спасибо!


person Alex    schedule 07.07.2009    source источник


Ответы (3)


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

Однако имейте в виду, что GemStone является запатентованным коммерческим продуктом. Так что вам придется платить за это. Однако модель ценообразования, как правило, разработана таким образом, что если вам нужна более крупная версия, то, как правило, пользователи также будут платить за эту версию. Цены начинаются с 0 $ за версию с 4-гигабайтным диском / 1-гигабайтной оперативной памятью / 1 процессором.

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

Итак, что такое драгоценный камень? По сути, это распределенная виртуальная машина с автоматическим сохранением объектов. Это проще всего объяснить по сравнению с обычной виртуальной машиной Smalltalk. Если у вас есть две виртуальные машины 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.

person Jörg W Mittag    schedule 07.07.2009
comment
Я полностью согласен, GemStone/S — это то, что нужно. - person Damien Cassou; 07.07.2009
comment
Интересно... так что, если бы у меня была коллекция с 10 миллионами содержащихся в ней объектов, была бы целая коллекция в моей локальной памяти? - Я просто пытаюсь понять, где мои данные. - person KHWP; 08.07.2009
comment
Вся коллекция не обязательно должна находиться в локальной памяти... большие объекты реализованы внутри с использованием b-деревьев (в основном), поэтому частичные коллекции могут быть загружены в локальную память - ваш рабочий набор хранится в локальной памяти и остальное на диске - person Dale Henrichs; 08.07.2009
comment
Это своего рода облом, что нет действительно хорошего решения с открытым исходным кодом, но я изучал Gemstone, и он кажется действительно гладким. - person Alex; 09.07.2009
comment
У GemStone также есть продукт Java, а в сообществе Java есть конкуренты с открытым исходным кодом (например, Terracotta). Я думаю, сообщество Smalltalk на самом деле не беспокоится, они просто хотят лучшее решение, и если окажется, что это лучшее решение стоит им немного денег, пусть будет так. - person Jörg W Mittag; 09.07.2009

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

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

person nes1983    schedule 12.07.2009

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

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

person Community    schedule 07.07.2009