When using of database specific features (instead of 3rd party solutions) is justified, especially on the beginning stage of the project?

Example: Postgres has full-text search, which do not support some features of search engines (i.e. facets) but is pretty acceptable for my needs. It requires postgres-specific extensions. But if I use postgres extensions instead of ElasticSearch, I'll bind myself to postgres. Is that a bad practice?

Am I right if I say that all new projects should start with RDBMs (due query flexibility, data normalization) and than migrate to i.e. NoSQL if needed? If yes, than using db-specific features interfere db migrations in future, and is a bad practice. Also extensions can break db migration tools like Flyway.

closed as too broad by Marian, RolandoMySQLDBA, Shanky, Philᵀᴹ, Julien Vavasseur Jun 30 '16 at 15:21

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 3
    Have you ever tried to change the storage/database solution under a mildly complicated app? There are chances that you would throw away basically everything in this case, so I would not worry about binding to Postgres (or any other sane product). – dezso Jun 30 '16 at 8:58

If you migrate from RDBMS to NoSQL then you will also have problems. They are not interchangeable for all types of usage.

When you start a project then just before you start the creation of your data objects you must choose the one that suits best to your needs. Changing later will nearly always cause problems as soon as you use more then the 'standard' options.

When you choose to use a third-party extension then there is always the risk that:

  • Support/development of the extension stops. When you upgrade your database then the extension might no longer work;
  • Another better third-party solution is created. When you want to use it then you face incompatibility problems with the current third-party extension;
  • The third-party extension gets integrated in the database that you use.

The last option is the best one.

  • thank you for quick response! Could you pls explain each of the risks of using extensions? Why should development stops? The better solution may also be created even if you use 3rd party, right? What do you mean by "The extension gets integrated"? – VB_ Jun 30 '16 at 8:43
  • I added the notion third-party to it. – Marco Jun 30 '16 at 8:53

Not the answer you're looking for? Browse other questions tagged or ask your own question.