Adoraria que você contribuisse com os testes referentes ao que você está falando, referências ou alguma coisa que pudesse enriquecer a discussão. Porque sinceramente, sem ofenças, parece a opinião de alguém atrasado na indústria ou com pouquissimo contato com sistema de média/grande escala.
- O Google, assim como ecommerces em geral (Amazon, Americanas, Magazine Luiza, Kabum, Mercado Pago, esses são os que sei) usam search engine para indexar os seus dados. Não fazem busca em banco de dados pela ineficiência de resposta. Essas engines são otimizadas para buscas realmente performáticas em grandes volumes de textos. Temos algumas disponíveis no formato open source, como é o caso do Meilisearch (para projetos mais enxutos) ou da ElasticSearch (para projetos mairoes). Por tanto você está correto, o Google não precisa usar CRC porque sequer usam banco de dados relacional na finalidade de indexação;
- Eu não vou entrar no mérito de falar que sites pequenos são mais ineficientes que X/Y/Z. Desenvolvedor ruim tem de monte. Até me pareceu que você tem contato com o StackOverflow, que poderia ser um argumento bom, mas novamente eles não usam banco de dados relacional para pesquisa e sim a ElasticSearch. Eles migraram em ~2010 pela sobrecarga na base de dados. No caso deles, eles fazem FULL TEXT SEARCH, o que é pior ainda. Então com certeza eles se aproveitam de todas as otimizações da ferramenta;
- Eu realmente não entendi se você de fato tem experiência ou não porque se você precisa de performance em banco de dados, depois de trabalhar com a indexação você trabalha com shards. Não faz sentido colocar em memória. Em memória deve estar apenas o que a aplicação irá usar;
- Sim tenho dados concretos. Eu tenho uma software house de desenvolvimento de software baseada em performance, já arquitetei e produzi sistemas (principalmente financeiros) que lidam diariamente com uma média de 10 mil transações diárias. E, sim, a aplicação da estratégia mencionada no arquivo cortou o tempo de resposta enviada ao cliente em 6 vezes. Não fazia sentido implementar um motor de busca fora do banco relacional, então no caso índice foi a melhor estratégia. A partir deles começaram a fazer os shards pelos índices de CRC.
Por fim, infelizmente tenho que lhe repetir o mesmo, preciso de bem mais de você para aceitar suas especulações genéricas.
Como mencionou o Stack Overflow, segue algumas recomendações de leitura para entender o porque banco relacional não é utilizado em buscas:
- https://nickcraver.com/blog/2016/02/03/stack-overflow-a-technical-deconstruction/
- https://medium.com/swlh/stack-overflow-search-engine-ce1ce2f9fe1b
No caso das buscas em texto, que você menciona, segue os caminhos adotados:
Compartilho mais informações problemas relacionado a busca de dados de texto e soluções (se eu mandasse todos dos meus favoritos, seriam uma lista enorme 😅):
- https://pubmatic.com/blog/optimizing-mysql-to-scale-data-infrastructure/
- https://abhiarrathore.medium.com/mysql-query-optimization-eafbf3bfff2d
- https://medium.com/@serene_mulberry_tiger_125/the-magic-of-hashing-for-efficient-data-retrieval-37bed5c927a5
- https://medium.com/@lordNeic/multiple-column-indexes-and-hashing-the-ultimate-guide-to-boosting-database-performance-89e2a06c8a75
- https://medium.com/@priyankgondaliya/mastering-mysql-query-optimization-15-proven-tricks-for-lightning-fast-database-performance-and-b863a8a00524
- https://medium.com/@pkindex/unlocking-performance-mysql-optimization-techniques-with-real-world-examples-19c6d1dda79e
De todo modo, é papel de um DBA cuidar isso e arquitetar o banco de dados do software se preocupando com indexação, separação, normalização e processamento de dados. Você nunca participou de uma reunião sobre os usos de caso de busca antes de montar a estrutura de dados? É assim que se tomam decisões com base no cenário do projeto. Ademais, pode utilizar como quiser. Se o seu sistema não exige um tempo de resposta competivo, vai na fé.