Дубликат возвращается Гуидом. NewGuid ()?

BigQuery не предназначен для непосредственного представления ваших данных всему миру на веб-сайте. Для этого вы бы использовали другой инструмент, и есть из чего выбирать.

Для начала, подумайте, как ваши данные будут публиковаться в сети - поскольку вы работаете с довольно большой таблицей, вряд ли вы будете использовать ее как один большой блок, было бы лучше создать интерфейс API, где пользователи могут запрашивать фрагменты. данных, отправляя запросы в те места, где они хранятся - это также будет дешевле для вас как в вычислительном, так и в финансовом отношении (представьте, если бы каждый пользователь загружал ВСЕ данные каждый раз, когда просматривал ваш сайт!).

Во-вторых, подумайте, где вы храните его. Если вы предоставляете данные в Интернете, вы можете или не хотите, чтобы они оставались в BigQuery. Другой подход - переместить выбранные данные в другую базу данных, такую ​​как MySQL , а затем подключить ее к вашему веб-сайту, используя один из многих вариантов (PHP, Django и т. ]

Третий вариант, который может подойти, в зависимости от сложности ваших данных, - это создание приложения Dash на python и публикация его в Интернете, чтобы пользователи могли взаимодействовать с данными через панель мониторинга. [ 116]

Ни один из этих вариантов не является тривиальным, достаточно сложно разместить такой большой объем данных на веб-сайте, поэтому все подходы потребуют дополнительных исследований и значительной работы.

10
задан dviljoen 19 November 2008 в 16:29
поделиться

7 ответов

Действительно Отправляет делают асинхронный вызов, или делает объект билета, входят в другой поток на любом этапе.

В примере кода Вы снова используете тот же объект. Что, если Отправляют, отправляет билет в фоновом потоке после малой задержки (и не делает копию). То, когда Вы изменяете CacheId, Вы на самом деле обновляете все ожидание, отправляет. Это также объясняет почему Поток. Сон решает проблему. Попробуйте это:

for( int i = 0; i < _numOrders; i++ )
{
    OrderTicket ticket = new OrderTicket(... );
    ticket.CacheId = Guid.NewGuid();
    Submit( ticket );  // note that this simply makes a remoting call
}

Если по некоторым причинам это не возможно, попробуйте это и посмотрите, являются ли они все еще тем же:

ticket.CacheId = new Guid("00000000-0000-0000-0000-" + 
     string.Format("{0:000000000000}", i));
21
ответ дан 3 December 2019 в 14:18
поделиться

Тысячи разработчиков используют Гуиды в.NET. Если Гуид. NewGuid () имел любую тенденцию вообще для вовлечения на одном значении, с проблемой встретятся давно.

Незначительные изменения кода являются верным преступником здесь. Факт тот Поток. Сон (который является меньше отвлекающим маневром, чем рыба, гниющая на солнце) "решает" Вашу проблему, предполагает, что Ваши свойства устанавливаются некоторым странным способом, который не может вступить в силу, пока цикл не прекращает блокироваться (или путем окончания или Потоком. Сон). Я даже был бы готов держать пари, что "незначительное изменение" состояло в том, чтобы сбросить все свойства от отдельного потока.

Если бы Вы отправили некоторый пример кода, который помог бы.

6
ответ дан 3 December 2019 в 14:18
поделиться

Это - ошибка в Вашем коде. Если Вам удалось генерировать несколько гуид, это - наиболее вероятное объяснение. Подсказка находится здесь в Вашем вопросе: "когда мы запустили тест после некоторых незначительных изменений кода в средстве моделирования, все объекты, сгенерированные им, имели тот же Гуид"

3
ответ дан 3 December 2019 в 14:18
поделиться

См. эту статью о том, как создается Гуид.

Эта статья прибыла из Этого ответа.

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

2
ответ дан 3 December 2019 в 14:18
поделиться

Код в Отправляет, и OrderTicket был бы полезен также...

Вы снова используете OrderTicket. Я подозревал бы, что или Вы (или сама дистанционная работа) обрабатываете в пакетном режиме, вызывает - вероятно, относительно # пределов соединений/хоста - и взятие последнего значения CacheId, когда это наконец отправляет их вперед.

Если Вы отлаживаете или Поток. Спят приложение, Вы изменяете синхронизацию так, чтобы вызов дистанционной работы закончился перед присвоением нового CacheId.

Вы - asyncing вызов дистанционной работы? Я думал бы, что синхронизирующий вызов заблокируется - но я сверился бы с анализатором пакетов как Wireshark, чтобы быть уверенным. Независимо, просто изменение на создание нового OrderTicket в каждом повторении, вероятно, добилось бы цели.

Править: Вопрос не о NewGuid, повреждаемом..., таким образом, мой предыдущий ответ был удален.

2
ответ дан 3 December 2019 в 14:18
поделиться

Мой пищеварительный тракт говорит мне, что что-то вдоль этих строк продолжается...

class OrderTicket 
{
   Guid CacheId {set {_guid = new Guid("00000000-0000-0000-0000-");}
}

Зарегистрируйте значение CacheId в файл журнала каждый раз его названный с отслеживанием стека... Возможно, кто-то еще устанавливает его.

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

Я не знаю детали того, как сгенерированы GUID.. все же. Однако в настоящее время мой org. порождает GUID на уровне, который пристыдил бы кроликов. Таким образом, я могу ручаться за то, что GUID не повреждаются.. все же.

  • Отправьте исходный код, если это возможно.. или размноженное приложение клона. Много раз я нахожу действие создания того приложения клона к репродукции, проблема показывает мне проблему.
  • Другой подход должен был бы прокомментировать "те незначительные изменения". Если это решает проблему, Вы можете затем triangularize для нахождения незаконной строки кода. Глазное яблоко незначительные изменения трудно... Я имею в виду очень трудно.

Действительно сообщите нам, как это идет..., это звучит интересным.

1
ответ дан 3 December 2019 в 14:18
поделиться
Другие вопросы по тегам:

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