Based on a 22 hour catch up, that would be 1MB * 6 * 22 = <132MB average block data.
Running on SSD write enabled cache, catch up took over 2.5 mins, with writes in 25 - 55 MB/s range. Maybe 40 MB/s on average. So as a rough guestimate we are talking over 6GB of disk writes to catch up on potentially 132MB of data. A lot if users with mechanical disks do not want to run a full node now, and it is the catch up time rather than network bandwidth and storage space which is the biggest issue for some.
I do not know why that would be the case but try asking on the github or searching through their issues and pull requests sections to find answers.
Also, it is known the the bottleneck with syncing a full node now is usually on the CPU or the hard drive.
Does bitcoin core use a full database implementation, or just implement the indexing technology?
Not sure, but I think the indexing is only putting into the database the location on the disk of each block. However, as part of the reindex and a full sync, the blocks need to be reverified, which taxes the CPU.
Another issue is during a computer crash, bitcoin core frequently requires a full database reindex. This is bad now, and will become an absolute unmanageable nightmare as the blockchain grows.
So does Bitcoin really need to use a fully fledged database system? If not, a specialised data structure could be the way forward. Period local syncing of last known good blocks would mean in the event of failure, a full reindex would not be required; it would simply redownload blocks from the last sync point on recovery. This would also keep small disk writes to a minimum, using periodic linear disk writes instead.
I think the issue is that it cannot know where the last good block was located because the database with the indices is corrupted so it can't be read. It then has to start from the beginning and reindex all of the blocks so that it can know the location of the blocks and be able to pull data from them when needed. If you were to simply start at the last known good block, then it wouldn't be able to access data earlier in the blockchain.
Also, reindexing does not mean that it is redownloading. Reindexing means that Bitcoin Core is reading from the block files and recording in a database the location of those blocks.
I think there needs to be improvements made here, and depending on the requirements there could be the potential for significant performance and resilience improvements.
probably, but again, ask it on the github as the developers are active there and also know the ins and outs of Bitcoin Core much better than I do.