Showing posts with label database. Show all posts
Showing posts with label database. Show all posts

Monday, 30 June 2025

The Blazegraph Database - 50 Billion Edges Supported

The Blazegraph database is an ultra-high-peformance graph database supporting Blueprints and RDF/SPARQL supporting 50 billion edges on a single machine. 

It powers the Wikidata Query Service.

There is a Quick Start guide that shows you how to start the Blazegraph JAR file from its installed location. It will then greet you with a Welcome Message from SYSTAP.

java -server -Xmx4g -jar blazegraph.jar

Wednesday, 8 May 2019

CRDTs and other Contemporary Distributed Data Types

A CRDT is a "conflict-free" replicated data type. 

The concepts was formalised in 2011 by Marc Shapiro and others. It's basically a data type which you can replicate across computers without any co-ordination (between replicas). Collaborative text editing was one of the motivating application areas. 

The NoSQL ("Not Only SQL") distributed database Redis has a CRDT data type.

Tuesday, 4 September 2018

Databases for Windows Developers - A Nod to SIGMOD

SIGMOD is the ACM Special Interest Group on Management of Data. PODS is an associated conference (Symposium on Principles of Database Systems) which has a best paper award each year.

Wednesday, 9 March 2016

Partitioning a Database

Partitioning means breaking up a database into sections - to make it more performant, easier to manage or for load balancing.

Partitioning Criteria (Key-Partition Pairs)

RDBMS's support a range of partitioning criteria. 

They take a partitioning key and assign a partition based on certain criteria. 

Example criteria are:
  • Hash partitioning - membership of a partition is determined by the value of a hash function. This function might return numbers between 0 to 4, for example, if there are 5 partitions.
  • Range partitioning - selects partition if partitioning key lies within a given range. For example, if you have a list of countries, you may split on a country with the letter M, say Malawi, Malta or the Maldives.
  • List partitioning - the partition is assigned a list of values. If the row satisfies the criteria (e.g. Country column is contained in List A) then it goes into, say, partition A.
  • Composite partitioning - hybrid of the above approaches.
Means of Partitioning

"Horizontal partitioning" or "horizontal sharding" involves putting different rows into different tables. A view with a union may be used to create a unified view.

"Vertical partitioning" involves taking normalisation to the next level. It involves creating tables with fewer columns and using additional tables to store the extra columns - a bit like normalisation, except vertical partitioning can be effected even when the tables are normalised. Infrequently used columns might be stored on a different device. This type of partitioning is also known as "row splitting" - the row is split by the columns.

Thursday, 27 June 2013

Relational Databases

Thanks to Edgar Codd

Relational databases are built on the concept of relations, which are basically tables. Another way of explaining what a relation is, is a row/column format for storing information. The relational database was first defined in 1970 by Edgar Codd of the IBM San Jose Research Lab (first West Coast research lab for IBM).

Tuples, Attributes and Relations

In the jargon of relational databases, a tuple is a row, an attribute name is a column name, a relation is a table (a set of tuples with the same attributes).


Thursday, 16 May 2013

Role-Based Access Control (RBAC)

A computer systems concept, RBAC (or role-based access control) is a system of restricting access to computer resources (also known as role-based security).

SQL Server Security - Unleashed

What you Will Learn

What server principals are
What types of server principals there are
What schema to query to access the "principals" list!

The Low Down on SQL Server Security

An average Windows Joe needs to know something about databases, and SQL Server databases in particular. But you can't claim to be a database know-it-all without knowing "un peu" of SQL database security, in particular the concepts of Principals and Securables.

A great book to accelerate your learning about SQL Server Security is "SQL Server (2008 R2) Unleashed" from SAMS Publishing (famous for their "Unleashed" series and "How To" books). The concepts are well-presented and can save you time before diving into specific details strewn across the MSDN jungle.

Speaking of concepts, let's introduce the most basic ones; requestors of resources, resources and permissions. Turns out, these concepts have a rather different terminology in the SQL Server worldspace.

1. A Requestor of a SQL Server Resource is henceforth known as a Principal.  These principals may be Windows users, SQL Server users and so forth.

2. A SQL Server resource is henceforth known as a Securable.

3. Permissions link Principals with Securables.

But you can't know-it-all about SQL Server databases without having some tools to practice with. For this, the SQL Server 2008 R2 Management Studio is an excellent choice.

Some simple queries to get you "synced" with the SQL Serve Security spirit:

1. select * from sys.server_principals

This so-called "catalog view" in SQL Server (nothing more than a "window on metadata") identifies all "server-level" principals and what type they are; an example would be the "sa" account which has type "SQL_LOGIN" (and incidentally cannot be removed). Other types include WINDOWS_LOGIN (self explanatory!), WINDOWS_GROUP and SERVER_ROLE. All are types of PRINCIPALS in a SQL Server database.

However, there is another, less documented type of "server-level" principal, the CERTIFICATE_MAPPED_LOGIN. Some systems use digital certificates as an additional means of authenticating users.

Friday, 8 February 2013

Storing C# Strings in an Oracle Database

This is not an Oracle blog, and Windows Joe has no intention of turning it into such. However, since Oracle coding is occasionally required by the Windows programmer, occasional clarifications on the aforementioned technology are sometimes warranted.

In addition, such posts may be of interest to database enthusiasts wanting to refresh the basics.

One such, is the popular newbie question (and also asked by experienced bods who haven't touched Oracle in a long time) is what datatype to use for string data?

VARCHAR - not to be used. Why - because Oracle says so. It may work, but is not recommended.
VARCHAR2 - the recommended way to store strings (or more precisely, VARIABLE LENGTH character strings).
CHAR - for fixed length character strings.Using this type to store variable length strings is a waste of space.

So in 95% of cases, you need a VARCHAR2 to represent strings in an Oracle database.

Friday, 29 July 2011

Choosing a Database Model: Dataset vs Entity Data Model

When configuring a data source in MSVS, use the Entity Data model because that's compatible with LINQ.