Pergunta

Então, eu tenho usado Smalltalk por cerca de 6 meses (Squeak e Pharo), principalmente fazendo análise de dados, e eu estou prestes a começar o meu primeiro aplicativo Seaside. Então, minha pergunta a todos que você Smalltalkers lá fora, é, qual é a sua solução de persistência favorita? Eu estive olhando Magma, bens e Glorp. Eu sou um python hackers de longa data, por isso fico com ORM, mas parece que Magma ou bens seria uma solução melhor, pois parecem orientada a objetos.

Uma nota rápida:. Eu quero escalar meu aplicativo através de várias VMs, então, basta salvar os dados para a imagem não vai realmente trabalho

Obrigado!

Foi útil?

Solução

Se você quiser escalar através de várias VMs, você pode querer dar uma olhada em GemStone / S .

Esteja ciente, no entanto, que GemStone é um proprietária, comercial produto . Então, você irá tem que pagar por isso. No entanto, o modelo de preços é geralmente concebido de tal forma a que, se você necessidade uma edição maior, então você geralmente têm também os usuários a pagamento para essa edição. Os preços começam em 0 $ para a versão 4 GiByte disco / 1 GiByte RAM / 1 CPU.

Outra coisa a notar é que GemStone Smalltalk é seu próprio dialeto, para que o seu código de Squeak provavelmente não será executado sem modificações, mas deve ser bastante fácil para a porta. (Por exemplo, os engenheiros GemStone criaram um adaptador que permite carregar pacotes de Monticello (sistema de controle de versão do Squeak) em GemStone / S, também eles geralmente se certificar de que Mar é executado.)

Então, o que é GemStone? Basicamente, é uma VM distribuída com persistência objeto automático. É mais fácil de explicar em comparação com um Smalltalk VM normal. Se você tiver dois Smalltalk VMs correndo lado a lado, cada um deles tem a sua própria memória do objeto (ou seja, a coisa o coletor de lixo consegue). E essa memória do objeto está na RAM. Em GemStone, todas as VMs em uma parte do cluster do mesma de memória do objeto e que vive no disco, não em RAM. Então, você não necessidade um banco de dados, nem mesmo um, porque seus objetos são "apenas lá", em todos os lugares, orientada a objeto o tempo todo.

(Isso é apenas uma descrição muito simplista. Por exemplo, a pilha não é realmente compartilhadas entre VMs. Isso não faria sentido, você não gostaria de replicar cada objeto temporário que você criar através a rede. em vez disso, você tem um objeto repositório global (basicamente, um dicionário) e, assim como o coletor de lixo irá começar em algum objeto raiz bem conhecido e, em seguida, manter todos os objetos que são acessíveis a partir daí, e excluir aqueles que não são , GemStone começará no objeto repositório global, e persistem / replicar única os objetos que são acessíveis a partir daí.)

GemStone também tem recursos de banco de dados-ish, por isso o acesso ao repositório global está envolvido em transações ACID, e há uma linguagem de consulta SQL inspirado, mas Smalltalkish.

GemStone tem um aparelho bom que eles chamam de " VIDRO " (para GemStone, Linux, Apache, Seaside e Smalltalk) análogo ao bem conhecido "LAMP" (Linux, Apache, MySQL e PHP). VIDRO inclui a edição grátis de GemStone com Seaside pré-instalado e tudo configuração com Apache rodando em cima de Xubuntu, tudo ordenadamente empacotados em uma imagem de disco VMWare.

Outras dicas

VIDRO sozinho não realmente ajudar a dar-lhe uma visão geral sobre os seus dados. SandstoneDB faz. Você pode usar SandstoneDB com ambos os bens e vidro, (ou mesmo sozinho), dependendo de quanto dinheiro você deseja gastar (arenito é gratuito em todos os sentidos, o vidro é comercial, mas livre como em cerveja grátis para pequenas instalações).

Confira página sandstoneDB. E aqui está o adaptador para PRODUTOS . Para usar SandstoneDB com o vidro, basta mudar a loja para SDMemoryStore, ver os comentários de classe sobre SDMemoryStore em SandstoneDB.

Se você puder escolher, eu também escolher o vidro ou Magma (isso depende de quão grande é o projeto).

Leve em conta que Glorp em Squeak só funciona com PostgreSQL. Nós desenvolvemos SqueakDBX que é um driver de banco de dados para se comunicar com a maioria dos bancos de dados. Agora estamos modificando Glorp de modo que você pode usá-lo com todos eles (não apenas PostgreSQL). Mas isso não será até o final deste ano.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top