Cache VS Sesión VS cookies?

¿Cuáles son las cosas que se deben hacer y qué no hacer con respecto a las cookies de caché VS sesión VS?

Por ejemplo
Uso muchas variables de sesión y, a veces, tengo problemas en una aplicación de reserva cuando los usuarios comienzan a pedir productos y luego van a almorzar y regresan unas horas más tarde y continúan con la reserva. Guardo la reserva en la sesión hasta que el usuario confirma o cancela la reserva, así que no necesito hablar con la base de datos y manejar las reservas a mitad de camino en la base de datos cuando los usuarios simplemente hacen clic en la X en el navegador y nunca regresan.

Debería usar caché o cookies o alguna combinación para esto?

(También cuando hay algún error en la aplicación, el objeto de sesión se reinicia y tengo más problemas debido a eso)

Principalmente estoy haciendo programación de escritorio y siento que me falta mucho conocimiento aquí, por lo que cualquier persona que pueda ampliar dónde usar Cache, Session, Cookies (o db) sería apreciado

Editar De las respuestas parece que una combinación de DB y cookies es lo que quiero.

Tengo que almacenar la reserva en la base de datos conectada a un ID de sesión Almacene el ID de sesión en una cookie (encriptada). Cada página carga cargando la cookie y recupera la reserva de la base de datos Tengo un procedimiento de limpieza que se ejecuta una vez a la semana y que borra las reservas sin terminar.

No puedo almacenar la reserva como una cookie porque el usuario puede cambiar los precios y otros datos confidenciales y tuve que validar todo (no puedo confiar en los datos).

¿Lo tengo bien?

¡Y gracias por las excelentes explicaciones para todos ustedes!

Respuestas a la pregunta(7)

Su respuesta a la pregunta