Как мне сократить размер этой базы данных? - PullRequest
1 голос
/ 03 апреля 2011

У меня есть огромная база данных, которую мне нужно сократить, потому что она довольно большая и очень сложная для загрузки. Каков наилучший способ «сжать» это и затем расширить его с помощью javascript?

Есть ли инструменты, которые могут сделать это для меня? (Дина Эдварда недостаточно, и gzip недоступен)

Я ищу что-то, что использует все разрешенные переменные javascript и ищет шаблоны (которых их много), аналогично тому, как работает сжатие zip.

Вот пример того, как структурирована моя база данных (конечный результат должен быть в этом формате):

var crops =  {
Jan1: {
    Apple: [1995, 1996, 1998, 2003, 2007, 2008, 2009],
    Banana: [1995, 1998, 2001, 2002, 2003, 2007, 2008, 2009],
    Cantaloupe: [2000, 2003, 2004, 2005, 2006, 2007],
    Date: [1995, 1998, 2001, 2002, 2003, 2004, 2007],
    Elephant: [1995, 2002, 2004, 2007, 2009],
    Fig: [1996, 2003, 2004, 2005, 2006, 2007],
    Grape: [1999, 2000, 2001, 2004, 2006, 2008],
    Honeydew: [2001, 2005, 2008],
    Ita: [1997, 2000, 2001, 2002, 2004, 2005],
    Jasmine: [1997, 1998, 2002, 2004, 2005, 2007, 2008],
    Kiwi: [1997, 1998, 2003],
    Lemon: [1995, 1997, 2001, 2003, 2004, 2007, 2009],
    Melon: [1995, 1997, 2000, 2003, 2005],
    Nectarine: [1996, 1998, 2000, 2002, 2007],
    Orange: [1996, 1998, 2000, 2003, 2007],
    Pineapple: [1996, 1997, 1999, 2000, 2002, 2003, 2005, 2007, 2008, 2009],
    Quince: [1995, 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008],
    Raspberry: [1995, 1996, 1997, 1998, 2000, 2001, 2002, 2007],
    Strawberry: [2002, 2003, 2006, 2008],
    Tangerine: [1995, 1997, 1998, 1999, 2006, 2008],
    Ugli: [1997, 2001, 2002, 2006, 2009],
    Vanilla: [1998, 1999, 2001, 2002, 2004, 2005],
    Watermelon: [1997, 1998, 2001, 2002, 2003, 2005],
    Xigua: [1996, 2001, 2002, 2003, 2004, 2005, 2006],
    Yali: [1997, 1998, 1999, 2000, 2001, 2002, 2005, 2006, 2009],
    Zucchini: [2001, 2002]
},
Jan2: {
    Banana: [2005, 2009],
    Cantaloupe: [2006],
    Grape: [1997, 2005, 2006, 2007],
    Honeydew: [1999],
    Ita: [2001, 2002],
    Jasmine: [1999],
    Kiwi: [2008, 2009],
    Nectarine: [2001],
    Orange: [1997, 2008],
    Quince: [2005],
    Raspberry: [2002],
    Strawberry: [2004],
    Vanilla: [1995, 1999],
    Watermelon: [1997, 2002],
    Xigua: [2006, 2007],
    Yali: [2001, 2005],
    Zucchini: [2004]
},
Jan3: {
    Apple: [1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009],
    Banana: [1997, 1998, 2001, 2006],
    Cantaloupe: [1995, 1996, 1997, 1998, 1999, 2000, 2002, 2006, 2008],
    Date: [1995, 1998, 1999, 2000, 2001, 2005, 2007, 2008, 2009],
    Elephant: [1996, 1997, 1998, 2000, 2002, 2003, 2004, 2005, 2006, 2007],
    Fig: [1998, 1999, 2000, 2002, 2003, 2009],
    Grape: [1997, 1998, 2002, 2005, 2006, 2007],
    Honeydew: [1995, 1996, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008],
    Ita: [1995, 1996, 2000, 2001, 2004, 2005, 2008, 2009],
    Jasmine: [1995, 1999, 2002, 2007, 2008],
    Kiwi: [1996, 2003, 2006, 2008, 2009],
    Lemon: [1995, 1996, 1999, 2002, 2006, 2007, 2009],
    Melon: [1997, 1999, 2002, 2005, 2008],
    Nectarine: [1998, 2000, 2002, 2004, 2005, 2008],
    Orange: [1995, 1997, 2000, 2002, 2005, 2007, 2009],
    Pineapple: [1998, 2001, 2002, 2004, 2005, 2007, 2009],
    Quince: [1995, 1997, 2000, 2002, 2004, 2005, 2006, 2007, 2009],
    Raspberry: [1995, 1996, 1997, 1998, 2002, 2004, 2007, 2008],
    Strawberry: [1996, 1997, 1999, 2000, 2006],
    Tangerine: [1999, 2001, 2004, 2007, 2008],
    Ugli: [1995, 1997, 1998, 1999, 2000, 2006, 2007, 2009],
    Vanilla: [1996, 1997, 2003, 2006, 2008],
    Watermelon: [1995, 1997, 1999, 2002, 2003, 2005],
    Xigua: [1996, 1997, 1999, 2001, 2004, 2006, 2008, 2009],
    Yali: [1996, 1998, 2001, 2003, 2004, 2005, 2007, 2008],
    Zucchini: [1997, 2003, 2006, 2007, 2009]
},
Jan4: {
    Apple: [2000, 2002, 2003],
    Cantaloupe: [2009],
    Elephant: [2003],
    Fig: [2001, 2008],
    Honeydew: [2001],
    Pineapple: [2004],
    Quince: [1999],
    Ugli: [2009],
    Vanilla: [2005],
    Yali: [2007]
},
Feb1: {
    Apple: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009],
    Banana: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009],
    Cantaloupe: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Date: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009],
    Elephant: [1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009],
    Fig: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Grape: [1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Honeydew: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Ita: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009],
    Jasmine: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Kiwi: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Lemon: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Melon: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Nectarine: [1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Orange: [1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Pineapple: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Quince: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008],
    Raspberry: [1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Strawberry: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2009],
    Tangerine: [1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008],
    Ugli: [1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Vanilla: [1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009],
    Watermelon: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2006, 2007, 2009],
    Xigua: [1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Yali: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009],
    Zucchini: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009]
},
Feb2: {
    Apple: [1995, 1996, 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Banana: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2008, 2009],
    Cantaloupe: [1995, 1996, 1997, 1998, 1999, 2001, 2004, 2005, 2006, 2007],
    Date: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009],
    Elephant: [1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Fig: [1995, 1996, 1997, 1998, 1999, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Grape: [1995, 1996, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Honeydew: [1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Ita: [1995, 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Jasmine: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008],
    Kiwi: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2006, 2007, 2009],
    Lemon: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008],
    Melon: [1995, 1996, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Nectarine: [1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Orange: [1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Pineapple: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009],
    Quince: [1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2006, 2007, 2008, 2009],
    Raspberry: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Strawberry: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009],
    Tangerine: [1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009],
    Ugli: [1995, 1997, 1998, 1999, 2000, 2001, 2003, 2006, 2008, 2009],
    Vanilla: [1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008],
    Watermelon: [1997, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2009],
    Xigua: [1995, 1996, 1997, 1999, 2000, 2001, 2002, 2005, 2006, 2007, 2008, 2009],
    Yali: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2006, 2007, 2008, 2009],
    Zucchini: [1995, 1997, 1998, 1999, 2001, 2003, 2006, 2007, 2008, 2009]
},
Feb3: {
    Apple: [1996, 1997, 2003, 2004],
    Banana: [1998],
    Cantaloupe: [1996, 1997, 1999, 2000],
    Date: [1996, 1997, 2006],
    Elephant: [2004],
    Fig: [1995, 1996, 2001, 2006, 2008],
    Grape: [2003],
    Honeydew: [2004],
    Ita: [1997, 2009],
    Jasmine: [1999, 2004, 2006, 2008],
    Kiwi: [1999, 2002, 2003, 2006],
    Lemon: [1995, 1997, 2004],
    Melon: [2008],
    Nectarine: [1995, 1998, 2005],
    Orange: [2003, 2009],
    Pineapple: [1995, 2001],
    Quince: [1995, 1996, 2000, 2004, 2005, 2006],
    Raspberry: [1996, 1999, 2000, 2003, 2009],
    Strawberry: [1995, 1998, 2001, 2004, 2008],
    Tangerine: [1996, 1998, 2002],
    Ugli: [2008],
    Vanilla: [1996, 2007, 2009],
    Watermelon: [2006, 2008],
    Xigua: [1998, 1999, 2002, 2005, 2009],
    Yali: [1996, 2000, 2001, 2002, 2004],
    Zucchini: [1998, 2000, 2003, 2007]
},
Feb4: {
    Apple: [1995, 1996, 1997, 1998, 2000, 2002, 2003, 2006, 2009],
    Banana: [1995, 1996, 1997, 2000, 2002, 2004, 2005, 2007, 2008, 2009],
    Cantaloupe: [1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008],
    Date: [1995, 1997, 1998, 2000, 2001, 2002, 2004, 2005, 2008, 2009],
    Elephant: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2006, 2007, 2008, 2009],
    Fig: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2008, 2009],
    Grape: [1995, 1996, 1997, 1998, 2003, 2005, 2006, 2007, 2008],
    Honeydew: [1995, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009],
    Ita: [1995, 1997, 1999, 2000, 2001, 2006, 2007, 2008, 2009],
    Jasmine: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009],
    Kiwi: [1995, 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2007, 2008],
    Lemon: [1995, 1996, 1998, 1999, 2000, 2001, 2003, 2005, 2006, 2007, 2008, 2009],
    Melon: [1995, 1996, 1998, 2000, 2002, 2003, 2005, 2006, 2007, 2008],
    Nectarine: [1996, 1997, 1998, 2000, 2003, 2004, 2006, 2007, 2008, 2009],
    Orange: [1996, 1998, 1999, 2000, 2001, 2002, 2003, 2006, 2008],
    Pineapple: [1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009],
    Quince: [1995, 1996, 1997, 1998, 1999, 2000, 2002, 2004, 2005, 2007, 2009],
    Raspberry: [1997, 2002, 2004, 2005, 2006, 2007, 2008, 2009],
    Strawberry: [1995, 1996, 1997, 1998, 2000, 2001, 2004, 2007, 2008],
    Tangerine: [1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008],
    Ugli: [1995, 1996, 1997, 1998, 1999, 2001, 2003, 2007, 2008, 2009],
    Vanilla: [1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009],
    Watermelon: [1995, 1996, 1997, 1998, 1999, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Xigua: [1996, 1997, 1998, 2000, 2003, 2005, 2007, 2008, 2009],
    Yali: [1995, 1997, 1998, 2005, 2007, 2008],
    Zucchini: [1995, 1996, 1997, 2000, 2003, 2005, 2006, 2007, 2008, 2009]
},
Mar1: {
    Apple: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Banana: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Cantaloupe: [1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Date: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Elephant: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Fig: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Grape: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Honeydew: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Ita: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Jasmine: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Kiwi: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Lemon: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Melon: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Nectarine: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009],
    Orange: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Pineapple: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Quince: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Raspberry: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008],
    Strawberry: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Tangerine: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Ugli: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Vanilla: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Watermelon: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Xigua: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Yali: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009],
    Zucchini: [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009]
}
/* Much much more */
}

Ответы [ 5 ]

1 голос
/ 03 апреля 2011

Вам нужно сжать ваши данные. У вас есть 12 месяцев, скажем, 20 плодов, и диапазон лет, который, предположительно, имеет более низкий предел. Храните данные так:

{[1,[1,[1,2,4]],[2,[4,6,7]]],[2,[1,[4,5,6]]], ... }

Каждый элемент массива:

[month, [fruit, [year1, year2, year3,...]]]

Если вам нужна длинная форма для работы, вы можете легко конвертировать ее со ссылкой.

1 = яблоко, 2 = банан, ...

1 = январь, 2 = февраль, ...

1 = 1995, 2 = 1996, ...

0 голосов
/ 03 апреля 2011

Почему это должно быть в Javascript?Не могли бы вы поместить его на сервер в реальной базе данных, а затем предоставить данные через службу или OData, чтобы страница могла запросить их?

0 голосов
/ 03 апреля 2011

Если в программе слишком много данных передается по проводам, то это немного поможет: вычтите стандартное значение из лет и удалите все лишние пробелы.Здесь я вычел 2000 из чисел.

// Before.
Jan1: {
    Apple: [1995, 1996, 1998, 2003, 2007, 2008, 2009],

// After.
Jan1:{Apple:[-5,-4,-2,3,7,8,9],

Вы можете сжать данные, используя inflate / gzip.Это поддерживается большинством браузеров.Настройка зависит от вашего веб-сервера.Кроме того: я не уверен, поддерживается ли это XmlHttpRequest, объектом, на который опирается AJAX.

0 голосов
/ 03 апреля 2011

У Алексея Уайта была запись в блоге (и подтверждение концепции) о онлайн-сжатии JS (чтобы уменьшить объем JS при кэшировании на стороне клиента).Однако его решение все еще медленное с передовым Chrome.Я попробовал ваши данные-образцы, и он заблокировал браузер на ~ 5 секунд.

0 голосов
/ 03 апреля 2011

Вы можете хранить каждую комбинацию фруктов, дня и года как один бит.Если вы позволите Apple быть битом 1, бананом битом 2 и так далее, вы получите 26 бит в день.Вы можете хранить 26 бит в 32-битном целом числе.Таким образом, каждый год занимает 365 целых чисел (кроме високосных годов, которые составляют 366) или 1460 байт.

Это будет ваше хранилище данных.Затем вы можете распаковать отдельные (или все) дни в javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...