There are two MySQL database features that I want to use in my application. The first is FULL-TEXT-SEARCH and TRANSACTIONS.
Now, the dilemma here is that I cannot get this feature in one storage engine. It’s either I use MyIsam (which has the FULL-TEXT-SEARCH feature) or I use InnoDB (which supports the TRANSACTION feature). I can’t have both.
My question is, is there anyway I can have both features in my application before I am forced to make a choice between the two storage engines.
Possible workarounds:
Use Sphinx or Solr or some other external text search engine for your text searches and use InnoDB engine.
Write your own search code – and use InnoDB. This is not really an option, unless you search needs are limited or your budget is huge.
Use both engines, MyISAM and InnoDB. Keep the columns you want to be full-text searching in MyISAM and the rest in InnoDB. This will be risky as the data in MyISAM will not be transaction safe.
Use both engines, MyISAM and InnoDB. Keep all data in InnoDB and duplicate the columns you want to be full-text searching in MyISAM. This will need some mechanism (triggers) for the data duplication.
Wait for the version of MySQL where full-text search will be supported by InnoDB or other transactional engine.
(Option 4) but use MariaDB (a MySQL fork) which has “crash-safe” (but still not transaction-safe) full text indexes: When-will-transactional-fulltext-indexes-be-ready?
Use other RDBMS like PostgreSQL that has full-text support in transactional engine.