Is is possible to make use of any of the component personalisation rules without xDB being enabled? e.g. to swap / hide a component depending on the current date? I'm not interested in tracking the outcome or any other factors, just alternating the presentation on certain conditions.
Yes its actually very simple. You need to set the following settings:
Xdb.Enabledset to false
Xdb.Tracking.Enabledset to true
That will disable Xdb, but still allow the personalization rules to run on renderings.
Note that this applies to 8.1 and above only. In 8.0 you would have to keep
Xdb.Enabled set to true and remove the MongoDb connection strings. It will generate a lot of errors in the logs and is not a supported way of running it. But it does work.
Disabling xDB like this means, you do not need an xDB license.
Reference: Sitecore in CMS Only Mode
Personalization IS possible without xDB – the Sitecore Rules Engine remains functional.
The value of personalization will come from custom-developed rules.
Most of the Sitecore-supplied rules will NOT appear/function The following features experience limitations as noted without xDB: Personalization on historical behavior that is stored in XDB or relies upon tracking will be unavailable. This includes:
• Engagement Value
• Campaign Condition
• Goal Condition
• Visited Page
To run CMS-only mode, you must set the Xdb.enabled configuration setting to false in the Sitecore.Xdb.config configuration file.
When xDB.enabled is set to false, you do not have any access to the reporting or collection databases. Any functionality that depends on the xDB for data collection is not available and a number of applications in the Sitecore Experience Platform cannot run.
You can implement in-session personalization rules that are compatible with Experience Management, for example, based on IP Geolocation or goals triggered in a session, to provide personalized content to your contacts. You cannot, however, implement personalization rules based on historical data, like outcomes or past goals triggered, because the xDB stores that information.