Вопрос

Итак, я использую Smalltalk уже около 6 месяцев (Squeak и Pharo), в основном занимаясь анализом данных, и я собираюсь запустить свое первое приложение Seaside.Итак, мой вопрос ко всем вам, мелким собеседникам, заключается в следующем: какое ваше любимое решение для сохранения?Я просматривал Magma, GOODS и GLORP.Я давний хакер python, поэтому я использую ORM, но, похоже, Magma или GOODS были бы лучшим решением, поскольку они кажутся объектно-ориентированными.

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

Спасибо!

Это было полезно?

Решение

Если вы хотите масштабироваться на нескольких виртуальных машинах, возможно, вам захочется взглянуть на Драгоценный камень /Ы.

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

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

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

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

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

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

Другие советы

Само по себе GLASS на самом деле не помогает получить общее представление о ваших данных.SandstoneDB делает.Вы можете использовать SandstoneDB как с ТОВАРАМИ, так и со СТАКАНОМ (или даже отдельно), в зависимости от того, сколько денег вы хотите потратить (Sandstone бесплатен во всех смыслах, GLASS является коммерческим, но бесплатным, как в free beer для небольших заведений).

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top