Google ngram viewer - это экспериментальный сервис от Гугла, позволяющий следить за тенденциями использования фраз (н-грамм) в книгах на протяжении более века. Мне интересно как реализуется база данных, позволяющая делать такой сервис. Самый простой вариант - создать таблицу в которой каждый столбик соответсвует году (~200 столбиков), а каждая строка - фразе. Не трудно подсчитать, что теоритически количество строк в такой таблице должно бы очень большим: 200К слов плюс (200К)^2 фраз из двух слов плюс (200К)^3 фраз из трех слов и т.п. Даже если предположить, что мы ограничем себя фразами из трех слов и что только 10% из теоретически возможных фраз используются на самом деле, то мы получаем около 10^15 строк, умножая на ~200 столбиков получаем таблицу на 200 петабайт, и это только для английского языка. При всем моем уважении к Гуглу, не думаю что он в хотел бы выделить такое количество памяти под такой незначительный проект. С другой стороны, думается мне, что эти вычесления не делаются на лету, т.к. скорость сервиса очень впечетляет.
Как же реализуются подобные сервисы?