Terrain database and rendering...

I’m fairly new to C++, I took a complete course on C++, so I say I have an intermediate skill level, but I’m still learning about best practices and how to apply my skills.

I’m working on building a game where you can edit the terrain. I’d like to be able to add/remove ground, I’d also like to store values for each “block” of terrain, such as integrity of the block. I keep thinking of this in terms of voxels, but I’m open to other ideas as well, so long as they allow me to include the above mentioned features. I want to add and remove blocks of terrain, but I want them to be smoother than say Minecraft. I’d like them to be able to smooth out into nice hills. I’m also thinking about cpu and gpu costs, I’d like to only render the top layer, but keep track of what’s beneath and render the appropriate terrain as its revealed. Would I need a database to store all of the terrain info on and have the game pull the top layer of that off for rendering? I’d like to have environmental effects that impact the top layer and layers beneath it, so I assumed I’d probably need that to be simulated on the database and then just reflect it graphically in the game world.

I guess my main questions would be, taking resources(gpu/cpu) into account, would voxels be the way to go to pull this off? Would I need to use a database in order to keep this running efferently, if so, what would be the most efficient method to store the terrain “blocks?” If voxels are the way to go, does anyone have any material on voxels, I haven’t found much useful info so far, I’d like to start with learning how to make a simple block and then move into spawning chunks. Eventually, if I’m pulling info from a database, I’d have to learn how to spawn terrain from the database, but I kind of have an idea of how that would work already, based on other projects I’ve worked on. Would voxels be the best way of going about this idea, or would a landscape mesh work just as well? Also, are there any other good platforms where I can post this question?

A lot of this is programming based, so I figured I’d post up in this section, please move this to the appropriate space if this isn’t the place. Thanks for any advice!