In the long term, Wikidata is probably the way to go on something like this.
In the short term, as far as dividing things up, note that you can
implement on-demand loading in Lua easily enough using the __index
metamethod.
local obj = {}
setmetatable( obj, {
__index = function ( t, k )
-- This will get called on access of obj[k] if it is not already
set.
-- Do whatever you might need, e.g. require() a submodule,
-- assign things to t for future lookups, then return the
requested k.
end
} )
return obj
Also note that you can save space at the expense of code complexity by
accessing "obj.us_name or obj.name" rather than storing the same string in
both fields; remember in Lua only nil (unset) and boolean false are
considered "false", the number 0 and the empty string are both considered
true.