Хорошая реализация в Mysql или Python для растущего ограниченного набора значений - PullRequest
0 голосов
/ 23 октября 2018

Что такое хорошая реализация (скорость вставки / память / скорость чтения) в Mysql или Python для растущего ограниченного набора значений.Может быть, на самом деле не ограничен, но, говоря, вставка новых значений среди всех значений логарифмическая?

В Mysql: тип данных SET может содержать любое количество строк из предопределенного списка строк, указанных при создании таблицы

Контекст:

Я анализирую тенденции языков программирования и другие взаимосвязи, основанные на истории событий, происходящих в репозиториях Github.Набор языков естественно ограничен.Мой сценарий, когда я открываю новые, растет медленнее, чем линейный, и моя интуиция заключается в том, что он логарифмический.В любом случае, если есть 100 языков и 1000000 текста для анализа, скорость суммированных значений будет такой:

enter image description here

1 Ответ

0 голосов
/ 25 октября 2018

В MySQL:

CREATE TABLE Languages (
    lang VARCHAR(222) NOT NULL,
    counter INT UNSIGNED NOT NULL.
    PRIMARY KEY(lang)
) ENGINE=InnoDB;

После анализа текста для определения его языка ($ lang):

INSERT INTO Languages (lang, counter)
    VALUES ($lang, 1)
    ON DUPLICATE KEY UPDATE
        counter = counter + 1;

Это будет достаточно быстро (хотя и не самым быстрым).Он имеет дополнительную функцию подсчета вхождений каждого «языка».

MySQL SET, вероятно, не подходит, потому что

  • Когда вы сталкиваетесь с новым значением, вам нужно ALTER TABLE, «тяжелая» операция,
  • SET ограничена 64 значениями.
...