Firebase database speed up simple read












1















I was doing some profiling in my firebase database and I found one single anomaly



Read Speed
┌───────────────────────────────┬───────┬─────────────┬───────────────────┐
│ Path │ Count │ Average │ Permission Denied │
├───────────────────────────────┼───────┼─────────────┼───────────────────┤
│ /safeList │ 4 │ 3,092.50 ms │ 0 │
├───────────────────────────────┼───────┼─────────────┼───────────────────┤


It means every request to that structure took over 3 seconds. It's not the worst problem in the world but still strange.



safelist is a list of strings ordered by length manually and then imported into firebase. The list contains about 8000 strings of length 5 to 25.



These requests were made by me and each of them requested only the first 5000 samples from the set.



My question is:




  • Is there any way to improve the read performance?

  • If I simply request the whole set instead of the first 5000 would it be faster?

  • Any suggestions for a bigger sets of primitives?


==========UPDATE============



Some people are asking about data and code.



the only code where i call this query is:
firebase.child("safeList").limitToFirst(5000).addListenerForSingleValueEvent(new ValueEventListener() { //do stuff



i didn't put because is pretty dumb
and as said in the description:
Safelist is a List of String with about 8000 items ordered manually by length



the database rules related to it:



"safeList":{
".read":"root.child('premiums').child(auth.uid).exists()",
".write":false,
".indexOn" : ".value"
},


It takes average 3000ms when the second slowest query takes only 60ms










share|improve this question

























  • read data into limits go set by set or make some service to read data in background and save it into database

    – Har Kal
    Nov 18 '18 at 23:10











  • It's impossible to say it things can be faster without seeing the exact data and code. See if you can reproduce the problem in a site like jsbin, so that we can have a look (the performance is likely to be quite similar between Android and JavaScript).

    – Frank van Puffelen
    Nov 19 '18 at 3:55











  • Please add the code that you are using to get the data from the database and please responde with @.

    – Alex Mamo
    Nov 19 '18 at 10:12











  • @FrankvanPuffelen, the exact data is kind impossible to share, and the code is pretty dumb as you can see in my update

    – Rafael Lima
    Nov 19 '18 at 14:29











  • @AlexMamo, i believe it is because google takes longer to reduce the set from 8k to 5k

    – Rafael Lima
    Nov 19 '18 at 14:30
















1















I was doing some profiling in my firebase database and I found one single anomaly



Read Speed
┌───────────────────────────────┬───────┬─────────────┬───────────────────┐
│ Path │ Count │ Average │ Permission Denied │
├───────────────────────────────┼───────┼─────────────┼───────────────────┤
│ /safeList │ 4 │ 3,092.50 ms │ 0 │
├───────────────────────────────┼───────┼─────────────┼───────────────────┤


It means every request to that structure took over 3 seconds. It's not the worst problem in the world but still strange.



safelist is a list of strings ordered by length manually and then imported into firebase. The list contains about 8000 strings of length 5 to 25.



These requests were made by me and each of them requested only the first 5000 samples from the set.



My question is:




  • Is there any way to improve the read performance?

  • If I simply request the whole set instead of the first 5000 would it be faster?

  • Any suggestions for a bigger sets of primitives?


==========UPDATE============



Some people are asking about data and code.



the only code where i call this query is:
firebase.child("safeList").limitToFirst(5000).addListenerForSingleValueEvent(new ValueEventListener() { //do stuff



i didn't put because is pretty dumb
and as said in the description:
Safelist is a List of String with about 8000 items ordered manually by length



the database rules related to it:



"safeList":{
".read":"root.child('premiums').child(auth.uid).exists()",
".write":false,
".indexOn" : ".value"
},


It takes average 3000ms when the second slowest query takes only 60ms










share|improve this question

























  • read data into limits go set by set or make some service to read data in background and save it into database

    – Har Kal
    Nov 18 '18 at 23:10











  • It's impossible to say it things can be faster without seeing the exact data and code. See if you can reproduce the problem in a site like jsbin, so that we can have a look (the performance is likely to be quite similar between Android and JavaScript).

    – Frank van Puffelen
    Nov 19 '18 at 3:55











  • Please add the code that you are using to get the data from the database and please responde with @.

    – Alex Mamo
    Nov 19 '18 at 10:12











  • @FrankvanPuffelen, the exact data is kind impossible to share, and the code is pretty dumb as you can see in my update

    – Rafael Lima
    Nov 19 '18 at 14:29











  • @AlexMamo, i believe it is because google takes longer to reduce the set from 8k to 5k

    – Rafael Lima
    Nov 19 '18 at 14:30














1












1








1








I was doing some profiling in my firebase database and I found one single anomaly



Read Speed
┌───────────────────────────────┬───────┬─────────────┬───────────────────┐
│ Path │ Count │ Average │ Permission Denied │
├───────────────────────────────┼───────┼─────────────┼───────────────────┤
│ /safeList │ 4 │ 3,092.50 ms │ 0 │
├───────────────────────────────┼───────┼─────────────┼───────────────────┤


It means every request to that structure took over 3 seconds. It's not the worst problem in the world but still strange.



safelist is a list of strings ordered by length manually and then imported into firebase. The list contains about 8000 strings of length 5 to 25.



These requests were made by me and each of them requested only the first 5000 samples from the set.



My question is:




  • Is there any way to improve the read performance?

  • If I simply request the whole set instead of the first 5000 would it be faster?

  • Any suggestions for a bigger sets of primitives?


==========UPDATE============



Some people are asking about data and code.



the only code where i call this query is:
firebase.child("safeList").limitToFirst(5000).addListenerForSingleValueEvent(new ValueEventListener() { //do stuff



i didn't put because is pretty dumb
and as said in the description:
Safelist is a List of String with about 8000 items ordered manually by length



the database rules related to it:



"safeList":{
".read":"root.child('premiums').child(auth.uid).exists()",
".write":false,
".indexOn" : ".value"
},


It takes average 3000ms when the second slowest query takes only 60ms










share|improve this question
















I was doing some profiling in my firebase database and I found one single anomaly



Read Speed
┌───────────────────────────────┬───────┬─────────────┬───────────────────┐
│ Path │ Count │ Average │ Permission Denied │
├───────────────────────────────┼───────┼─────────────┼───────────────────┤
│ /safeList │ 4 │ 3,092.50 ms │ 0 │
├───────────────────────────────┼───────┼─────────────┼───────────────────┤


It means every request to that structure took over 3 seconds. It's not the worst problem in the world but still strange.



safelist is a list of strings ordered by length manually and then imported into firebase. The list contains about 8000 strings of length 5 to 25.



These requests were made by me and each of them requested only the first 5000 samples from the set.



My question is:




  • Is there any way to improve the read performance?

  • If I simply request the whole set instead of the first 5000 would it be faster?

  • Any suggestions for a bigger sets of primitives?


==========UPDATE============



Some people are asking about data and code.



the only code where i call this query is:
firebase.child("safeList").limitToFirst(5000).addListenerForSingleValueEvent(new ValueEventListener() { //do stuff



i didn't put because is pretty dumb
and as said in the description:
Safelist is a List of String with about 8000 items ordered manually by length



the database rules related to it:



"safeList":{
".read":"root.child('premiums').child(auth.uid).exists()",
".write":false,
".indexOn" : ".value"
},


It takes average 3000ms when the second slowest query takes only 60ms







android firebase firebase-realtime-database






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 19 '18 at 14:28







Rafael Lima

















asked Nov 18 '18 at 22:00









Rafael LimaRafael Lima

433416




433416













  • read data into limits go set by set or make some service to read data in background and save it into database

    – Har Kal
    Nov 18 '18 at 23:10











  • It's impossible to say it things can be faster without seeing the exact data and code. See if you can reproduce the problem in a site like jsbin, so that we can have a look (the performance is likely to be quite similar between Android and JavaScript).

    – Frank van Puffelen
    Nov 19 '18 at 3:55











  • Please add the code that you are using to get the data from the database and please responde with @.

    – Alex Mamo
    Nov 19 '18 at 10:12











  • @FrankvanPuffelen, the exact data is kind impossible to share, and the code is pretty dumb as you can see in my update

    – Rafael Lima
    Nov 19 '18 at 14:29











  • @AlexMamo, i believe it is because google takes longer to reduce the set from 8k to 5k

    – Rafael Lima
    Nov 19 '18 at 14:30



















  • read data into limits go set by set or make some service to read data in background and save it into database

    – Har Kal
    Nov 18 '18 at 23:10











  • It's impossible to say it things can be faster without seeing the exact data and code. See if you can reproduce the problem in a site like jsbin, so that we can have a look (the performance is likely to be quite similar between Android and JavaScript).

    – Frank van Puffelen
    Nov 19 '18 at 3:55











  • Please add the code that you are using to get the data from the database and please responde with @.

    – Alex Mamo
    Nov 19 '18 at 10:12











  • @FrankvanPuffelen, the exact data is kind impossible to share, and the code is pretty dumb as you can see in my update

    – Rafael Lima
    Nov 19 '18 at 14:29











  • @AlexMamo, i believe it is because google takes longer to reduce the set from 8k to 5k

    – Rafael Lima
    Nov 19 '18 at 14:30

















read data into limits go set by set or make some service to read data in background and save it into database

– Har Kal
Nov 18 '18 at 23:10





read data into limits go set by set or make some service to read data in background and save it into database

– Har Kal
Nov 18 '18 at 23:10













It's impossible to say it things can be faster without seeing the exact data and code. See if you can reproduce the problem in a site like jsbin, so that we can have a look (the performance is likely to be quite similar between Android and JavaScript).

– Frank van Puffelen
Nov 19 '18 at 3:55





It's impossible to say it things can be faster without seeing the exact data and code. See if you can reproduce the problem in a site like jsbin, so that we can have a look (the performance is likely to be quite similar between Android and JavaScript).

– Frank van Puffelen
Nov 19 '18 at 3:55













Please add the code that you are using to get the data from the database and please responde with @.

– Alex Mamo
Nov 19 '18 at 10:12





Please add the code that you are using to get the data from the database and please responde with @.

– Alex Mamo
Nov 19 '18 at 10:12













@FrankvanPuffelen, the exact data is kind impossible to share, and the code is pretty dumb as you can see in my update

– Rafael Lima
Nov 19 '18 at 14:29





@FrankvanPuffelen, the exact data is kind impossible to share, and the code is pretty dumb as you can see in my update

– Rafael Lima
Nov 19 '18 at 14:29













@AlexMamo, i believe it is because google takes longer to reduce the set from 8k to 5k

– Rafael Lima
Nov 19 '18 at 14:30





@AlexMamo, i believe it is because google takes longer to reduce the set from 8k to 5k

– Rafael Lima
Nov 19 '18 at 14:30












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53365894%2ffirebase-database-speed-up-simple-read%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53365894%2ffirebase-database-speed-up-simple-read%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Guess what letter conforming each word

Port of Spain

Run scheduled task as local user group (not BUILTIN)