База данных sharding и направляющие

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

Распределение необходимых переменных:

  array = [1];
  arraySize: number;

Объявить функцию, которая добавляет элемент в массив:

increaseArrayElement() {
   this.arraySize = this.array[this.array.length - 1 ];
   this.arraySize += 1;
   this.array.push(this.arraySize);
   console.log(this.arraySize);
}

Вызвать функцию в html

  <button md-button (click)="increaseArrayElement()" >
      Add element to array
  </button>

Итерация через массив с помощью ngFor:

<div *ngFor="let i of array" >
  iterateThroughArray: {{ i }}
</div>
11
задан Josh Lee 9 August 2010 в 23:51
поделиться

5 ответов

FiveRuns имеют драгоценный камень под названием DataFabric, который делает прикладной уровень sharding и основную/ведомую репликацию. Это могло бы стоить проверить.

13
ответ дан 3 December 2019 в 02:21
поделиться

Для тех Вам нравлюсь я, кто не услышал о sharding:

http://highscalability.com/unorthodox-approach-database-design-coming-shard

8
ответ дан 3 December 2019 в 02:21
поделиться

По моему мнению самый простой путь, поддерживают 1:1 между экземплярами направляющих и черепками DB.

0
ответ дан 3 December 2019 в 02:21
поделиться

Я принимаю с черепками, мы говорим о горизонтальном разделении, и не вертикальное разделение (вот различия на Википедию).

Прежде всего расширьте вертикальное разделение насколько можно взять его перед рассмотрением горизонтального разделения. Легко в направляющих иметь другую точку моделей к различным машинам и для большинства сайтов направляющих, это принесет Вам достаточно далеко.

Для горизонтального разделения, в идеальном мире, это было бы обработано на прикладном уровне в направляющих. Но в то время как это не твердо, это не тривиально в направляющих, и к тому времени, когда Вам нужен он, обычно Ваше приложение выросло вне точки, где это выполнимо, так как Вам опрыснули вызовы ActiveRecord повсеместно. И никому, разработчикам или управлению, не нравится работать над ним перед необходимостью в нем, так как все работали бы над пользователями функций, будет использовать теперь, а не над разделением, которое не может играть роли в течение многих лет после того, как трафик взорвался.

Уровень ActiveRecord... не легкий от того, что я вижу. Потребовал бы большого исправления обезьяны во внутренности направляющих.

В Spock мы закончили тем, что обработали это использование пользовательского прокси MySQL, и открытый получил его на SourceForge как Прокси Spock. ActiveRecord думает, что говорит с одной машиной баз данных MySQL, когда действительность, он говорит с прокси, который затем говорит с одной или несколькими базами данных MySQL, объединяется/сортирует результаты и возвращает их в ActiveRecord. Требует только нескольких изменений в Вашем коде направляющих. Смотрите на страницу Spock Proxy SourceForge для получения дополнительной информации и по нашим причинам того, чтобы пойти этим путем.

9
ответ дан 3 December 2019 в 02:21
поделиться

Подключение направляющих к нескольким базам данных не является грандиозным предприятием - Вы просто сделали, чтобы ActiveRecord разделил на подклассы для каждого черепка, который переопределяет свойство соединения. Это делает это довольно простым, если необходимо выполнить вызовы перекрестного черепка. Затем просто необходимо написать немного кода, когда необходимо выполнить вызовы между черепками.

Мне не нравится идея Hank разделить экземпляры направляющих, потому что это кажется сложным для вызова кода между экземплярами, если у Вас нет крупной общей библиотеки.

Также необходимо посмотреть на выполнение чего-то как Мазохизм перед запуском sharding.

2
ответ дан 3 December 2019 в 02:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: