Вы не можете индексировать в такие поля массива с помощью Firestore. Вы можете добавлять или удалять элементы поля типа списка по значению, используя arrayUnion и arrayRemove, но вы не можете указать, где этот элемент находится в массиве. Если вам нужен больший контроль над порядком элементов в массиве, вам сначала нужно прочитать документ, изменить массив в памяти, а затем обновить это поле обратно в документ.
bmdhacks является правильным, что при использовании MySQL или PostgreSQL, он не имеет значения так же, так как соединения являются довольно дешевыми. Но неважно Ваша база данных у Вас будут выигрыши в быстродействии при помощи постоянных соединений.
Но если Вы действительно решите пойти с постоянными соединениями, то необходимо будет волноваться о тайм-аутах соединения. Они произойдут в любое время во время срока действия Вашей программы в зависимости от Ваших настроек сервера и объема трафика, который Вы получаете. ping()
Ваш друг здесь. И если Вы нуждаетесь в большем количестве помощи, посмотрите на как Apache::DBI
он.
Вы все еще получили бы от FCGI, даже если бы Вы действительно держите свое соединение с БД в курсе - но Вы получили бы еще больше, если бы Вы выгнали его с квартиры.
Не помещайте соединение вне цикла, Вы могли бы потерять соединение, и затем Вы не можете соединиться снова. Вы могли поместить его в глобальное, но затем Вы должны будете сделать проверку соединения и воссоединяете себя.
Вместо этого используйте Ima:: DBI или DBI->connect_cached()
сделать соединение, кэширующееся для Вас. Это сделает всю работу, чтобы удостовериться, что соединение живо, и снова соединитесь при необходимости.
Но перед беспокойством сделайте некоторое сравнительное тестирование для обнаружения, где узкое место действительно. У меня было соединение с базой данных быть узким местом в прошлом, но это было с Oracle, и это было также 10 + несколько лет назад.
Производительность подключения в основном зависит от базы данных, которую Вы используете. PostgreSQL и MySQL очень быстры, чтобы соединиться (MySQL особенно) и таким образом обычно соединяться по каждому запросу. Другие базы данных, такие как Oracle немного медленнее и имеют тенденцию требовать более длительного времени жизни соединения. Должно быть легко протестировать путем записи некоторое время 1.. 100 000 циклов с DBI-> подключение () и разъединение, чтобы видеть, как быстро Ваша база данных.