Related
There are several tools that help to analyze the users behavior on your website. I would tend to divide them into ones that live on an own platform and which can be accessed through and API (like Google Analytics) and that ones that are to be installed on your own server (like Piwik).
I will launch a new web project soon, which requires such a tool and thus I wonder which one I should use. In my case I need to collect the data on my own server, so I will have to stick with the second type of tools. After playing around a little bit on my beta server I considered Piwik to be pretty nice to personalize, but until now, I had issues to set up piwik on the production server, because it is a windows server and the piwik version that is available at the webapp installer platform of windows server requires a different php version.
Installing Piwik on another - let's say - analytics server, is not an option for me, because I don't want to create all this https traffic, just because I am not able to set it up on my production server. And I also don't want to purchase another https certificate ;-).
I browsed the Windows Webapp Installer Platform in hope of something that just works out of the box in Windows. Similar questions like this also propose Google Analytics or Piwik. But this cannot be it, can it?
So..
Is there a tool which all you Windows Server people use?
Are there other tools that are used frequently?
Or even: Is it somehow possible to set up Piwik on a Windows Server without using The windows Web App Installer? I posted a related question here that focusses on the installation of piwik.
Logparser is a free tool from Microsoft that lets you throw direct SQL queries to the IIS Logs generated on your Web server. You may use it to query basic stats such as:
[1] From what ip-address range I get the maximum queries? (users' country-profile)
[2] What particular pages (aspx/html) are most frequently visited?
[3] At what time of the day, do I get the maximum requests?
I remember using this tool in one of my earlier projects, but the reason was to track down some performance issues. Also, the tool itself is console based, so you need to be familiar with command-line. However, a GUI front-end could be easily developed in a high-level language such as C#, I think there should be already some, that are free to download
I am using Visual Studio 2008 C# and SQL for my development.
Which oracle version should i download? Oracle 10g?
Does it have a design interface like sql server mangement studio?
Will this distribution concept have a graphical tool which say "Hi, on which servers would you like to distributed the database and on what basis"?
Using a local application, when I connect to its server and try to enter or delete data not on that server, will the oracle DB management system transparently access other servers to get or insert data? Or will it produce an error?
In reverse order:
Oracle does not do distributed in the way you (seem to) imagine. It's not Voldemort or Cassandra. It's one database per server, unless you're talking about RAC: but RAC is shared everything, so it's transparent (but way complicated).
The nearest Oracle has to SQL Server Management Studio is, I guess, Enterprise Manager. But I suspect OEM is probably not as easy to use as its MSSQL counterpart.
If you have a free choice use 11gR2. Why wouldn't you not use the latest version?
Oracle does support one application using multiple databases. However, this is normally due existing (even legacy) databases providing some of the data for an application. You should not deliberately set out to have separate databases on multiple databases, because distributed transactions are slower, less reliable and harder to tune. Find out more.
If you want to have multiple servers for resilience or scalability then as I said before RAC (Real Application Clusters) is Oracle's solution. This is a different architecture from SQL Server's federated approach. Find out more.
"so this link thing is support by free
versions of oracle?"
There is only one free (as in free beer) version of Oracle, and that is the Express Edition (currently still 10g only). That edition does support Database Links. I suggest you read two related articles by Lewis Cunningham: one explaining about DB Links and the other on linking multiple XE instances.
Oracle 10g Express is a great starting point. You would then need the Oracle Developer Tools for Visual Studio package.
Although the database comes with a fairly basic web-based interface, you would fare much better using a proper tool as Oracle SQL Developer (it's free). It's possibly not as complete as SQL Server Management Studio in terms of what it graphically offers, but it's good enough.
The difference between connecting a database hosted on your local computer and one hosted 450 miles away usually boils down to correctly configure your connection strings. However, it will not ask you 'graphically'; in the C# application you will be creating, you'd have to configure that by the way of code. Oracle SQL Developer, on the other hand, will ask you kindly. :)
Your local application would operate over the database instances which you have set it up to do so. You could configure your application to connect to 3 (or more) different databases, and it's not that the database system will know, but that you would be the one managing the operation.
I've been experimenting with Hive for some data mining activities and would like to make it easily available to less command line orientated colleagues.
Hive does now ship with a web interface (http://wiki.apache.org/hadoop/Hive/HiveWebInterface) but it's very basic at this stage.
My question is does a visually polished and fully featured interface (either desktop or preferably web based) to Hive exist yet? Are their any open source efforts outside the Hive project working on this?
Now with new version of Cloudera's Hadoop Distribution comes HUE (Hadoop User Experience) with plugin called Beeswax, which most likely all you would need.
It's pretty tricky to configure, but one you get over it, it provides something like phpmyadmin interface, but is much nicer and easier. It supports writing queries, importing data, storing results, etc.
Web based opensource GUI for Hive
HWI - Shipped in Hive. with basic features.
Hue - Nice query editor with autocompletion. Support parameterized query. Latest version includes basic visualization of query result. Includes many other useful tools like managing HDFS, JobFlows, etc. Thus, heavy and little bit tricky to install and configure.
Zeppelin - Only includes Hive tool compare to Hue. Support query template. Pluggable visualization architecture and it's online archive, so easily create custom visualization and share it. Lightweight and easier to install than Hue while it does not include any feature for non-hive related things.
Other alternatives
Excel - Microsoft Excel is capable of making hive query and fetch data from hive. http://docs.hortonworks.com/HDPDocuments/HDP1/HDP-Win-1.1/bk_dataintegration/content/ch_using-hive-2.html has guide for doing it.
Commercial BI tool - Commercial BI tool like Tableau, Datameer, Karmasphere support connection to Hadoop or Hive. They have nice dashboards, charts. All they offer trial/community/personal edition.
HUE is usefull and good but you should also try "Karmasphere Analyst Free/community Edition". It is very easy to use and well documented. Free version is very capable. It is not web based but it has different OS support (windows,linux...etc). YOu can check the GUI from documents to see how it looks.
MS is calling Azure an Operating System.
To me, it feels much more like a framework. I am having a bit of trouble defining the two separately. I have a general intuition, but I am not articulate enough to really say if Azure is really an OS or just a framework sitting on top of Operating Systems.
I've just been listening to the Deep Fried Bytes Podcast #20 wherein, they interview Steve Marx, the Windows Azure Program Manager, and he explains it all.
From what I can gather thus far (haven't finished all the podcast) it works like this:
Microsoft have a ton servers running Hyper-V which can run virtualized instances of windows server 2008
You can start/stop/reboot an arbitrary number of these virtual win2k8 servers using an API, and you get charged only based on what you use.
The platform which controls this start/stop/reboot/crash recovery/provisioning/billing/etc is Windows Azure. They jokingly refer to it as the 'windows server overlord'
You define roles for these VM's, which can be either
web-role, in which you can run any .NET code hosted inside IIS (eg: ASP.NET, httpHandler, etc),
worker-role, in which you run some standalone .NET code for background processing and so on
Perhaps more roles once they come out of CTP
You can use the windows azure API's to start/stop them - eg: "Give me 5 instances of my web role and 3 instances of my worker role"
Data gets stored by their storage services, and can be
Blobs (I'm assuming something like S3)
Queues (I'm assuming something like SQS)
Tables - marx mentioned a 'web scale non-relational data store' - something like SimpleDB or BigTable
These VM's have a bunch of other services available to them - Live Services for windows live stuff, .NET services, SQL Services if you need a full-blown SQL server for relational data, Sharepoint services if you want sharepoint, etc.
All this stuff rolled up together is the Windows Azure Services Platform
My take - Giant Marketing fail. Confusion abounds. MS seem to always do this kind of 'roll it all up into a single buzzword' thing though (.NET 5 years ago, anyone?). I really wish they would stop it
Another way I have heard Windows Azure pitched is "infrastructure as a service". Meaning that you don't have to think about the operating system in the same way as if using a server or VM that you tweak.
What is Windows Azure? seems to answer this, perhaps?
Quoting #daok:
Description
The Azure™ Services Platform (Azure) is an internet-scale cloud services platform hosted in Microsoft data centers, which provides an operating system and a set of developer services that can be used individually or together. Azure’s flexible and interoperable platform can be used to build new applications to run from the cloud or enhance existing applications with cloud-based capabilities. Its open architecture gives developers the choice to build web applications, applications running on connected devices, PCs, servers, or hybrid solutions offering the best of online and on-premises.
Azure reduces the need for up-front technology purchases, and it enables developers to quickly and easily create applications running in the cloud by using their existing skills with the Microsoft Visual Studio development environment and the Microsoft .NET Framework. In addition to managed code languages supported by .NET, Azure will support more programming languages and development environments in the near future. Azure simplifies maintaining and operating applications by providing on-demand compute and storage to host, scale, and manage web and connected applications. Infrastructure management is automated with a platform that is designed for high availability and dynamic scaling to match usage needs with the option of a pay-as-you-go pricing model. Azure provides an open, standards-based and interoperable environment with support for multiple internet protocols, including HTTP, REST, SOAP, and XML.
Features
Key components of the Azure Services Platform include the following:
Windows Azure for service hosting and management, low-level scalable storage, computation and networking
Microsoft SQL Services for a wide range of database services and reporting
Microsoft .NET Services which are service-based implementations of familiar .NET Framework concepts such as workflow and access control
Live Services for a consistent way for users to store, share and synchronize documents, photos, files and information across their PCs, phones, PC applications and Web sites
Microsoft SharePoint Services and Microsoft Dynamics CRM Services for business content, collaboration and rapid solution development in the cloud.
Technically, Azure is a set of services running on vanilla Windows 2008 Servers running virtually inside of Hyper-V. Your app runs on those services, abstracted away from the actual operating system. Because of this, they are calling Azure a "Cloud Operating System". Unfortunately, these answers don't answer my question... so...
I re-formatted my question to something more generic: What is the difference between an OS and a Framework?
Windows Azure is both, a framework and an OS. The main two things any OS provide for the developers are the CPU and the memory which Windows Azure provide in different ways, through the compute node. it also provides a scalable storage to store several types of storage whether structure, unstructured or even semi structure data. please notice that the storage node runs on a different hardware resources than the compute node, which provides the system with better efficiency and high availability and scalability. if your application faces any problem, the system will automatically create another instance of it plus your data is replicated three times.
As the Cloud Computing is a concept which consists mainly of three layers, the infrastructure, the platform and the software (as a service), each layer of them is targeting a specified segment. the windows azure is targeting the developers to build high available and scalable applications, it doesn't manage the infrastructure, it is installed on Windows Server which make the administration on the infrastructure, however as the Cloud Computing is based on Virtualization, Windows Azure has its own hypervisor it doesn't depend on Windows Server Hyper-V.
For the developers, which needs to build their applications on Cloud Computing they need a designed framework or platform that gives them the ability to do so.
that's why I think Windows Azure is not just a framework, and not just an OS it is both.
I need to build a simple, single user database application for Windows. Main requirements are independence from windows version and installed software. What technologies (language/framework) would you recommend? My preference for language is the Visual Basic.
EDIT: What about VB.Net and SQL Server Compact Edition?
I would recommend Sqlite. It's completely self-contained, and public domain so there are no license issues at all.
Single user or multi user?
For single user, the answer would be SQLite
For multi user (or multithread), try MySQL or PostgreSQL.
Since your requirement is a windows based application i would suggest that you go with sql server 2005 express edition which is a free tool, but with certain small limitations. you can upgrade to a bigger version when you go with a paid version.
There are other DB engines like SQL Lite or FireBird, choose them if the support and growth options they provide are good enough for you
Additionally, Visual Basic is eof lifed. VB.NET might be a better windows based platform currently. It would give a better platform / features to start with and when you want to expand the talent you have working on the project, i assume .NET talent might be more available than programmers who want to work with a dead language.
duplicate of What options are there for a quick embedded DB in .NET?
I'll repeat my answer from there:
"Or theres Esent, the built in database that exists in every copy of windows. Read about it here: http://ayende.com/Blog/archive/2008/12/23/hidden-windows-gems-extensible-storage-engine.aspx" and http://www.codeplex.com/ManagedEsent
SQLite will work for a local desktop application. If you want several users, a few gigas of data, and multiple connections I would use mysql or Firebird.
http://www.mysql.com/
http://www.firebirdsql.org/
FireBird SQL server will be thing of choice. It can be used in both embedded and multiuser mode like traditional databases. It implements many of the SQL standards and has strong community base. It is available for Windows, Linux, Solaris, OS X, HP-UX
As mentioned, SQLite is a great single-user database. This page has VB/SQLite examples. Once concerns is that SQLite parses foreign key constraints, but does not enforce them. You can use this code to generate "foreign key triggers" for SQLite, thus gaining an easy to use database with FK constraints.
Depending on how demanding your database needs are, though, you might want to consider MS Access.
I used SQL Server Compact Edition. It's like sqllite. A single SDF file accessed using ADO.NET.
You can develop your application using Visual Basic .NET and manage you database (add tables, columns, constraints, etc...) using Visual Studio.
SQLite may be what you are looking for. http://www.sqlite.org/
Depending on your needs for the application.
You could use SQLLite which is a very nice database with no installation required.
You could also use Microsoft SQL Server: SQL Server Compact 3.5.
Both are free!
It's not quite clear from your post whether you want a web application or not.
For a web application, MySQL works effectively on the Windows platform. You also have nearly limitless options for development environment including, PHP, Ruby on Rails, Django, and .Net.
If you are looking at a desktop application, MS Access might be suitable ... incredible easy for simple applications.
Well, assuming you don't have any prior experience...
You need some kind of persistence storage (for example a database) and a client.
For the storage you could use almost anything. For example you could create your DB in MS Access and just ship it as a file, using ADO to access it.
Other options are MS SQL Express edition (comes pre-installed on some machines or could be installed for free) and plenty of open source databases like SQLite
For the client side you could not go wrong with VBScript and ADO (using OLE DB drivers). They come with every Windows installation since Dark Ages, you will have plenty of references/tutorials/answers online.
A drawback: no UI to speak of, so you'll have to build a command line interface (which was for a 'simple' application).
If you want to build a UI I would suggest using .NET WinForms. The overhead will be substantially bigger but .NET is now installed on all XP/Vista machines and even if it is not you could always install the framework with you application.
If you want to build application that can move to other pc easily,I prefer Microsoft Access it is small database easy to use and no need to install.It suites for application like Addressbook,mini crud system.
But if you want to develop enterprise database system you should use MySQL instead.
I do not understand what you mean with "independence form [...] installed software". You ever need at least the DBMS installed as well as one client or user interface.
I recommend using MS Access. It is easy and cheap for simple, single user tasks and rapid prototyping development. Only development version have to be bought ("normal" Access) to create DBs. Runtime version of Access 2007 can be downloaded free of cost from Microsoft Homepage - for using only the database you created.
Also it combines DBMS and GUI frontend in same tool.
Dare I mention MS Access...?
If you are looking for small footprint (up to a few MB) and easy deployment (end-user should only install your application to get it working), then your options are SQLite and Firebird embedded.
Of those two, I'd pick Firebird any time, because of it's full support for SQL (you can't, for example, drop a column in SQLite), ACID compliance, and ability to go client/server without any changes (just change the connection string from embedded to server) to the code if you ever decide to let multiple users work on the same database.
Not to mention that you can use full server to develop (which means your application and database administration tool can be connected to database at the same time).
I'm successfully using Turbo Delphi (free for commercial and no commercial use) + ZeosLib (zeos.firmos.at).
The only things you need to distribute with your .exe are the database client dlls (no need to install the client, just put the dlls in the same directory).
Would Kexi work?
I can recommend from personal experience "My Visual database"
free, no code, no sql, just drag and drop.
http://myvisualdatabase.com/
Best Option would be to create a Win32 native application using Delphi and use SQLLite as the database.
Reason being Delphi can produce native win32 applications without any other product being installed on the machine.