|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.09.2012, 14:16 | #1 |
Пользователь
Регистрация: 14.11.2010
Сообщений: 47
|
Посоветуйте базу данных C# (.net 3.5, .net4)
При написании программных продуктов, часто сталкиваюсь с задачей хранить большие объемы данных (300000 - 500000 записей, возможно даже больше). Насколько я понимаю, самым правильным решением является использование здесь баз данных. Таким образом, я сформировал набор требований, которые предъявляю к провайдеру базы данных:
1. Производительность и скорость (объемы информации описал выше. Например это могут быть 500000 записей, хранящих информацию (различные параметры) об объектах недвижимости); 2. Возможность автоматической установки базы данных вместе с моим приложением (например посредством создания инсталлятора в Inno Setup) - чтобы пользователь не утруждал себя лишними действиями для установки еще и базы данных (грубо говоря - чтобы он даже не знал о ее существовании). 3. Работоспособность на популярных ОС (win7,xp,vista) 32 и 64 разрядных. 4. Бесплатная лицензия для коммерческого распространения Уже пробовал разные решения. Сначала использовали sqlite - но при увеличении базы данных, тем более до таких объемов, он работает слишком медленно. Затем задействовали mssql express - но его инсталляция - это какой то ужас (то есть автоматическое скачивание и установка, настроенные в рамках проекта InnoSetup - это не проблема, но вот дальнейшее использование - постоянные проблемы то с правами, то с названием сервера базы, то еще непонятно с чем). Очень нравится вариант mysql - но, насколько я понимаю, его нельзя распространять с коммерческим приложением (точнее можно, но для этого нужно купить commercial license). Еще недавно слышал про firebird, но не пробовал что это за птица такая. Кстати - будет ли нарушением коммерческой лицензии mysql, если Innosetup будет при установке моей программы, автоматически скачивать бд с официального сайта mysql и устанавливать ее? Но основной вопрос - какая БД будет соответствовать всем вышеперечисленным требованиям. Также - если у вас есть большой опыт в данном вопросе - готов заплатить за консультацию по данному вопросу и создание небольшого примера инсталлятора десктопного приложения, который будет параллельно автоматически устанавливать базу данных (соответствующую вышеперечисленным требованиям), с которой данное приложение в дальнейшем сможет взаимодействовать.
Автоматизация получения заказов для ВСЕХ ФРИлансеров!
|
09.09.2012, 20:03 | #2 |
Пользователь
Регистрация: 11.05.2012
Сообщений: 85
|
На мой взгляд, наилучшим вариантом является СУБД MySQL.
Она достаточно распространена, не требует много ресурсов, легко скачать дистрибутив последней версии. Легко инсталлируется. После инсталляции не требует никакой наладки переменных. Правда, встречаются советы устанавливать кое-какие параметры для поддержания русского языка, но я этого не делаю. Я активно использую MySQL уже несколько лет с параметрами по умолчанию - при этом она одинаково работает с русским языком и под Windows, и под UNIX (Linux), между которыми я постоянно переношу выгружаемые данные в обе стороны без всякого дополнительного усилия, и не было ни единого сбоя. Для этого, и вообще для работы с базами этого типа, в том числе для написания и отладки хранимых процедур, я использую только одну среду - dbForge Studio for MySQL от Devart (русскую версию), свободно распространяемую и отлично поддерживаемую, имеющую заведомо больший функционал, чем может понадобиться. Для поддержки русского языка как при работе сервера БД в Windows, так и при работе сервера БД в UNIX`ах, достаточно двух условий: 1 - создавать таблицы в коде UTF8 (советую использовать таблицы типа InnoDB, поддерживающие транзакции); 2 - при работе программы пользователя в среде Windows в connect string`е указывать: "...; CharSet=cp1251". И всё! Больше ничего не нужно. Что касается производительности. Я проводил специальные тестовые запросы со своего ПК с Windows к удаленному серверу под Linux`ом (SELECT, INSERT, UPDATE) с размерами таблиц до 10 млн. записей. Время получения ответа было вполне приемлемым, а в пределах указанного Вами диапазона до полумиллиона записей - порядка 2-7 секунд в зависимости от сложности запроса. При 50-300 тыс. записей простые запросы происходят вообще мгновенно. По-моему, ни одна СУБД не покажет результат лучше на обычных ПК средней производительности. В общем, простая в обращении и надёжная СУБД. А насчет лицензирования пусть заботится заказчик. Если он не захочет лицензировать, то отвечать будет он. Но я за всю историю распространения ПО в СССР/России знаю только 1 случай, когда банк заплатил штраф Майкрософту за нелицензионное использование Windows, и то все хорошо знакомые с этой историей сошлись на том, что была такая подстава, что Майкрософту больше ничего не оставалось делать, кроме как вчинить иск. Все же понимают тяготы российских разработчиков. Если круто требовать тотального лицензирования, то в России всё остановится, а это не выгодно никому, в том числе продавцам базового софта, и особенно харда. Последний раз редактировалось Гаврилов; 09.09.2012 в 21:50. |
09.09.2012, 21:52 | #3 |
Пользователь
Регистрация: 14.11.2010
Сообщений: 47
|
да мне mysql тоже нравится, но боюсь что по поводу лицензирования как раз придется отвечать мне) а хотелось бы чтобы все было на 100% честно
Автоматизация получения заказов для ВСЕХ ФРИлансеров!
|
09.09.2012, 21:58 | #4 |
Пользователь
Регистрация: 11.05.2012
Сообщений: 85
|
Тогда выхода нет - платите денежки - спасибо скажут. Дело в том, что теперь не осталось таких СУБД, за которые при их коммерческом использовании не пришлось бы платить, по крайней мере, мне они не известны.
Firebird - это та же InterBase, со своими тараканами, как и всякая СУБД. То, что она "бесплатна", то есть слухи, что уже нет. А если даже пока и бесплатна, то где гарантия, что скоро не станет платной, как это случилось с MySQL? Хороши были разработчики и особенно заказчики-пользователи, когда они, польстившись на бесплатную СУБД MySQL, вдруг узнали, что пользуются продуктом незаконно! И что Вы думаете, они толпой кинулись платить Ораклу? Так и работают, как работали. Есть, правда еще вариант, но плохой: сделать собственную "базу" на XML файлах данных, если ожидаются простые запросы. Тогда надо организовать "базу" (т.е. логику) так, как организуется логика "витрины данных": под запросы, пусть даже нарушаются правила реляционных СУБД. Собственно, это будет не база данных, а набор файлов, связанных логически только программно. С точки зрения программирования - это класс(ы), содержащий методы запросов к XML. В средствах разработки есть обширный инструментарий, позволяющий работать как на чтение, так и на вставку/редактирование/удаление записей в XML файлах, включая LINQ to XML. Не так трудно это сделать, но, конечно, это дополнительная работа, не поддерживаются транзакции и вообще - самодельщина. Придется, например, самостоятельно устанавливать отношения и обеспечивать целостность данных. Для небольших объемов данных XML работает очень быстро. А для больших не пробовал, но думаю, что значительно медленнее, чем СУБД. Последний раз редактировалось Гаврилов; 09.09.2012 в 22:48. |
09.09.2012, 22:32 | #5 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
SQL Server Express кстати тоже бесплатен и более пригоден под работу из приложения на С# Цитата:
Я его очень часто использую инсталлю и настраиваю - проблем особых не заметил. Наоборот отмечаю простую настройку по сравнению с другими СУБД
I'm learning to live...
|
||
09.09.2012, 22:33 | #6 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
Основной минус, который мне запомнился: плохая поддержка старых версий. Если на компьютере уже стоит Fb 1.6, а нужна 2.5, тогда можно поиметь проблемы в виде установки двух СУБД на один компьютер (программа, использующая 1.6 не захочет работать с 2.5 и наоборот), но с embedded версией этих проблем быть не должно. Установленная как полноценный сервер представляет из себя два процесса fbguard и fbserver. Никаких значков в трее нет. Какого-то GUI из коробки нет. Немного непривычная работа с генераторами (мне так даже удобнее было в своём время), версионная архитектура и еще некоторые нюансы потребуют таки поближе познакомиться с этой СУБД, если решите с ней связываться. Транзакции полноценные, триггеры и даже события имеются. Корни идут от делфей, поэтому в разработчиках/спонсорах было много соотечественников, а может и сейчас есть. |
|
09.09.2012, 23:12 | #7 |
Пользователь
Регистрация: 11.05.2012
Сообщений: 85
|
На MS SQL Server`e я обжигался не раз, и как раз при сравнительно больших массивах данных. Были случаи, когда простой селект работал до 60-70 тысячной записи и молча прекращал работу, хотя в таблице надо было по условию запроса выбрать еще около 100 тыс. записей. И очень медленно! Именно поэтому я перелез на MySQL, как только там появились транзакции и хранимые процедуры.
Я бы, конечно, для таких объемов посоветовал Ingres и Oracle, про которые хорошо знаю из личного опыта, что они надёжны, но это слишком дорого. C FireBird я знаком только по отзывам, кстати, противоречивым. Поэтому не советовал. Вы не забыли, что требуется работа с полумиллионными таблицами? Я имею сведения о медленной работе InterBase с такими объемами, и даже о потере данных. Ее ведь творили для срочной поддержки Delphi, в котором потребовалось хранить в базе компоненты, а то может быть, и не было бы никакой InterBase. Итак, может чел рассчитывать на быструю работу этой изначально персоналочной СУБД (FireBird) с большими объемами данных и на их надежное сохранение? Я прочитал про инсталляцию FireBird и InterBase. Вовсе не так это просто, особенно если человеку надо автоматизировать эту инсталляцию на стороне пользователя. Просто это может быть для того, кто многократно их устанавливал. (Мне сразу припомнился Марк Твен, который написал: "Не понимаю, почему это все говорят, что бросить курить трудно? Вовсе нет, я сам много раз бросал.") А MySQL инсталлируется в полтычка: надо только запустить msi-файл. Потом можно поменять пароль рута, можно создать пользователя и дать ему привилегии - всё это из скрипта. Далее останется только запустить скрипт, полученный автоматом с базы разработчика (эту выгрузку "резервной копии" можно сделать как из командной строки, так и интерактивно в dbForge Studio for MySQL), чтобы создать и загрузить базу данных. Последний раз редактировалось Stilet; 10.09.2012 в 07:55. |
10.09.2012, 00:11 | #8 | ||||||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
Цитата:
Они такие про все СУБД и не только. Спросите любителя FB и он скажет, что MySQL - вообще не СУБД и наоборот. Иначе бы не было тем про SQL Server vs Oracle, Win vs Linux, ... Цитата:
Цитата:
Цитата:
http://www.ibase.ru/devinfo/fb1tb.htm С СУБД такая тема, что их нужно уметь готовить и не нужно на птичку почем зря наезжать Цитата:
1) запускаем инсталлятор, выбираем из двух типов серверов (супер сервер и еще какой-то сервер, про их отличиям можно в интернете почитать, я уже не помню. там разница с обработкой подключений пользователей), ну а дальше всё. СУБД установлена, два процесса запущено, можно создавать базы и играться дальше. 2) вариант с embedded. ничего устанавливать не нужно. Просто бросаем содержимое архива рядом с программой. Кстати, про пароли для рута... В птичке нет никаких рутов и с защитой баз всё достаточно печально. Шифрования тоже нет. Embedded версия еще с ролями внутри базы по сути толком не работает, если я не ошибаюсь. Если нужна защита базы, то её нужно выносить на отдельный сервер и там уже сторонними методами решать задачу. Это если критичен этот момент. Последний раз редактировалось Stilet; 10.09.2012 в 07:57. |
||||||
10.09.2012, 01:05 | #9 |
Пользователь
Регистрация: 11.05.2012
Сообщений: 85
|
Никто не наезжает на Вашу огненную птичку. Пусть выбирает alexplato. Очень хорошо, что у него есть теперь больше материала для выбора.
А насчет СУБД, языков и сред программирования Вы правы, pu4koff, всегда мнений было много, и спорить можно до бесконечности. Поэтому я не собираюсь спорить. Сейчас продукты схожего назначения подравнялись, а спорщики в основном спорят на основании своих собственных устаревших взглядов (я и сам грешен). Когда в 1990-х годах вся молодежь накинулась на Delphi и InterBase, эти продукты еще находились в несозревшем состоянии, и их обкатывали на голодных российских программерах. Я в это время работал на VAXах сначала с гораздо лучшей, чем любая из теперешних СУБД, DEC/Rdb, потом внедрял на промышленных серверах Sun СУБД CA-Ingres, потом Oracle, разрабатывал на этих СУБД базы и ПО под эти базы на C++. И мне было не до Delphi, который казался (да и сейчас кажется) неизвестно для чего сделанной реинкарнацией учебного языка Паскаль - в свою очередь, модификации Алгола, когда был уже С++, который полностью всех удовлетворял. Сейчас я несколько изменил свое мнение и считаю, что Delphi был полезен тем, что он дал хороший пинок развитию других средств разработки. А тогда мне было просто некогда заняться им поближе, я только цеплял несколько раз MS SQL Server, который был установлен правильно и действительно обладал теми недостатками, о которых я писал. Почти одновременно с InterBase появился MySQL, но он был еще совсем слабеньким. Были еще R-Base и персоналочная dBase - помните? Вот тогда были споры! А сейчас давайте не будем спорить. "Всяк кулик свое болото хвалит". И все же не могу удержаться. Вот Вы все цитируете и возражаете, а сами все время пишете про сложности и недостатки InterBase. Последний раз редактировалось Stilet; 10.09.2012 в 07:58. |
10.09.2012, 05:39 | #10 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
Короче, с версиями 1.6 2.0 огнептицы работал, оставило это только положительные эмоции. Что там сейчас с 2.5 не знаю и в целом в энтерпрайз не внедрял. Ставилось всё в пол пинка, лицензия на корпоратив не обрезанная была, вплоть до внедрения в инсталлятор (вроде, можно было даже менять код и продавать). Под краткое описание требований полностью подходит. Производительность будет зависеть сильно от схемы, запросов и настроек сервера. В общем и целом 500 000 записей не должно быть проблемой для этой СУБД. Каких-то особых проблем с надёжностью нет, бэкапы легко делаются. Удобный инструментарий для разработки в виде IBExpert присутствует, хоть и в виде стороннего решения. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Посоветуйте видеокурс или мануал по созданию сайта на asp.net | jojo97 | ASP.NET | 4 | 22.07.2015 23:56 |
Посоветуйте базу данных | Steh | C/C++ Базы данных | 7 | 25.06.2012 16:12 |
Посоветуйте литературы по работе с opengl в c# .net | Zyxer | C# (си шарп) | 1 | 14.02.2011 12:56 |
Подключение к базу данных SQL Server на VB.Net | uchenik | Помощь студентам | 0 | 22.03.2010 10:50 |
Создать базу данных | west23 | Microsoft Office Access | 2 | 11.02.2010 21:20 |