Postgres conversion update
Posted by Tehom on 06/29/19
Unfortunately I ran into a major problem when doing a test run in converting the sqlite database to postgres - the size of the 'Attribute' table is so vast that neither my local machine nor the linode server would be able to handle it. While I probably could get a stronger machine loaned to me to do it, it's probably a good time to solve the issue by paying down tech debt. Let me give a little bit of background:
Evennia has a notion of something it calls Attributes, which are objects that can store arbitrary data. It allows enormous flexibility, and it's something I leaned on very heavily as I first built Arx. For example, all stats and skills are attributes, all descriptions and anything based on a character's appearance are attributes, anything about room ownership or appearance or shops are attributes, etc. The bulk of data storage in fact is actually in these - there's nearly a million rows in the Attribute table, while the largest runners-up for other tables would be in the tens of thousands.
I'd always intended to move away from Attributes because they're more of a quick and dirty implementation that have severe technical drawbacks that I won't bore you with, and this seems like as good a time as any. So we might convert stats and skills to a new table, how most aspects of a character's appearance are stored, how shops and room ownership is represented, how crafted items work, and more. These were all things I intended to get to eventually at different points, but now I have a compelling technical reason to do so. Ideally, once a lot of these things are converted to their own systems, the postgres conversion will become feasible, and then I'll look into upgrading us to the latest Evennia version that was just released as well. I'm expecting the process to take quite a few months, but hopefully we'll add in new features here and there to each of these systems as they're converted.
Evennia has a notion of something it calls Attributes, which are objects that can store arbitrary data. It allows enormous flexibility, and it's something I leaned on very heavily as I first built Arx. For example, all stats and skills are attributes, all descriptions and anything based on a character's appearance are attributes, anything about room ownership or appearance or shops are attributes, etc. The bulk of data storage in fact is actually in these - there's nearly a million rows in the Attribute table, while the largest runners-up for other tables would be in the tens of thousands.
I'd always intended to move away from Attributes because they're more of a quick and dirty implementation that have severe technical drawbacks that I won't bore you with, and this seems like as good a time as any. So we might convert stats and skills to a new table, how most aspects of a character's appearance are stored, how shops and room ownership is represented, how crafted items work, and more. These were all things I intended to get to eventually at different points, but now I have a compelling technical reason to do so. Ideally, once a lot of these things are converted to their own systems, the postgres conversion will become feasible, and then I'll look into upgrading us to the latest Evennia version that was just released as well. I'm expecting the process to take quite a few months, but hopefully we'll add in new features here and there to each of these systems as they're converted.