> It typically rots as you expand your model and add features. It's not clear what significance different tables have, and you you can't "restore" things with any reliability or safety. That may be because of relational/index conflicts, or because you don't have enough information about how it was originally deleted to actually "restore" something that is both correct and useful, or because there are actually 3 different kinds of restoration schemes/scopes but current problem calls for a fourth.
The long and short of soft deletes is that it breaks my data's correctness guarantees WRT referential integrity: i.e. I 'delete' a record while there are still references to it, and the RDBMS cannot even warn me, much less stop me!
If I wanted broken data, I'd use a NoSQL DB, or flat files even.
For example, you don't soft-delete a customer row, you "deactivate" a customer, and change logic that looks at customer-related entities to fit that. The "Customers" page that shouldn't show those anymore gets retitled to "Active Customers." Later there will be either process for reactivating customers or for using a permanently deactivated customer as a template for a new one.
What goes wrong with the classic soft-delete approach? The one where every table has a boolean is_deleted column and hopefully the deleting code updates the correct subgraph of records at the same time?
It typically rots as you expand your model and add features. It's not clear what significance different tables have, and you you can't "restore" things with any reliability or safety. That may be because of relational/index conflicts, or because you don't have enough information about how it was originally deleted to actually "restore" something that is both correct and useful, or because there are actually 3 different kinds of restoration schemes/scopes but current problem calls for a fourth.
I'm all for naming things more precise, but functionally speaking at that point it's really just semantics, you still end up with some DB column acting as a flag, and from then on you need to take it into account in every single query that touches that table in the whole app. Since most modern ORMs know how to handle soft-delete internally, it's far easier to just stick to the defaults and use `deleted_at` if you really need a way to keep the records around. And you often need, for the referential integrity of the historical data.
So much so that the word “slave” in Greek and other languages comes from “Slavs”?
Basically unstoppable, eh? So, basically, an "accident" of history they did not take over the Mediterranean ...
I wonder to what degree - if any - these poor people served as a "buffer" against the Mongols, saving Europe from the slaughter ...
You mean saving Western Europe :)
Mongols ran over (and did a lot of slaughter in) the most of Eastern and Central Europe, including Poland, Czechia, parts of todays Germany, Hungary, Bulgaria, Croatia and Austria. There was no "buffer" that stopped them, they've stopped eventually because their Great Khan died. As the leadership broke down and fights for power arose, they've been forced to return back home.
A subset of these Norsemen sailed up the Dniper to what is today Kiev and setup Kievan Rus. They ruled over and assimilated the the Slavic, Bulgar, and Turkic peoples of the area. In the Middle Ages, the Mongols came and destroyed Kiev, murdering just about everyone inside, leading to fragmentation into multiple polities like Moscow, the Novgorod Republic, and Vladimir.
The Rus ethnonym lives on in the name of the Russians, Rusyns, Ruthenians, Belarussians, and others!
Varangians came primarily from todays Sweden, and were initially going inland into the today's Estonia, Belarus and Russia from north, from the Gulf of Finland, using rivers. The group of them called Rus under the leadership of Rurik created Novgorod in 862. About 20 years later they've also conquered Kiev (some 900km more to the south). They were initially raiders, but over time they've conquered the local Slavs, established their rule and became very important traders, as they've created the trading (and also slave) routes all across the continent from the Baltic in the North down to the Black Sea - using huge rivers like Volga and Dneper - trading in south with Byzantin empire and Abbaside Caliphate. It was one of the main trading routes between West/North Europe and Arab world of that age.
And as their presence grown stronger, the Rus started more frequently raiding the Byzantin Empire, sacking even the big Constantinople a few times. To stop these attacks, in 10th century the Byzantines did the same move as king Charles the Simple did in Francia with Normans, they gave Varangian leaders some titles and employed them all as a royal guard. Problem solved.
And then, as you've said, the viking era was over, and they assimilated into the Slavic population (just like Bulgars and others did).
Another interesting note, the Rus ethnonym also got into many Slavic languages as a word for fair blonde or reddish-blonde hair ("русая" in Russian, "rusa" in Serbian/Croatian, etc.). In Serbian 'rus' was historically used in folk language with a meaning 'red', for instance for skin rush, names of some herbs, etc.
[1]: https://www.medievalists.net/2016/08/horse-fights-the-brutal...
Unsupervised in what sense? There's internal cameras that are periodically checked. Weight and seatbelt sensors that give alerts if a passenger is or puts objects in the drivers seat, or if too many individuals get in the car.
I'd be shocked if a similar or greater level of observability doesn't also exist outside the car.
https://www.skysenderos.com/blogs/thermal-drone-deer-recover...