Описание тега maglev
MagLev
MagLev - это реализация ruby, которая позволяет постоянно хранить объекты ruby. Цитирование с сайта MagLev:
MagLev - это быстрая, стабильная 64-разрядная реализация с открытым исходным кодом языка программирования Ruby и библиотек, созданная на основе виртуальной машины VMware GemStone/S 3.1.
Почему это отличается
На первый взгляд, MagLev - это просто еще одна реализация ruby 1.8.7. Большая разница между MagLev и другими интерпретаторами ruby заключается в том, что он несет с собой свою собственную базу данных. Это не просто обычная база данных sqlite3, которая живет в своем собственном файле, это полностью постоянное хранилище объектов, которое позволяет хранить любые объекты, иерархии наследования и объектные отношения. Поэтому называть это просто "базой данных" - это грубое преуменьшение. Однако введение новой модели сопряжено с новыми обязанностями, поскольку модель MagLev не совсем подходит для рельсов,и она не совсем совпадает с моделью Smalltalk, в которой все в изображении является постоянным. Позвольте мне попытаться суммировать это в небольшой таблице:
| Rails | Maglev | Smalltalk
------------+---------------------+---------------------+-----------------------
data | database | image / stone | image / stone
------------+---------------------+---------------------+-----------------------
logic/code | files/VCS | ?files/VCS?/image | ?files/VCS?/image
------------+---------------------+---------------------+-----------------------
classes are | open, transient | open, persistent | invariant, persistent
| | single definition | version history
------------+---------------------+---------------------+-----------------------
structure | DB-structure | class definitions, | class definitions,
definition | | persistent objects | all objects persist
------------+---------------------+---------------------+-----------------------
metadata | schema.rb automatic | ?? | ?not necessary?
------------+---------------------+---------------------+-----------------------
migrate | database structure | data structure | data structure
| | some code changes | all code changes
------------+---------------------+---------------------+-----------------------
deployment | deploy VCS delta | ?deploy VCS delta? | ?run all data and
| run all migrations | run all data and | code migrations?
| | some code migrations|
На данный момент существует мало явных метаданных для объектов MagLev, только рубин methods
метод, который не включает информацию о типе. Для основных рельсов это не должно иметь большого значения, так как schema.rb
кажется, в основном используется для правильного приведения данных базы данных, так как в основном он встречается с соединением SQL в виде строки Маглеву не нужно этого делать, поскольку он очень хорошо знает тип хранимых данных.