После компиляции байт-код kotlin идентичен байт-коду java. Любое приложение, которое использует скомпилированные программы / дополнения для JVM, будет работать с java, kotlin и любым другим языком JVM.
Не должно быть никакого значительного различия в производительности между несколькими таблицами в единой базе данных по сравнению с несколькими таблицами в отдельных базах данных.
В MySQL, базы данных (стандартный SQL использует термин "схема" для этого), подача в основном как пространство имен для таблиц. База данных имеет только несколько атрибутов, например, набор символов по умолчанию и сопоставление. И то использование GRANT
делает удобным управлять правами доступа для каждой базы данных, но это не имеет никакого отношения к производительности.
Можно получить доступ к таблицам в любой базе данных от единственного соединения (если ими управляет тот же экземпляр MySQL Server). Просто необходимо квалифицировать имя таблицы:
SELECT * FROM database17.accounts_table;
Это - просто синтаксическое различие. Это не должно иметь никакого эффекта на производительность.
Относительно устройства хранения данных Вы не можете организовать таблицы в для каждой базы данных файлом, поскольку @Chris размышляет. С механизмом устройства хранения данных MyISAM у Вас всегда есть файл на таблицу. С механизмом устройства хранения данных InnoDB у Вас или есть единственный набор файлов устройства хранения данных, которые соединяют все таблицы, или иначе у Вас есть файл на таблицу (это настроено для целого сервера MySQL, не для каждой базы данных). Или в случае, нет никакого преимущества производительности или в недостатка к составлению таблиц в единой базе данных по сравнению со многими базами данных.
Нет многих параметров конфигурации MySQL той работы для каждой базы данных. Большинство параметров, которые влияют на производительность сервера, всего сервера в объеме.
Относительно резервных копий можно указать подмножество таблиц как аргументы mysqldump
команда. Может быть более удобно создать резервную копию логических наборов таблиц для каждой базы данных, не имея необходимость называть все таблицы на командной строке. Но это не должно иметь никакого значения к производительности, только удобство для Вас, поскольку Вы вводите команду резервного копирования.
Если Вы не хотите один набор таблиц с poolID poolname, поскольку предложенные TheTXI, используйте отдельные базы данных, а не несколько таблиц, что все делают то же самое.
Тем путем Вы ограничиваете изменение между доступом различных пулов к начальному "оператору" базы данных использования, Вы не должны будете повторно кодировать свои ВЫБОРЫ каждый раз или иметь динамический sql.
Другие преимущества этого подхода:
Недостатки:
Я не знаю, каково Ваше приложение, но действительно действительно думайте тщательно прежде, чем составить все таблицы в одной базе данных. Тем путем безумие находится.
Править: Если производительность является единственной вещью, которая касается Вас, необходимо измерить ее. Возьмите представительный набор запросов и измерьте их уровень.
Редактирование 2: разницей в производительности для единого запроса между многой моделью баз данных таблиц/многих будет neglible. Если у Вас есть одна база данных, можно настроить ад из нее. Если у Вас есть много баз данных, можно настроить ад из всех них.
Мой (наш? - не может выступить ни за кого больше), точка - то, что для хорошо настроенной базы (баз) данных не будет практически никакой разницы в производительности между этими тремя опциями (объединенный в таблице, нескольких таблицах, нескольких базах данных), таким образом, можно будет выбрать опцию, которая является самой легкой для Вас в краткосрочный И длительный срок.
Для меня наилучшим вариантом является все еще одна база данных с объединенным, как предложенный TheTXI, затем несколько баз данных, в зависимости от Вашего (главным образом администрирование) потребности. Если необходимо знать точно, что разница в производительности между двумя опциями, мы не можем дать Вам тот ответ. Необходимо настроить его и протестировать его.
С несколькими базами данных становится легко бросить аппаратные средства в него для улучшения производительности.
Для почему бы не составления единственной таблицы для отслеживания объединения (с PoolID и PoolName как Вы столбцы, и независимо от того, что Вы хотите отследить) и затем на Ваших 15-25 таблицах, Вы добавили бы столбец на всех них, которые будут внешним ключом назад Вам бильярдный стол, таким образом, Вы будете знать, какой пул, которому принадлежит конкретная запись.
Если бы Вы не хотите смешивать данные как этот, я предложил бы делать несколько баз данных. При составлении нескольких таблиц все для той же функциональности заставляют моего паука обнаружить покалывание.
Я не знаю mysql очень хорошо, но я думаю, что должен буду дать стандартный ответ производительности - "Он зависит".
Некоторые мысли (контакт только с производительностью/обслуживанием, не проектированием баз данных):
Однако для контрастирования, имея несколько баз данных означает, что сервер будет, вероятно, использовать больше памяти (так как это имеет системы кэшей). Я уверен, что существует больше "недостатков" для подхода мультибазы данных, но я терплю неудачу теперь.
Таким образом, я предполагаю, что рекомендовал бы подход мультибазы данных. Очевидно, это только с пониманием, что может быть лучшая "база-данных-designy" способ обработать независимо от того, что Вы на самом деле делаете.
Я не слишком уверен, что полностью понимаю Ваш сценарий. Вы хотите иметь все пулы с помощью тех же таблиц, но просто отличаясь различающим ключом? Или Вы хотите, чтобы отдельные пулы таблиц в одной базе данных, с суффиксом на каждой таблице отличили пулы?
Так или иначе, хотя, у Вас должно быть несколько баз данных для двух основных причин. Так как первое будет то, если необходимо изменить схему на одном пуле, она не будет влиять на другие.
Второе, если Ваша загрузка повышается (или по какой-либо другой причине), можно хотеть перейти пулы на отдельные реальные машины с новыми серверами баз данных.
Кроме того, доступ безопасности к серверу базы данных может быть более плотно заблокирован вниз.
Все эти вещи могут все еще быть выполнены, не требуя отдельных баз данных - но разделение сделает все это легче и уменьшит сложность необходимости мысленно отследить, на какие таблицы Вы хотите воздействовать.
В ситуации Вы описываете, опыт привел меня полагать, что Вы найдете, что отдельные базы данных быстрее, когда у Вас будет большое количество пулов.
Существует действительно важный общий принцип для наблюдения здесь, хотя: не думайте о том, как быстро это будет, представьте его.
Отличение пулов именем таблицы или помещение их в отдельных базах данных о том же самом. Однако, если у Вас есть много таблиц в одной базе данных, MySQL должен загрузить информацию о таблице и сделать проверку защиты на всех тех таблицах при входе в/соединение.
Как другие упомянули, отдельные базы данных позволят Вам смещать вещи вокруг и создавать оптимизацию, характерную для определенного пула (т.е. сжатые таблицы). Это - дополнительный администратор наверху, но существует значительно больше гибкости.
Кроме того, можно всегда "объединять" таблицы, которые находятся в отдельных базах данных при помощи федеративного или таблиц слияния для упрощения запросов в случае необходимости.
Что касается исчерпывания первичных ключей, Вы могли всегда использовать составной первичный ключ при использовании таблиц MyISAM. Например, если у Вас есть поле, названное groupCode (любой тип), и другой назвал sequenceId (автоматический инкремент), и создайте свой первичный ключ как groupCode+sequenceId. sequenceId увеличит на основе следующего уникального идентификатора в кодовом наборе группы. Например: AAA 1 AAA 2 BBB 1 AAA 3 CCC 1 AAA 4 BBB 2...
Хотя с большими таблицами необходимо быть осторожны относительно кэширования и удостовериться файловая система, Вы используете дескрипторы большие файлы.
Учитывая ограничения Вы поместили на нем, я вращал бы больше таблиц в существующей базе данных, вместо того, чтобы иметь необходимость соединиться с несколькими базами данных. Руководящие строки подключения ИМЕЮТ ТЕНДЕНЦИЮ быть более твердыми, в дополнение к управлению различной оптимизацией базы данных, которую Вы можете иметь.
FTR, при нормальных обстоятельствах я проявил бы подход, описанный TheTXI.
В ответе на Ваш конкретный вопрос, хотя, я нашел, что это иждивенец на использовании. (Полицейский я знаю, но выслушиваю меня.)
Единая база данных, вероятно, легче. Вы должны будете волноваться о всего одном соединении и должны были бы все еще указать таблицы. Несколько баз данных, при определенных условиях, могли быть быстрее все же.
На вашем месте я попробовал бы обоих. Нет никакого способа, которым мы сможем дать Вам полезный ответ.