powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / транзакционный словарь
17 сообщений из 42, страница 2 из 2
транзакционный словарь
    #39108049
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAК примеру у меня сейчас в БД на текущий момент уже 46653 записи, повторений не наблюдается.
тест
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
        static void Main(string[] args) {
            var size = 6;
            var symbols = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

            var d = new Dictionary<String, Byte>();
            try {
                while(true) {
                    d.Add(GenerateUniqueId(size, symbols), 0);
                }
            } catch(Exception e) {
                Console.WriteLine("Count: " + d.Count);
                Console.WriteLine(e.Message);
            }

            Console.ReadKey();
        }


Раз 10 позапускал, от 70 до 500 тыс. уникальных.
...
Рейтинг: 0 / 0
транзакционный словарь
    #39108100
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

вот это запустите

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
 static void Main(string[] args)
        {
            const int SIZE = 2;
            const string SYMBOLS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            Console.WriteLine("combinations count: " + Math.Pow(SYMBOLS.Length, SIZE));
            var dict = new Dictionary<string, object>();
            while (true)
            {
                try
                {
                    dict.Add(GenerateUniqueId(SIZE, SYMBOLS), null);
                }
                catch
                {
                    Console.WriteLine("duplicate found on iteration " + dict.Count + 1);
                    break;
                }
            }

            Console.ReadKey();
        }
...
Рейтинг: 0 / 0
транзакционный словарь
    #39108110
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне не нужно "почти никогда" или "крайне редко". Мне нужна гарантированная уникальность и вопрос не в том как лучше создать uid. вопрос в проверке его уникальности. Кроме как сохранять ранее сгенерированные я вариантов не вижу. И я знаю что можно проверять просто констрейнтом в базе, я знаю что со временем время генерирования uidов будет расти и последний доступный будет искаться "вечность". Здесь право не в этом вопрос. Нужен очень быстрый компактный потокобезопасный сторадж с легкой установкой поддержкой и хорошей либой в нугете для его пользования. Про беркли говорили, видимо именно то что мне и нужно. Только для мня не понятно лучший ли это выбор в контексте именно моей задачи и нашей платформы. (.net)
...
Рейтинг: 0 / 0
транзакционный словарь
    #39108120
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANADenis.skyANA,

так он же не гарантирует уникальность?Кто он? Этот метод, или RNGCryptoServiceProvider?

RNGCryptoServiceProvider нет, а метод вполне . Погуглите.

"вполне" не проходит, должно быть да или нет
...
Рейтинг: 0 / 0
транзакционный словарь
    #39108143
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БерклиДБ примитивный до безобразия. Под C# адаптирован
Можешь SQlite взять, тоже есть обертка под C#

Ты бы требования озвучил. Сколько максимально должно быть сгенерировано ID в секунду/день/месяц/год. Может вообще не надо заморачиваться: просто сделать файлик, при старте грузить его в Dictionary а при выдаче дописывать в Dictionary и в файл.
...
Рейтинг: 0 / 0
транзакционный словарь
    #39108151
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

файлик с транзакционностью и поиском это не кое-что кое чье :). Стебелек, не иначе.
...
Рейтинг: 0 / 0
транзакционный словарь
    #39108177
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TРаз 10 позапускал, от 70 до 500 тыс. уникальных.
присобачь еще "0123456789_" к symbols и повтори эксперимент)
...
Рейтинг: 0 / 0
транзакционный словарь
    #39108202
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще надо
Код: c#
1.
result.Append(chars[b % (chars.Length)]);


а не
Код: c#
1.
result.Append(chars[b % (chars.Length - 1)]);



так, как остаемся без 'Z'.
...
Рейтинг: 0 / 0
транзакционный словарь
    #39108205
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и к чему GetNonZeroBytes?
Зачем оставаться без 0?
...
Рейтинг: 0 / 0
транзакционный словарь
    #39108235
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Dima T,

файлик с транзакционностью и поиском это не кое-что кое чье :). Стебелек, не иначе.
Если что: я про Dictionary, а файлик на случай перезапусков проги (для инициализации). До миллиона значений Dictionary легко потянет.
...
Рейтинг: 0 / 0
транзакционный словарь
    #39108244
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TDenis.Dima T,

файлик с транзакционностью и поиском это не кое-что кое чье :). Стебелек, не иначе.
Если что: я про Dictionary, а файлик на случай перезапусков проги (для инициализации). До миллиона значений Dictionary легко потянет.
так а что будет если сбой будет или я аппсервер передеплою или хз что еще. Если айдишник сгенерен, это должно остаться на диске. Мне нужно персистить каждый айдишник. Сначала персист - потом "вот тебе уникальный айдишник".
...
Рейтинг: 0 / 0
транзакционный словарь
    #39108257
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.так а что будет если сбой будет или я аппсервер передеплою или хз что еще.
Для того и файлик. Это бэкап выданных ID. Вроде понятно написал
авторпри старте грузить его в Dictionary а при выдаче дописывать в Dictionary и в файл
...
Рейтинг: 0 / 0
транзакционный словарь
    #39108274
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да ну велосипед. Тем более у меня сейчас там миллионов 5 уже записей.
...
Рейтинг: 0 / 0
транзакционный словарь
    #39108280
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Под 5 млн - бери любую СУБД, какая больше нравится. Делаешь таблицу где первичный ключ твой ID. Дальше просто вставка в таблицу. сохранилось - отдаешь ID дальше.
...
Рейтинг: 0 / 0
транзакционный словарь
    #39108293
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

делал изначально так на sqlazure. Медленно. переделал на tablestorage - быстро
...
Рейтинг: 0 / 0
транзакционный словарь
    #39108349
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВДа и к чему GetNonZeroBytes?
Зачем оставаться без 0?0 на кратных знаменателю числах.
...
Рейтинг: 0 / 0
транзакционный словарь
    #39108525
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЕвгенийВДа и к чему GetNonZeroBytes?
Зачем оставаться без 0?0 на кратных знаменателю числах.
Множество 1-255 менее мощно чем 0-255 со всеми вытекающими.
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / транзакционный словарь
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]